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

Enhanced ShockBurst (ESB) strange behaviour

Hi,

I am developing an application with to 7 transmitters (peripheral) and one receiver (central = nrf52DK), all NRF52832.

I have 1 question and one problem to solved: 

Question:  all receiver are sending collected data's at the same time at 20 - 40Hz frequency (in testing).  ESB transmission is set to

tx_payload.noack = true; 

to prevent central overload and crash.

One of the transmitter is connected to the nrf52DK in order to follow nrf_log in debug mode.  When transmitting the data,
"TX FAILED EVENT"are log from time to time.  Since noack is set to true, I don't understand why.  This does not seems to cause an issue.

Problem : I am using the nrf52DK as a central. Through the computer, i am sending to the central a command is relay to each active peripheral. For exemple, key = 4 start data collection at 40 Hz, z will reset some parameter. This is working fine most of the time, about 9 over 10 time. Sometime if press key z , the receiver will get the command z but also the previous one , 4. It seem that at the central, the TX buffer was not erase correctly, it could be something else.
using the following code in the central
 (void) nrf_esb_flush_tx();
 (void) nrf_esb_start_tx();

before sending new command does not help.

Any suggestion would be appreciate.

  • Hi,

     

    Its good to hear that you found a workaround. But: It sounds like there's an underlying memory corruption issue (pointer going out-of-bounds?) somewhere. Did you change anything else? You might have moved the issue to another place by re-assembling the variable locations in RAM. Is the tx_payload variable setup with a correct length, so that the byte array inside doesn't go out-of-bounds (see define NRF_ESB_MAX_PAYLOAD_LENGTH) ?

     

    Kind regards,

    Håkon

Related