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.

CC2540 Advertising stop and observable signal from rf_core

Other Parts Discussed in Thread: CC2540, CC2541, CC2541S

I’m using CC2540 with BLE stack 1.4.0 in my project. The CC2540 Is always ON and send beacon to establish connection when paired device is in range. The issue is that once a month, the CC2540 RF Core stop sending beacon. Is it a known issue? Can I use observable signal from rf_core (RFC_OBS_CTRLx registers) as RF Core heartbeat? What is the behavior of RFC_OBS_SIG(x) signals when configured as “TX active” or “RX active”? In CC2540 userguide, it seems that the only way to read RFC_OBS_SIG(x) signals is to mux them to GPIO (P1.0 to P1.5), and then read back P1 port. Can I read RFC_OBS_SIG(x) signals directly?

  • Hi Mathieu,

    I think the CC253x/4x User's guide has the documentation you're looking for.

    http://www.ti.com/lit/ug/swru191f/swru191f.pdf

    Section "Packet Sniffing and Radio Test Output Signals" probably can get you started with those output signals. 

  • Thanks Tom,

    That help to find "TX active" and "RX active" description for RFC_OBS_SIG. I still didn't find a way to read those signals directly without using GPIO P1. Is it possible?

    Also, my main issue is that advertising beacon stop without apparent reason. Do you know if it is a known issue with CC2540?

    Best regards,

    Mathieu

  • Mathieu Fortin said:
    That help to find "TX active" and "RX active" description for RFC_OBS_SIG. I still didn't find a way to read those signals directly without using GPIO P1. Is it possible?

    Yes, you can read the register RFSTAT, see Section 24.1 (page 276) of the User Guide (www.ti.com/.../SWRU191).

  • Thanks hec!
    I'm now using RFSTAT[1:0] to monitor RF core activity. Right now I'm trying to understand why advertising stops, but worst case, I can use RFSTAT to trig a system reset if no activity for few seconds.
  • I saw in other posts that people had the same issue as me with stopping advertising but with CC2541 instead. The solution was to upgrade BLE stack to 1.4.1 or change "#define HAL_SLEEP_ADJ_TICKS 35" from 25 to 35.

    For CC2540, this value is already set to 35. See extract from hal_sleep.c below:
    #if defined( CC2541) || defined( CC2541S )
    #define HAL_SLEEP_ADJ_TICKS 25 // default sleep adjustment, in 32kHz ticks
    #else // CC2540
    #define HAL_SLEEP_ADJ_TICKS 35 // default sleep adjustment, in 32kHz ticks
    #endif // CC2541 || CC2541S

    Should I increase the value to more than 35? Which value should I use? Does anyone try different values?