TX pin not set on transmission using FEM

Hi,

We use the SKY66112 FEM in front of nRF5340. The FEM is configured in the DTS file. On our ordinary firmware, the TX pin is set and reset automatically. I can see the TX pulse on the scope on transmission.

We are also using the Radio Test project for certification purposes.We have added the Radio Test as an app in the main project, so that we use the same board files as in the main firmware. Radio Test works well without FEM enabled (by manually setting it in bypass mode).

When FEM is enabled, however, it does not work. The TX pin is not set before transmission.

When looking on the source, the FEM is implemented in the Radio Test project. Is the TX pin not being controlled automatically a bug in the Radio Test?

Marius

Parents
  • Hi Priyanka,

    - SDK 2.0.0

    - By TX I refer to the GPIO pin on the microcontroller defined in the FEM configuration in the device tree files for the board (CTX).

    - As my understanding, the FEM code will handle the two GPIO pins itself?

    - The FEM if added to the device tree as explained in the documentation on how to enable Skyworks FEM

    The thing is, on our ordinary firmware it works like it is supposed to, but not when compiling and flashing the radio_test example project, using the same "board" as on the ordinary firmware. That's why I wonder if it is something regarding the radio_test project.

    One hint I found: if I try to manipulate the TX pin with:

    gpio_pin_set(ctx_pin_dev, CTX_PIN, 1);

    in the function radio_cmd_init() in radio_test.c , it does not change state. It seems like the pin is not mapped. I use the "Empty firmware for application core." project for the App core, which transfers control of all GPIO pins to the Net core.

Reply
  • Hi Priyanka,

    - SDK 2.0.0

    - By TX I refer to the GPIO pin on the microcontroller defined in the FEM configuration in the device tree files for the board (CTX).

    - As my understanding, the FEM code will handle the two GPIO pins itself?

    - The FEM if added to the device tree as explained in the documentation on how to enable Skyworks FEM

    The thing is, on our ordinary firmware it works like it is supposed to, but not when compiling and flashing the radio_test example project, using the same "board" as on the ordinary firmware. That's why I wonder if it is something regarding the radio_test project.

    One hint I found: if I try to manipulate the TX pin with:

    gpio_pin_set(ctx_pin_dev, CTX_PIN, 1);

    in the function radio_cmd_init() in radio_test.c , it does not change state. It seems like the pin is not mapped. I use the "Empty firmware for application core." project for the App core, which transfers control of all GPIO pins to the Net core.

Children
  • Hi Marius,

    One of out colleagues have suggested editing the dts file in the radio_test/baords/nrf5340dk_nrf5340_cpunet.overlay

    It has been tested and works well.

    /{
        nrf_ radio_fem: fem {
            compatible = "generic-fem-two-ctr l-pins":
    //      ctx-gpios = <&gpioO 26 O>; 
            crx-gpios = <&gpioO 27 O>; 
            crx-settle-time-us =  < 5>;
            };
    };

    Best Regards,

    Priyanka

  • Hi Priyanka,

    I did not get the provided code to work. I think it may contain typos (0 vs O, etc, error in pin mode, space in node name).

    I think you will be able to reproduce the problem by following this:

    - Create a new project based on the Bluetooth / Radio Test for the nRF5340 MCU
    - Add this to the nrf5340dk_nrf5340_cpunet.overlay file:

    / {
    	nrf_radio_fem: fem {
    		compatible = "skyworks,sky66112-11",  "generic-fem-two-ctrl-pins";
    		ctx-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
    		crx-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
    		crx-settle-time-us =  < 5 >;
    		ctx-settle-time-us =  < 5 >;
    	};
     };
    


    - When building you will get errors because the config refers to: "../../bluetooth/direct_test_mode" in Kconfig and CMakeList.txt. Change the references to: "../nrf/samples/bluetooth/direct_test_mode"
    - Build again. Now it will build. 
    - Flash to nRF5340DK
    - Log on to the Radio Test Terminal
    - Connect a scope to GPIO0.13 and GPIO0.14 to be able to se the output state.
    - Run "start_rx". Now GPIO0.14 should be HIGH. It is not.
    - Run "cancel" and "start_tx_modulated_carrier". GPIO0.13 should now be high. It is not.

    Note that this error is on nRF5340, it is working like expected on nRF52833.

  • Note: GPIO_ACTIVE_LOW is a typo, should be GPIO_ACTIVE_HIGH.

Related