How to achieve NRF52840 ESB Maximum data rate

As part of a university project I am trying to read an analog signal and transmit it at the maximum data rate over ESB. But I cant seem to get above 1700kbps without any of my payload writes failing. I have disabled acking, I am using the highest bitrate, lowest CRC and fast ramp up. Are there specific timing settings that I am missing or does anyone else have any experience trying to achieve this feat. (at the moment my timing settings are linked to ADC acquisition rate and increasing the rate above a certain amount causes payload_write issues). Aplogies if this has been properly answered before but I have tried searching.I am using the NRF Connect SDK. I am looking to get as close to 2000kbps with minimal latency.

Included is my ESB config and conf settings.

config.protocol = ESB_PROTOCOL_ESB_DPL;
config.retransmit_delay = 10;
config.retransmit_count = 1; // Default retransmit count
config.tx_output_power = ESB_TX_POWER_8DBM;
config.bitrate = ESB_BITRATE_2MBPS; // Fixed bitrate
config.event_handler = event_handler;
config.mode = ESB_MODE_PTX;
config.selective_auto_ack = true;
config.payload_length = 252
config.crc = ESB_CRC_8BIT; // NRF_ESB_CRC_OFF
config.use_fast_ramp_up = true;

CONFIG_NCS_SAMPLES_DEFAULTS=y
CONFIG_ESB=y
CONFIG_DK_LIBRARY=y
CONFIG_CLOCK_CONTROL=y

CONFIG_ESB_NEVER_DISABLE_TX=n
CONFIG_ESB_RX_FIFO_SIZE=256
CONFIG_ESB_TX_FIFO_SIZE=256
CONFIG_ESB_MAX_PAYLOAD_LENGTH=252

# Enable logging subsystem
CONFIG_LOG=y


# Enable logging for the ESB module
CONFIG_ESB_LOG_LEVEL_DBG=y
# Enable heap memory pool for dynamic memory allocation
CONFIG_HEAP_MEM_POOL_SIZE=16384

CONFIG_NRFX_SAADC=y
CONFIG_NRFX_PPI=y
CONFIG_NRFX_TIMER0=y
CONFIG_NRFX_TIMER2=y
Parents Reply Children
No Data
Related