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

RF51822 packet loss can't recover

Hi Nordic

I am using ESB_DPL protocol between two 51822 to do RF communication.

First i put two device very close, works very good, no packet loss, then I moved the TX device to 2m away, found there are some packet loss, then I moved back the TX device (very close to RX device again), but packet loss still happens, i need to reboot the TX device again to recover.

I did some small change with example esb_ptx in proprietary_rf, see below code. The protocol is ESB_DPL and disabled ack(.selective_auto_ack = true and .noack= true), the packet size is 64Byte. Why this happens? Could you give some suggestions? Thanks

Configuration:

nrf_esb_config_t nrf_esb_config         = NRF_ESB_DEFAULT_CONFIG;
nrf_esb_config.protocol                 = NRF_ESB_PROTOCOL_ESB_DPL;
nrf_esb_config.retransmit_count         = 0;
nrf_esb_config.retransmit_delay         = 250;
nrf_esb_config.bitrate                  = NRF_ESB_BITRATE_250KBPS;
nrf_esb_config.event_handler            = nrf_esb_event_handler;
nrf_esb_config.selective_auto_ack       = true;
nrf_esb_config.tx_output_power          = NRF_ESB_TX_POWER_4DBM;
nrf_esb_config.event_irq_priority       = 1;
nrf_esb_config.radio_irq_priority       = 2;
nrf_esb_config.mode                     = NRF_ESB_MODE_PTX;

Send packet:

        rf_tx_payload.length = spi_rx_buf[1];           /**< Length of the packet. 
        rf_tx_payload.pipe=0;                             /**< Pipe used for this payload. */
        rf_tx_payload.rssi=0;                           /**< RSSI for received packet. */
        rf_tx_payload.noack= true;                   //this packet will not be acknowledged
        rf_tx_payload.pid=0;                          /**< PID assigned during communication. */
        for(index=0;index<spi_rx_buf[1];index++)
        {
            rf_tx_payload.data[index]=spi_rx_buf[2+index];
        }            
        nrf_esb_write_payload(&rf_tx_payload);
        nrf_esb_write_payload(&rf_tx_payload);
Related