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

NRF24L01+ Back-to-back transmission

I found strange behavior when using back-to-back packet transmission.

Configuration of PTX/PRX is:

No Auto-ACK (disabled)
CRC 2 bytes
Packet length 13 bytes
Addr length 3
Addr value - default (0xE7E7E7)

Some time back-to-back transmission of two packets with random payload cause drop second packet. With debugging via receive packet without CRC I found that if second byte of CRC of first packet equal 0xE7, receiver define it like first byte of address of next packet, so next packet start receive one byte earlier. With CRC enabled this situation followed by drop packet (no RX).

Example:

First packet (on SPI)
b0 b1 ..payload1.. b13
Second packet (on SPI)
b14 b15 ....payload2... b26

First packet on AIR
preamble E7 E7 E7 b0 b1 ...payload1... b13 crc1 crc2
Second packet on AIR
preamble E7 E7 E7 b14 b15 ...payload2... b26 crc1 crc2

if crc2!=0xE7 - all correct.
If crc2==0xE7, PRX without CRC check (with length 15 agains 13) receive

Packet1
b0 b1 ... payload1... crc1 crc2(0xE7!!!!) (13+2=15 bytes)
Packet2
0xE7 b14 b15 ...payload2... b26 crc1 (13+2=15 bytes)

So packet2 start receive one byte ealier, first byte of second packet look like last byte of ADDR field and second byte of CRC is lost.

Please note that CRC generated by PTX (PTX CRC ON, 2 bytes).

If CRC checking on PRX is enabled, second packet has dropped if crc2 of first packet equal first byte of ADDR field.

Any comments?

Thanks.

Related