2
\$\begingroup\$

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.

\$\endgroup\$

1 Answer 1

2
\$\begingroup\$

This is a strong case to use RSSI to reject bad signals. The nRF24L01P has RPD=1 at signal >-64 dBm. But this chip nRF24L01, does not but has different thresholds of carrier detect. This should be reconsidered when garbage data is received. Also the L01 is not recommended for new design.

Your assumptions include that all noise is detected as random data, which does not appear to be true in your case. Analysis requires details of the design to see what data patterns are detected with statistical analysis. Perhaps Bias, asymmetry and filtered noise from LO leakage and stray noise are causing pattern bias from ambient signals. CRC length will help as expected only if noise is detected as pure random.

Another such example of non-random patterns is Rician Fading of stray transmitters in-channel modulates distortion according to reflection path interference length.

Your RPD should be mostly false and thus you ignore the data.

\$\endgroup\$
5
  • \$\begingroup\$ OK, if noise isn't uniformly distributed, my calculations for 152 hours may be fail. But CRC is remainder from polynomial division, so it has uniform distribution, i.e. value of CRC is uniformrly random depending on packet's data. Therefore, adding 1 byte of CRC should multiplicate average false detection time by 256, not matter how packet's data is distributed. But in my experiment the multiplicater actually is too smaller... I can't explain this. \$\endgroup\$
    – user54579
    Commented May 27, 2014 at 15:49
  • \$\begingroup\$ Are you sure all false detection is due to the receiver part of the NRF? Maybe there is some (extra) source, for instance in the communication between your uC and the NRF. \$\endgroup\$ Commented May 27, 2014 at 16:08
  • \$\begingroup\$ @WoutervanOoijen: No, the transmitter is off. \$\endgroup\$
    – user54579
    Commented May 27, 2014 at 16:52
  • \$\begingroup\$ That's not what I meant: for instance, if your SPI communication has excessive noise, you might occasionally think a frame was received when in fact nothing was received. \$\endgroup\$ Commented May 27, 2014 at 17:26
  • \$\begingroup\$ Do you have a scanner or spectrum Analyser ? Or scope on RSSI and data? \$\endgroup\$ Commented May 27, 2014 at 19:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.