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

ESB acknowledgment time-out value - clarification

I would like to understand the timeout values for wait for acknowledge on ESB protocol

Example, from the source code:

#define RX_WAIT_FOR_ACK_TIMEOUT_US_1MBPS        (73)        /**< 1 Mb RX wait for acknowledgment time-out value. Smallest reliable value - 68. */

It considers the timer timeout for receiving an Ack to be 73us

If I consider

Preamble (8bits) + Address (5*8bits) + LengthField (6bits) (Note: S1 should be skip at this point) + CRC 16bit

That gives 70 bits that should be 70us at 1MBPS

I understand from the comment that it could work even with 68us but that would be lesser than the value I was expecting

Could you explain the ACK timeouts defined for ESP protocol?

Isn't the timeout value too small and risk ?

Parents Reply
  • Hi Mario

    If you mean the act of stopping the timer on the ADDRESS event, this is handled by a PPI channel, as configured on line 573 in nrf_esb.c:

        NRF_PPI->CH[NRF_ESB_PPI_TIMER_STOP].EEP  = (uint32_t)&NRF_RADIO->EVENTS_ADDRESS;
        NRF_PPI->CH[NRF_ESB_PPI_TIMER_STOP].TEP  = (uint32_t)&NRF_ESB_SYS_TIMER->TASKS_SHUTDOWN;

    This ensures that the ADDRESS event will immediately stop the timer, without having to wait for the software to respond to the event. 

    Best regards
    Torbjørn

Children
Related