This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

nRF52833 and nRF52840 problem with nRF_ESB repeater

Hi DevZone !

I am doing an application with nRF_ESB where I want to send and receive packets through diffenents nodes. Right now, I have 5 nodes, which 2 are repeaters in the middle. I have seen a problem where my repeaters are stopping the communication in general, no packets received from my main nRF which is used to receive the informations from the 5 others. I know that the problem is coming from the repeaters because I have to reset one of them to stop this problem. I couldn't debug this problem because it appears to be random.  I am using

  • nRF5_SDK_16.0.0 (although nrf_esb is from nRF5_SDK_15.0.0)
  • nRF5_SDK_for_Thread_and_Zigbee_2.0.0_29775ac_min

Do you have a clue of what is happening ?

Thanks,

Joël V.

Parents
  • Hello,

    I am not sure how your repeaters work, but I recommend that when you receive a packet you stay for instance 5ms in receive mode before you switch to transmit mode to relay the message. The reasoning for not switching immediately is to ensure that if you are using ACK in your communication, then the ACK is received by the first transmitter (and also ensure that the first transmitter is not retransmitting in case the first ACK is not received). You may also try to add a counter in your packages to ensure new packets are not considered retransmissions.

    Kenneth

  • Hi Kenneth,

    I am not sure how your repeaters work

    My repeaters are simply writing the exact same payload received by the other node decrementing the TTL. Each Repeater is repeating  the packets with TTL appropriate to its application. But, they also have to send their own packets.

    The reasoning for not switching immediately is to ensure that if you are using ACK in your communication, then the ACK is received by the first transmitter

    My application is only transmitting (no waiting ack). Could it be because they are receiving from the nodesd they are repeating AND they need to send their own packets. Plus my main NRF is pinging the nodes so they know the communications is still available.

    You may also try to add a counter in your packages to ensure new packets are not considered retransmissions.

    You mean like a TTL?

    Thanks,

    Joel

  • I assume you have checked that you are not using an ACK by using:
    nrf_esb_config.selective_auto_ack       = true; //allow noack when init.
    tx_payload.noack = true; //disable ack when transmitting.

    Joel V said:
    You mean like a TTL?

    Not really, the counter is to ensure that the packet is unique compared to the previous.

    Kenneth

Reply
  • I assume you have checked that you are not using an ACK by using:
    nrf_esb_config.selective_auto_ack       = true; //allow noack when init.
    tx_payload.noack = true; //disable ack when transmitting.

    Joel V said:
    You mean like a TTL?

    Not really, the counter is to ensure that the packet is unique compared to the previous.

    Kenneth

Children
No Data
Related