NRF52 - ESB - Receiving duplicate packets

We are having some issues with ESB, it seems the automatic ACKs are not working properly and we get spammed with a lot of duplicates.

We believe the issue is because we start some function immediately when NRF_ESB_EVENT_RX_RECEIVED is triggered and because of this it doesn't have time to send an ACK.

How can we delay without blocking the CPU before starting our function?

This seems to work but is it the best way?

//event triggered

for(int i=0; i<50; i++){
nrf_delay_us(10);
}

//start function

Parents Reply
  • Hello,

    I opened the example project I previously linked for Gazell, I can see that the project supports bidirectional data (see that the host call nrf_gzll_add_packet_to_tx_fifo() to add data to ACK).

    I can find frmo nrf_gzll_constants.h that the max payload length is 32bytes as I suspected:
    #define NRF_GZLL_CONST_MAX_PAYLOAD_LENGTH    32                     ///< Maximum allowed payload length in bytes.

    So this means that if you want to send 300bytes either way, then you need to fragment the data into 32byte chunks.

    Gazell was never meant for dynamic switching between host and device no.

    Kenneth

Children
Related