ESB lose packet, retransmit_count not work

Hi all:

I use SDK17.1.0, nRF52832 to develop my program.

I have two device, one is used to be PTX, another is PRX, when I send data over esb, I found a part of packet was lost, and I set retransmit_count to 1 the packet lost looks like same.

I send 90000 packet(32bytes), and received is about 89500. And retransmit_count = 0 / 1 / 3 is similar. 

1. What's wrong with it?

2. I have to send data every 2ms, What is the maximum value I can set?

Tx init code is here

uint32_t esb_tx_init(uint8_t ch, uint8_t pipe, uint8_t retrans_count)
{
    uint32_t err_code;

    nrf_esb_config_t nrf_esb_tx_config         = NRF_ESB_DEFAULT_CONFIG;
    nrf_esb_tx_config.protocol                 = NRF_ESB_PROTOCOL_ESB_DPL;
    nrf_esb_tx_config.bitrate                  = NRF_ESB_BITRATE_2MBPS;
    nrf_esb_tx_config.event_handler            = nrf_esb_event_handler;
    nrf_esb_tx_config.mode                     = NRF_ESB_MODE_PTX;
    nrf_esb_tx_config.selective_auto_ack       = false;
    nrf_esb_tx_config.retransmit_delay         = 250,
    nrf_esb_tx_config.retransmit_count         = retrans_count;
    nrf_esb_tx_config.tx_output_power          = NRF_ESB_TX_POWER_4DBM;

    tx_payload.noack = false;  //!< Flag indicating that this packet will not be acknowledgement. Flag is ignored when selective auto ack is enabled.

    err_code = nrf_esb_init(&nrf_esb_tx_config);

    VERIFY_SUCCESS(err_code);

    err_code = nrf_esb_set_base_address_0(base_addr_0);
    VERIFY_SUCCESS(err_code);

    err_code = nrf_esb_set_base_address_1(base_addr_1);
    VERIFY_SUCCESS(err_code);

    err_code = nrf_esb_set_prefixes(addr_prefix, NRF_ESB_PIPE_COUNT);
    VERIFY_SUCCESS(err_code);

    nrf_esb_set_rf_channel(ch);

    set_tx_pipe(pipe);

    return err_code;
}

By the way, what does the tx_payload.noack mean?

Best regards,

Lurn

Related