When I have a test using nRF24l01+ with STM32, I can only get a playload datarate no more than 450kbps using nRF24l01+ 2M mode. How can increase the playload data rate and what is the maximum for the playload data rate? Thanks.
When I have a test using nRF24l01+ with STM32, I can only get a playload datarate no more than 450kbps using nRF24l01+ 2M mode. How can increase the playload data rate and what is the maximum for the playload data rate? Thanks.
Hi Torbjørn, I agree with u. Another question, what is the max through put for the NACK Mode, can it reach 1.5mbps? Thanks. Yong
Hi Yong
If you take advantage of the possibility to keep CE enabled over multiple packets (up to a maximum time of 4ms) you can reach 1.5Mbps or more in legacy Shockburst mode, yes.
For this to work you have to upload the next packet to the FIFO while the current packet is being transmitted.
Still, it is important to disable the TX temporarily after 4ms, otherwise the carrier frequency might drift out of spec and the packets will be lost.
Best regards
Hi Torbjørn,
It is great. I will try the though put 1.5Mbps.It is very important for my application. Could u give me some advice for the configuration to enabled over multiple packets and to to upload the next packet to the FIFO? Looks there is no more detail specification on datasheet document.It will be very helpful to me if there is a demo for the configuration. Thanks.
Yong
I have a testing as below:
define MAX_TX 0x10 define TX_OK 0x20 define RX_OK 0x40
u8 NRF24L01_TxPacketContinous(u8 txbuf[8][32],u8 packetNum) { u8 sta,i; u8 outPut[20];
//NRF24L01_CE=0;
//NRF24L01_CE=1; //always in 1
for(i = 0 ; i < packetNum; i ++){
while(1){
sta=NRF24L01_Read_Reg(STATUS); //get status
if(!(sta&0x1)) //TX FIFO not full
{
NRF24L01_Write_Buf(WR_TX_PLOAD,&txbuf[i][0],TX_PLOAD_WIDTH);//write data to FIFO
break;
}
}
while(NRF24L01_IRQ!=0);
}
while(1){
sta=NRF24L01_Read_Reg(STATUS); //get status
if(sta&0x20) //send comlete
{
break;
}
}
NRF24L01_Write_Reg(WRITE_REG+STATUS,sta);
if(sta&MAX_TX)
{
NRF24L01_Write_Reg(FLUSH_TX,0xff);
llprintf("tran failed\n");
return MAX_TX;
}
if(sta&TX_OK)//SEND COMPLETED
{
return TX_OK;
}
return 0xff;//OTHER ERROR
} But it not well.Looks some packet lost or can not be received correctly. Thanks. Yong
Hi
The procedure is quite straight forward:
Best regards