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);