This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Data Rate of nRF24L01P

Hello Sir, I’ve been used nRF24L01P controlled by DSP to transmit and receive data for few months. The nRF24L01P is run in 1Mbps mode. The SPI of DSP is set to send 8 bits each time, and it’s Baud rate is 1M. However, it’s practical data rate is looooower than 1M. Based on situations above, my questions are as follow:

  1. If the nRF24L01P send two bytes each time, how high could the data rate be? Does the Baud rate affects the data rate?
  2. How high could the data rate be in the two modes (1Mbps and 2Mbps) of nRF24L01P? If I want to get the highest practical data rate, must I send 32 bytes each time?
  3. Whether the structure of my program affects the data rate? Here is the program:

Initialization part:

void NRF24L01Int()

{ delay_loop(); GpioDataRegs.GPADAT.bit.GPIOA5=0;
GpioDataRegs.GPFDAT.bit.GPIOF3=1;
GpioDataRegs.GPFDAT.bit.GPIOF2=0; GpioDataRegs.GPADAT.bit.GPIOA8=1; NRFWriteReg(W_REGISTER+CONFIG,0x00); NRFWriteReg(W_REGISTER+FLUSH_TX,0x00); NRFWriteReg(W_REGISTER+SETUP_AW,0x03); NRFWriteTxDate(W_REGISTER+TX_ADDR,TxAddr,TX_ADDR_WITDH); NRFWriteTxDate(W_REGISTER+RX_ADDR_P0,TxAddr,TX_ADDR_WITDH); NRFWriteReg(W_REGISTER+EN_AA,0x01); NRFWriteReg(W_REGISTER+EN_RXADDR,0x00); NRFWriteReg(W_REGISTER+SETUP_RETR,0x00); NRFWriteReg(W_REGISTER+RF_CH,0x40); NRFWriteReg(W_REGISTER+RF_SETUP,0x07); NRFWriteReg(W_REGISTER+CONFIG,0x0e); }


Transmition part:

	while(1)
{
   	NRFWriteReg(W_REGISTER+STATUS,0x70);
	NRFSetTxMode();
	sta.all=NRFReadReg(R_REGISTER+STATUS);
	if(sta.bit.MAX_RT)
	{
	   NRFWriteReg(FLUSH_TX,0x00);  
	}
}

Thank you!

  • Hi Joker,

    As a rule of thumb, the larger the packet sending over the air, the lower the overhead and less gap period. If you send only 2 bytes the through put will reduce quite a lot. If you are using ESB, you should use 32 bytes payload. You can group several sample data into one payload and send when you have 32 bytes. Note that, long packet over the air has a cons that there is more chance the packet get corrupted because of interference and the whole packet have to be re-transmitted but it's not a big deal with 32 bytes payload (+overhead).

    The maximum data rate, you can refer here.

    Another note, the on-air data rate is 1Mbps. This doesn't mean the actual data rate is 1Mbps, interference, ramping up time, switching time, overhead will reduce the actual through put.

Related