Working on a project to set up a bidirectional UART to SPI link over ESB with nRF52832 (PCA10040), using SDK 13.0.
Working from provided examples for PTX and PRX, I manage to send from PTX to PRX with no issues, and PTX confirms reception of ACK packet.
However when using NRF_ESB_PROTOCOL_ESB as protocol setting, I am not able to get a payload with the ACK packet.
Same code with NRF_ESB_PROTOCOL_ESB_DPL as protocol setting, and I am able to get the ACK packet payload. Is this intended behaviour? Are there any special settings I should be using with fixed length packet ESB to get the ACK packet payload?
I enclose both main_TX.c and main_RX.c to show which settings I am using (all default except for selective_auto_ack = true).RX_TX.zip
I can provide the full standalone project folder with all components if needed (all SDK 13.0 components)
You are correct. If you use NRF_ESB_PROTOCOL_ESB you won't have ack payload.
This is related to how it worked before on the legacy chip (nRF24L01 and nRF24LE1).
Do you have any reason that you can't use NRF_ESB_PROTOCOL_ESB_DPL ?
Thank you for your response.
Unsure whether I can use NRF_ESB_PROTOCOL_ESB_DPL due to throughput constraints: what is the effective data transfer rate for the dynamic payload length protocol, including packet header and timing overheads? I cannot seem to find this in the documentation.
The packet header size will be the same as when you have NRF_ESB_PROTOCOL_ESB so the throughput will be the same. Unless you go down to ShockBurst instead of Enhanced Shockburst.
After a bit more digging it turns out that the DPL protocol can have payloads of up to 252 bytes in length, whereas the documentation suggests it can only go up to 32 bytes (in legacy mode vs 252 with static payloads, referring to the non-DPL protocol). Things are cleared up but imho that particular part of the User Guide for enhanced shockburst should be rewritten to avoid confusion.
I agree, we mentioned "1 to 32 bytes dynamic payload length in legacy mode" and "1 to 252 bytes static payload length between nRF5 Series devices" made it confusing about max payload with dynamic payload length but in normal mode. I will open a internal report to get this fixed. Thanks.