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

"Ack" problem of nRF51822 proprietary protocol

Hi,

In nRF51822 proprietary ESB protocol. there have define a "noack" field in structure "nrf_esb_payload_t".

Normally, the "noack" field is set to "false" in transmit site, then the receive site can receive a packet successfully.

But if I set "noack" to "ture", then the received site can not receive any packet.

If I want to send a ESB packet without ACK, what can I do?

Thank you,

Chianglin 

  • Could you be hitting this known issue:

    ESB has a selective ack enabled mode (known as dynamic ack on legacy chips) when this is enabled, the bit known as NOACK is not intended to be used for no ack, but rather to indicated that an ack is required. This mean that enabling selective ack should flip the meaning of this bit on both RX and TX. This is how it worked in hardware on the L*24-series of chips.

    The fix is to change the end of this line:
    if (m_config_local.selective_auto_ack == false || ((m_rx_payload_buffer[1] & 0x01) == 0))

    To:
    == 1

Related