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

nRF24L0+ CRC

Hi, the datasheet for the nRF24L0+ says that the CRC is the mandatory error detection mechanism in the packet (page 28). Being that CRC can be enabled or disabled via EN_CRC in the CONFIG register, what does 'mandatory' mean?

There is a 1 or 2 byte option for the CRC encoding scheme, what is the difference? Is 2 bytes better at error detection? what is the trade-off?

thanks Tim

  • Hi Tim

    I believe CRC is mandatory for the Enhanced Shockburst protocol, but not for the older Shockburst protocol. In other words you are free to disable CRC if you don't have ESB enabled (through the EN_AA register).

    There is always a risk that you have packet errors in the packet that are not detected by the CRC check, if the corrupted packet happens to give the same CRC as the valid packet. A measurement of the quality of the CRC algorithm is the so called "Hamming distance", which is a measure of how many bit errors you can accept in the packet and still be guaranteed a different CRC. The Hamming distance is affected by the length of the packet and the size of the CRC, with a larger CRC generally performing better.
    The only drawback of using a longer CRC is that the size of the packet is increased, leading to slightly higher average current consumption.

    Best regards
    Torbjørn

Related