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
  • nordicfreak said:
    disabling the radio too soon after tx?

    In normal radio communication in the 2.4GHz it's pretty common with packet loss due to interference from nearby wifi or other bt devices. So if you have 1ms delay, you are likley only have enough time to send 1ack, and if that one is lost then the peer will retransmit again. I suspect that when you are exiting rx mode/disabling esb that the ESB library no longer remember what the latest packet received was, so once you enter rx mode again, it will treat the received packet as a new packet, hence fowarding it to the application.

    Kenneth

Children
Related