[143] RADIO: False CRC failures on specific addresses

This anomaly applies to Revision 3, build codes QFAA-Gx0, QFAB-Gx0, CIAA-Gx0.

It was inherited from the previous IC revision Revision 2.

Symptoms

100% CRC failure rate even if the payload is received correctly.

Conditions

1 Mbit/s and 2 Mbit/s Nordic proprietary radio mode and Bluetooth Low Energy. CRCCNF.SKIPADDR = 0. CRC calculation includes the address field.

Logical address 0 and logical address 1 to 7 have the same BASE address MSBs configured.

ADDRLEN=5
BASE0 = 0xAAAAXXXX 
BASE1 = 0xAAAAXXXX
ADDRLENLEN=4
BASE0 = 0xAAXXXXXX 
BASE1 = 0xAAXXXXXX
AND logical address 0 and one of the logical addresses 1 to 7 have the same PREFIX value configured.

The issue is present regardless of which logical address is enabled in RXADDRESSES.

Consequences

If receiving on logical address 0, the address is reconstructed incorrectly for CRC calculation, resulting in CRCSTATUS.CRCError being returned. However, the received payload bytes are correct. Packet error rate 100 percent. RXMATCH shows the wrong logical address.

Workaround

Use one of the following workarounds:
  • Use the ESB and Gazell libraries of SDK v14.0.0 or later.

    This implementation applies the following workaround.

  • Set bit 16 in RXADDRESSES to 1.
  • Apply the following code before triggering the RXEN task:
    
      *(volatile uint32_t *) 0x40001774 = ((*(volatile uint32_t *) 0x40001774) & 0xfffffffe) | 0x01000000; 
    
    This code will reduce sensitivity with 3 dB.