This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

fate of packets in esb fifo on ptx transmission failure

I'm currently working on an esb project using two nrf52832 chips wherein PTX regularly sends packets to PRX as a kind of heartbeat monitor. I can't seem to find what happens to packets in the PTX esb FIFO when (re)transmission attempts have failed and a NRF_ESB_EVENT_TX_FAILED event occurs. Intuitively I would think they are popped from the FIFO, allowing subsequent packets to be transmitted, however I am noticing that after a series of failed transmissions (e.g. in the case where RX isn't powered on), any further attempts to transmit something do not lead to any esb events, suggesting PTX isn't transmitting anything. Have I filled the PTX FIFO and made it unable to transmit new packets?

I am using eclipse neon, sdk 11.0, and a custom board with nrf5283 for this project. esb parameters are following the ones provided in the esb led blinker example, with dynamic payload up to 252 bytes in length, 2 mbps transmit speed, 3 retransmission attempts @ 250 ms delay and TX mode is AUTO.

  • Contrary to my expectations, it actually worked this time! But upon further exploration, I could reproduce the behaviour if I filled the FIFO multiple times with failed transmissions. However, the transmissions were stopped not because of a full FIFO, but because the timer responsible for regularly sending packets was disabled. I am not sure why or how this happens, but deactivating and reactivating it allowed the program to send packets again. One remaining question is if the packets are kept in the FIFO upon transmission failure, is there any way to get them transmitted again, or out of the FIFO? We don't have access to FIFO memory.

  • Have you tried stopping and starting the transmission using nrf_esb_stop_tx and nrf_esb_start_tx respectively?

Related