zigbee + fem (nRF21540) on nrf54L05


Hi Nordic team,

We have used shell example of Zigbee sample to connect to an end device. We want to extend the FEM feature of nrf54L05 for this example. We have already used nrf54L05 for beacon scanning and had integrated FEM(nRF21540) with it, this combination was working really well. 

We need help in integrating FEM module to Zigbee exmaple. 

Parents Reply Children
  • Hi  ,

    Thank you for your response !

    We had used the following portion in prj.conf and overlay description for the observer code (BLE) to work with FEM. It had worked fine for us. When we are using the same config of prj.conf and overlay descriptor for zigbee shell example its throwing error. 

    ##########################

    prj.conf

    ##########################

    # #### Enable FEM supporty#####

     

    # Enable Nordic Multiprotocol Service Layer (needed for FEM)

    CONFIG_MPSL=y

     

    # Enable Front-End Module (FEM) support

    CONFIG_MPSL_FEM=y

    CONFIG_MPSL_FEM_NRF21540_GPIO=y

     

    # Enable runtime PA gain control (toggle between 10 dB and 20 dB)

    #CONFIG_MPSL_FEM_NRF21540_RUNTIME_PA_GAIN_CONTROL=y

     

    # TX gain settings

    CONFIG_MPSL_FEM_NRF21540_TX_GAIN_DB=20

    CONFIG_MPSL_FEM_NRF21540_TX_GAIN_DB_POUTA=20

    CONFIG_MPSL_FEM_NRF21540_TX_GAIN_DB_POUTB=10

     

    # RX gain setting

    CONFIG_MPSL_FEM_NRF21540_RX_GAIN_DB=13

     

    # Enable FEM debug logging

    CONFIG_MPSL_FEM_LOG_LEVEL_DBG=y



    ##########################

    overlay

    ##########################

      / {

        nrf_radio_fem: name_of_fem_node {

            compatible  = "nordic,nrf21540-fem";

            tx-en-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;

            rx-en-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;

            pdn-gpios   = <&gpio1 12 GPIO_ACTIVE_HIGH>;

            ant-sel-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>; // use  LOW -ant 1 ,HIGH -ant 2

        };

    };

     

    &dppic10 {

        status = "okay";

    };

     

    &ppib11 {

        status = "okay";

    };

     

    &ppib21 {

        status = "okay";

    };

     

    &dppic20 {

        status = "okay";

    };

     

    &ppib22 {

        status = "okay";

    };

     

    &ppib30 {

        status = "okay";

    };

     

    &dppic30 {

        status = "okay";

    };

     

     

    -----------------------------------------------------------------------------------------------------------------------------------------------

    We also used your suggestion of prj.conf of adding 
    CONFIG_MPSL=y
    CONFIG_MPSL_FEM=y

    and same overlay file as mentioned above. It throws the same error in the shell example of zigbee.

    -----------------------------------------------------------------------------------------------------------------------------------------------


    The error logs are as follows:

    [00:02:00.662,048] <err> os: r0/a1:  0x00000003  r1/a2:  0x00000000  r2/a3:  0x00000001
    [00:02:00.662,057] <err> os: r3/a4:  0x00000003 r12/ip:  0x00000000 r14/lr:  0x0000674d
    [00:02:00.662,064] <err> os:  xpsr:  0x09100000
    [00:02:00.662,074] <err> os: s[ 0]:  0x00000000  s[ 1]:  0x0001a39d  s[ 2]:  0x500da000  s[ 3]:  0x00001e81
    [00:02:00.662,084] <err> os: s[ 4]:  0x00000078  s[ 5]:  0x00303231  s[ 6]:  0x00000003  s[ 7]:  0x0bad0000
    [00:02:00.662,094] <err> os: s[ 8]:  0x0000000d  s[ 9]:  0x00002b29  s[10]:  0x0bad0000  s[11]:  0x0001a5ff
    [00:02:00.662,105] <err> os: s[12]:  0x050607ff  s[13]:  0x500da000  s[14]:  0xffffff00  s[15]:  0x500da000
    [00:02:00.662,111] <err> os: fpscr:  0xffffff00
    [00:02:00.662,118] <err> os: Faulting instruction address (r15/pc): 0x0001a3e0
    [00:02:00.662,137] <err> os: >>> ZEPHYR FATAL ERROR 3: Kernel oops on CPU 0
    [00:02:00.662,155] <err> os: Current thread: 0x20004578 (main)
    [00:02:00.800,039] <err> mpsl_init: MPSL ASSERT: 120, 29
    [00:02:00.800,049] <err> os: ***** HARD FAULT *****
    [00:02:00.800,056] <err> os:   Fault escalation (see below)
    [00:02:00.800,062] <err> os: ARCH_EXCEPT with reason 3

  • Hi,

    Asbjørn is away, so I can try to take a look at this question.

    Are you using nRF Connect SDK v2.9.2, or are you using something older? Would be good if you can try v2.9.2 if you haven't already.
    https://docs.nordicsemi.com/bundle/addon-zigbee-r23-latest/page/index.html 
    https://docs.nordicsemi.com/bundle/addon-zigbee-r23-latest/page/release-notes.html 

    Also do you have a DK for comparison (or at least you can compile and compare .config and zephyr.dts files if you are doing your custom board)?

    Kenneth

  • Hey  ,

    We are using the same nRF Connect SDK version v2.9.2 (R23) and have based our work on the Shell example from this SDK.

    The hardware in use is an nRF54L15 DK. We do not have a dedicated FEM (nRF21540) DK. The zephyr.dts and .config files used for this experiment are attached for reference.

    Note: The same FEM configuration works correctly with the BLE Observer example with v3.0.0 of SDK, but fails when applied to the Zigbee Shell example(v2.9.2) on the same board.

    06025.zephyr.dts4667.config

  • Sorry for the late reply, but seems that there is no fem support for nRF54L-series for zigbee.

    Reason is because latest zigbee add-on is for ncs v2.9.2, while fem support did not occur until ncs v3.1.0. See:
    "Added support for the nRF21540 Front-End Module in GPIO/SPI mode on the nRF54L Series SoCs. (KRKNWK-15977)"
    https://docs.nordicsemi.com/bundle/ncs-latest/page/nrfxlib/mpsl/CHANGELOG.html#nrf_connect_sdk_v310 

    Kenneth

Related