Issue with ESB Communication – TX Not Reaching ESB_EVENT_TX_SUCCESS

Hello,

I am working on an ESB (Enhanced ShockBurst) communication setup using the following hardware:

  • Receiver (RX): nRF5340

  • Transmitter (TX): nRF52840 MDK Dongle

System Overview:

  • On the TX (nRF52840), the program reads data from an SPI device and then transmits it via ESB to the RX.

  • On the RX (nRF5340), the ESB payload is received, and when an IPC signal is received from the application core, the network core sends the SPI data to the application core.

The Problem:

The TX is sending packets, but it never reaches ESB_EVENT_TX_SUCCESS, meaning it is not receiving an acknowledgment (ACK) from the RX.

What I Have Tried:

- Verified that both TX and RX use the same base addresses, prefixes, and bitrate (2Mbps).
- Set selective_auto_ack = false to ensure all packets request ACKs.
- Ensured the RX is running in ESB_MODE_PRX and initialized correctly.
- Made sure the HFCLK is started before initializing ESB.
- Debugged esb_init() and esb_set_* functions—no errors returned.
- Confirmed that SPI communication on TX and IPC handling on RX are working separately.

Despite these checks, the TX still fails to reach ESB_EVENT_TX_SUCCESS.

Questions:

  • Could there be an issue with IPC and ESB interrupts conflicting on the RX side?

  • Are there any known issues when using SPI and ESB together on the TX?

  • Are there additional debugging steps I should try to determine why the ACKs are not received?

I have attached my TX and RX code for reference. Any insights or suggestions would be greatly appreciated!

Thanks in advance for your help.

Best regards,
Philipp

ESB_EVENT_TX_SUCCESS_DEV.zip

Parents Reply Children
  • Hi Hung,

    I already tried the different samples, the PTX and PRX examples from the SDK worked as expected. However, when I integrate SPI and ESB together, I encounter the issue. The PRX (nRF5340 board) does receive the messages in the ESB_EVENT_TX_SUCCESS, howerver on my PTX (nRF52840 board), it never enters the this event_id. Because of that, the delay between transmissions qre significantly longer than what my application requires.

    Do you have any suggestions on what might be causing this?

  • Hi Philipp, 
    So what you say is on the PRX you receive ESB_EVENT_TX_SUCCESS meaning the ACK has been sent back and the data on the original packet from PTX is received correctly ? 
    Then you may want to check if you are doing anything with the SPI that cause the issue. Any chance that you are staying in an interrupt handler longer than you should ? Or if any higher priority level processing blocking the ESB/Radio to sent the event  ? 
    I would suggest to step by step removing the SPI functionality until you see the ESB ESB_EVENT_TX_SUCCESS come back would be able to reveal what's wrong. 

Related