I use a NRF24L01+ module configured for receiver, 3-bytes address, 1-byte CRC, 1 Mbit/s, channel 2402 MHz, 2 pipes listening. Addresses are non-trivial (0x525443 and 0x4d4252).
But when transmitter is off, and receiver stay listening, I have often false packet detection: every 5-15 minutes I get a valid packet (with random payload, of course) for a pipe, so address and CRC match. Why?
Just a simple calculation: suppose NRF24 chip constantly demodulate incoming RF signal even if there is no carrier 1). For valid packet it necessary to match 4 bytes: synchro (0xAA/0x55 depending on first address bit), 3 bytes of address (any of 2 pipes), 1 byte CRC, so average time for false detection (suppose uniform distribution) is
240/(2×106) sec = 152 hours
Moreover, when I configured the chip for 2-bytes CRC, I got false detection after 1.5 hours. This is very amazing, because CRC is uniformly distributed and average time for false detection should be multiplicated by 256, but actually multiplicated by 10 approximately. Why? I'm very confused.
Anybody have this problem? Maybe anyone can repeat my experiment?
P. S. I know that NRF24L01+ supports 5-bytes address, and I can add any number of my own checksum bytes to payload to solve my problem. I have just a theoretic question. Why I have so often false detection, that not agrees with math.
1) The receiver print carrier-detect register (0x09, called RPD
for NRF24L01+) when valid packet appears: RPD is 0
when I have an accidental packet, RPD
is 1 when I send packet from a transmitter.