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 central stops received response from peripheral in multiple connections

Other Parts Discussed in Thread: CC2540

Hello everyone,

I am working in a project where the CC2540 USB dongle runs as a central and connect with three CC2540 Keyfobs at a time, every after the establish connection the central sends 14 messages request among reads and writes in every connection, before get accelerometer notifications from the keyfob.

With the first two peripherals every thing works fine, but when I connect the third keyfob, the central didn't get the response in the 12th message, the Packet Sniffer sees the response was sent from the peripheral, but somehow the central never got it.

The connection interval parameters are:

// Minimum connection interval (units of 1.25ms) (800 * 1.25ms = 1000) if automatic parameter update request is enabled

#define DEFAULT_UPDATE_MIN_CONN_INTERVAL 1600

// Maximum connection interval (units of 1.25ms) (1600 * 1.25ms = 2000) if automatic parameter update request is enabled
#define DEFAULT_UPDATE_MAX_CONN_INTERVAL 3200

// Slave latency to use if automatic parameter update request is enabled
#define DEFAULT_UPDATE_SLAVE_LATENCY 0

// Supervision timeout value (units of 10ms) if automatic parameter update request is enabled
#define DEFAULT_UPDATE_CONN_TIMEOUT 6000

Is there anyone, who can help me with this issue? I'm struggle to find a solution.

Thanks in advance,

Luiz

  • Hi Luiz,

    Can you attach the sniffer trace (use rich formatting option) and annotate the issue (i.e. what packet # issue occurs)? Is the packet acknowledged by the Central on the next connection event? Also, what GATT procedure is not being acknowledged?

    Best wishes
  • Hi

    The packet is not acknowledged by the central, because on the next connection event another write request would be send by the central, the GATT procedure is the ATT_WRITE_RSP.

    It is a write request message sequence, if the central got the last packet (packet number 108 on the figure) the central would send another write request, to the third Keyfob.

    The code runs perfectly with two keyfobs, but when I include the third, the central at this point didn't receive the packet and stop my sequence.

    Best  wishes

    Luiz