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