How to verify the 4Mbps transmission mode of the nRF54L15 series?

I noticed that the product information of the nRF54L15 series kit supports 4Mbps, but I'm unsure how to verify it. Are there any relevant examples available? I have currently tried the radio_test example, but this example doesn't show the actual data rate.

Parents Reply Children
  • To obtain a timestamp, you can use the k_uptime_get() function to calculate the number of bytes received within a specific time interval.

  • Thanks. I was more referring to the used settings when initializing/running ESD other than using ESB_BITRATE_4MBPS and setting the payload to its maximum. Did you come across some non-obvious settings which had major impact on improving throughput?

  • Okay, I'm at 2.35Mbps with basically the below settings and a payload of 252. I tried adding CONFIG_ESB_NEVER_DISABLE_TX=y in the prf.conf and then reduce the retransmit_delay but this is throwing an error when going below 435 since there is a minimum fix-coded into esb.c (#define RETRANSMIT_DELAY_MIN 435). I reduced this in esb.c to just 1 and can then reduce the retransmit_delay in my code and this improves to around 2.8Mbps. However, I don't really like changing code in the SDK. Anyone having further clues and suggestions for improving throughput?

    struct esb_config config = ESB_LEGACY_CONFIG;

    config.protocol = ESB_PROTOCOL_ESB_DPL;
    config.retransmit_delay = 435;
    config.retransmit_count = 0;
    config.bitrate = ESB_BITRATE_4MBPS;
    config.event_handler = event_handler;
    config.mode = ESB_MODE_PTX;
    config.selective_auto_ack = true;
    config.use_fast_ramp_up = true;
    tx_payload.noack = true;
  • I found that the macro ESB_CREATE_PAYLOAD(...) used by the ESB samples only support up to 63 bytes data length, hence not suitable for leveraging the full 252 bytes possible. I composed the ESB payload manually and now get decent 3.3Mbps of throughput (without acknowledge).

    static struct esb_payload tx_payload = {
    .pipe = 0,
    .length = 252,
    .data = {
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0 }
    };

     

  • Congrats! If I recall correctly, I also modified that specific part at the time.

Related