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

ESB noack = true behaviour

Hello,

We wanted to clarify the behaviour of the ESB retransmits when noack is set to true for the packet. This is because our system is very time-sensitive for certain packets, and it is better to not receive these packets at all if they were to be delayed from retransmit. From the ESB user guide, it states that:

"When the PRX receives a packet that does not require an ACK, it does not send an ACK packet to the PTX, and as a result the PTX will continue retransmitting the packet until the maximum number of allowed retransmission attempts is reached."

However, in our own tests, when we send a packet with noack = true, the NRF_ESB_EVENT_TX_SUCCESS interrupt is received at the same time after writing the payload, regardless of what the retransmit count was set to. Does this mean that the packet is only sent once if noack = true is set, contrary to the guide?

Thank you.

Parents Reply Children
  • Hi Amanda,

    We are using the latest Nordic SDK, 17.0.2.

    Yes, selective_auto_ack is enabled for both PTX and PRX devices. The tx mode is set to NRF_ESB_TXMODE_AUTO.

    We are not testing with the esb_ptx and esb_prx examples, but here is pseudo-code for our tx and rx modules:

    PTX:

    // Initialize this node as PTX
    _nrf_esb_config.mode = NRF_ESB_MODE_PTX;
    
    nrf_esb_init(&_nrf_esb_config);
    
    ...
    
    // Create and send payload
    nrf_esb_payload_t tx_payload = {...}
    tx_payload.noack = true;
    nrf_esb_write_payload(&tx_payload);

    PRX:

    // Initialize this node as PRX
    _nrf_esb_config.mode = NRF_ESB_MODE_PRX;
    
    nrf_esb_init(&_nrf_esb_config);

  • Hi, 

    Did you set the .selective_auto_ack = true? This must be set in order for the devices to use NO ACK feature. Does it work?

    -Amanda H.

Related