25.7.8.3 CRC/Checksum Modes
The CHCTRLCRCk.CRCMD[2:0] controls the type of CRC/Checksum operation to perform.
CRC-16 IBM/ANSI
Setting CRCMD to 0 configures the CRC engine in CRC-16 (IBM/ANSI) mode. This CRC is commonly used for USB and ANSI X3.28 protocol.
Polynomial (0x8005):
x16 + x15 + x2 +1
CRC-16 CCITT
Setting CRCMD to 1 configures the CRC engine in CRC-16-CCITT mode. This CRC is commonly used for Bluetooth and Secure Digital cards.
Polynomial (0x1021): x16 + x12 + x5 +1
Custom 16-bit CRC
When CRCMD=2 the CRC engine uses the 16-bit polynomial from register CRCPOLYA. If CRCMD=3, the CRC engine uses the 16-bit polynomial from register CRCPOLYB. The user is expected to program CRCPOLYA/B with the polynomial as described in Polynomial Registers.
CRC-32
Setting the CRCMD to 4, configures the CRC engine in CRC-32 mode for this channel. This CRC is commonly used for Ethernet and MPEG2.
Polynomial (0x04C11DB7):
x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x +1
- Reflected Output
- XOR Output
- CRC Data
Custom 32-bit CRC
When CRCMD=5 the CRC engine uses the 32-bit polynomial from register CRCPOLYA. If CRCMD=6, the CRC engine uses the 32-bit polynomial in register CRCPOLYB. The user is expected to program CRCPOLYA/B with the polynomial as described in Polynomial Registers.
IP Header Checksum
When CRCMD is set to 7 for the channel, the CRC engine implements an Checksum calculation. See Checksum Calculations for details on how the calculation is done.