This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2538: Flashing CC2538-CC2592EMK with RIOT-OS have a very low TX Power

Part Number: CC2538
Other Parts Discussed in Thread: CC2592, Z-STACK,

I have the CC2538-CC2592EM add-on module and CC2538EMK add-on module that I use with the SmartRF06EB boards I flashed one of the examples in RIOT-OS that reads the signal strength when a packet is received.

The problem I have is that CC2538-CC2592EM seems to send packets with a very low TX power while its sensitivity seems great especially when compared to the CC2538EMK module (RSSIs on sending and receiving seems reasonable, i.e. ~(-18) within a meter). The RSSI I got on the CC2538-CC2592EM module is as low as ~-72.

This also happens when I have two of the CC2538-CC2592EM modules communicating, RSSIs of both are very low and cannot communicate unless they are placed very close to each other. However, when I have two of the CC2538EMK they seem to work fine with reasonable RSSIs.

I flashed both modules using RIOT's configuration board CC2538DK

I would appreciate your help in the matter

  • Hello Ahed,

    Are you programming the CC2538 with Z-STack 3.0.X ZNP firmware?  Please be aware that the inclusion of HAL_PA_LNA_CC2592 did not Propagate to ZNP Project, as noted in issue 21 of the Known Issues and Fixes E2E Post.  This failure to engage the CC2592 front-end could explain why you are observing unsubstantial TX power numbers. Or you could further test the PHYs with Smart RF Studio to determine if this a hardware issue.

    Regards,
    Ryan

  • Thanks for the reply.

    No, I don't use Z-Stack, I use RIOT-OS-based projects, i.e., ndn-consumer and ndn-producer examples found here. According to RIOT-OS, the devices with CC2538 board are supported, besides I have successfully flashed the mentioned projects to CC2538EMK and Openmote-CC2538 and I have not encountered a transmission issue.

    I wonder if the CC2592 power profile conflict with the CC2538 power profile defined in RIOT-OS (see here). If it does, is there any way to work around it?

    Ahed

  • Basically, you should add the following PA/LNA pin setting (using CC2538-CC2592EM) in your init function.

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    /* PC3 -> PAEN */
    RFC_OBS_CTRL0 = RFC_OBS_CTRL_LNAMIX_PD_INV;
    OBSSEL3 = OBSSEL_OBS_CTRL1;
    /* PC2 -> EN (LNA control) */
    RFC_OBS_CTRL1 = RFC_OBS_CTRL_PA_PD_INV;
    OBSSEL2 = OBSSEL_OBS_CTRL0;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    And, you also need to use matched tx power table such as:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    const uint8 CODE macRadioDefsTxPwrCC2592[] =
    {
    22, /* tramsmit power level of the first entry */
    (uint8)(int8)8, /* transmit power level of the last entry */
    /* 22 dBm */ 0xFF, /* characterized as 22 dBm in datasheet */
    /* 21 dBm */ 0xD5, /* characterized as 20.9 dBm in datasheet */
    /* 20 dBm */ 0xC5, /* characterized as 20.1 dBm in datasheet */
    /* 19 dBm */ 0xB0, /* characterized as 19 dBm in datasheet */
    /* 18 dBm */ 0xA1, /* characterized as 17.8 dBm in datasheet */
    /* 17 dBm */ 0xA1,
    /* 16 dBm */ 0x91, /* characterized as 16.4 dBm in datasheet */
    /* 15 dBm */ 0x88, /* characterized as 14.9 dBm in datasheet */
    /* 14 dBm */ 0x88,
    /* 13 dBm */ 0x72, /* characterized as 13 dBm in datasheet */
    /* 12 dBm */ 0x72,
    /* 11 dBm */ 0x62, /* characterized as 11 dBm in datasheet */
    /* 10 dBm */ 0x58, /* characterized as 9.5 dBm in datasheet */
    /* 9 dBm */ 0x58,
    /* 8 dBm */ 0x42, /* characterized as 7.5 dBm in datasheet */
    };
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • First, sorry for not responding soon...

    Thank you very much, , for the solution, it was helpful.

    To make things easier for those operating in RIOT-OS, (please correct me if I am wrong, ) I put the following at "void cc2538_init(void)" in "cc2538.rf.c"

    Fullscreen
    1
    2
    3
    4
    5
    /* PC3 -> PAEN and PC2 -> EN (LNA control)*/
    RFCORE_XREG_RFC_OBS_CTRL0 = 0x6A;
    RFCORE_XREG_RFC_OBS_CTRL1 = 0x68;
    CCTEST_OBSSEL2 = 0x80;
    CCTEST_OBSSEL3 = 0x81;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    TX power table needs to be adjusted too as in Yikai's reply.

    I also adjust some constants as follows:

    Fullscreen
    1
    2
    3
    #define CC2538_RSSI_OFFSET (-82) /**< Signal strength offset value */
    #define CC2538_RF_SENSITIVITY (-102) /**< dBm typical, normal conditions */
    #define CC2538_RF_POWER_DEFAULT (TX_POWER) /**< TX_POWER need to be set acording to aformentioned power table */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    I do have some questions though as I want to know if it is possible to make the CC2538-CC2592EM operate as the CC2538EMK in terms of TX power and RX sensitivity. In other words, is it possible to disable the CC2592EM functionality in it?

    As I am working in a limited space area, controlling the sending and receiving range with the help of TX power is helpful for my experiment especially on Ppenmote-cc2538 and CC2538EMK. i.e., I was able to make them operate within a 4m range (antenna included) by lowering the TX_POWER to -24dbm. While this was helpful on both of them, it seems impractical on CC2538-CC2592EM as the received signal on sending and receiving was too high.

    is it possible to know the maximum range for each TX power for the CC2538-CC2592EM?

  • I don’t think it’s feasible to disable CC2592 on CC2538-CC2592EM. For range estimation, you can use excel in www.ti.com/.../RF-RANGE-ESTIMATOR