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

ESB EVENT_RX_RECEIVED on ACK

Hello,

I am trying to establish a bi-directional communication between two nRF52840-DK through ESB protocol. As a first step I am using the ESB example available in the SDK 15.3.0, setting one unit as TX and the other as RX. I expected to be able to catch the ACK message in the event handler of the TX (and get the ACK payload), but debugging the code with a breakpoint in the case NRF_ESBEVENT_RX_RECEIVED, I see that that part of code is never reached. However, TX messages are correct and the case NRF_ESB_EVENT_TX_SUCCESS in the TX side is regularly reached. 

Reading all the ESB documentation I understood that the configuration of the example enables the automatic ACK, so bi-directional communication should be active. Can you please tell me where I am wrong?

Thank you and best regards,

Enrico   

Parents
  • Hi. 

    Just to clarify - you won't get the NRF_ESB_EVENT_RX_RECEIVED event on the TX-device when the message is sent and ACK'ed. The TX-device will send the message and then listen for an ACK from the RX-device. In the native examples the ACK sent from the RX-device is empty, so when the ACK is received you will get the NRF_ESB_EVENT_TX_SUCCESS event on the TX-device. 

    If you add a payload to the ACK, you should first receive the NRF_ESB_EVENT_TX_SUCCESS, then the NRF_ESB_EVENT_RX_RECEIVED.

    Best regards, 
    Joakim

  • Hi Joakim,

    thank you for the clarification. I added the payload to the ACK message in the receiver's event handler and now I see that the NRF_ESB_EVENT_RX_RECEIVED is raised after the NRF_ESB_EVENT_TX_SUCCESS in the transmitter side. Thus, I can read the ACK payload in the transmitter.

    Thank you all for your support.

    Best regards,

    Enrico

Reply Children
Related