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);
Parents
  • I assume you find packet loss by checking on the RX side ? since it's always success on TX side.

    Note that there could be interference from other devices, such as wifi, you should try to test with different channels.

    Please try to test with the default example in the SDK and let us know if you observe the same thing. In addition, please send your schematic and layout of your boards.

Reply
  • I assume you find packet loss by checking on the RX side ? since it's always success on TX side.

    Note that there could be interference from other devices, such as wifi, you should try to test with different channels.

    Please try to test with the default example in the SDK and let us know if you observe the same thing. In addition, please send your schematic and layout of your boards.

Children
No Data
Related