nRF52 ESB ACK payload not sent/received with fixed payload length

arapeaux gravatar image

asked 2017-03-17 15:52:27 +0100

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)

edit retag flag offensive close delete report spam

1 answer

Sort by ยป oldest newest most voted
hungbui gravatar image

answered 2017-03-20 16:11:56 +0100

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 ?

edit flag offensive delete publish link more


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.

Adrien Rapeaux ( 2017-03-20 16:28:59 +0100 )editconvert to answer

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.

Hung Bui ( 2017-03-20 16:54:08 +0100 )editconvert to answer

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. Kind Regards,

Adrien Rapeaux

Adrien Rapeaux ( 2017-03-20 16:56:28 +0100 )editconvert to answer

Hi Adrien,

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.

Hung Bui ( 2017-03-21 09:31:31 +0100 )editconvert to answer

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer. Do not ask a new question or reply to an answer here.

[hide preview]

Question Tools

1 follower


Asked: 2017-03-17 15:52:27 +0100

Seen: 136 times

Last updated: mars 20