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

nrf52833 ESB ACK bit and retransmit payload delay

Hi

I have some question about ESB

1. If the noack bit of dynamic payload is set to 0 and transmitted.

    Ptx doesn't switch from tx to rx to receive ack?

    And prx doesn't switch from rx to tx to send ack?

2.  I want to know the minimum value of retransmit_delay.

     I saw the information "Each byte in 2 Mbit mode takes 4 us to transfer,

     so you need to add (4 x payload_size) [us] to accommodate for the size".

     If I send 20 bytes of payload in 2Mbps mode, is 80us needed?

3.  I know that the switch time of esb is 130us and it is 40us only when using nrf52 product.

     If so, should switch time be considered when setting retrasmit delay?

     Looking at the code in nrf_esb.c  -  "NRF_ESB_SYS_TIMER->CC[1] = m_config_local.retransmit_delay - 130;"

     If I use the nrf52 product, can I change it to "m_config_local.retransmit_delay - 40"?

  • Hi,

     

     

    1. If the noack bit of dynamic payload is set to 0 and transmitted.

        Ptx doesn't switch from tx to rx to receive ack?

        And prx doesn't switch from rx to tx to send ack?

    If "noack" is active, meaning the PTX expects the PRX not to ACK; and both sides has the "noack" functionality enabled;

    Yes, the PTX sends and doesn't switch RX for ACK reception.

    While the PRX receives, and doesn't switch to TX.

    2.  I want to know the minimum value of retransmit_delay.

         I saw the information "Each byte in 2 Mbit mode takes 4 us to transfer,

         so you need to add (4 x payload_size) [us] to accommodate for the size".

         If I send 20 bytes of payload in 2Mbps mode, is 80us needed?

    If the user payload is 20 bytes, you have to take radio overhead into consideration (preamble, address, crc) as well.

    But, yes; In 2MBit it uses 0.5 us per bit, meaning 4 us per byte.

    Remember that the radio needs to start up as well, 40 us min. 130 us for nRF51/nRF24L-series backwards compatibility

     

    3.  I know that the switch time of esb is 130us and it is 40us only when using nrf52 product.

         If so, should switch time be considered when setting retrasmit delay?

         Looking at the code in nrf_esb.c  -  "NRF_ESB_SYS_TIMER->CC[1] = m_config_local.retransmit_delay - 130;"

         If I use the nrf52 product, can I change it to "m_config_local.retransmit_delay - 40"?

    No, I would not recommend that you do that. The whole protocol is setup related to a slow ramp up, wrt. timing. Changing that specific parameter will not make it fast-ramp up optimized.

     

    Kind regards,

    Håkon

Related