Information
31.3.1 CRC initialization/reinitialization
To enable the CRC calculation, the user must program the WAS, POLYNOMIAL, and
necessary parameters for transpose and CRC result inversion in the applicable registers.
Asserting CTRL[WAS] enables the programming of the seed value into the CRC data
register.
After a completed CRC calculation, reasserting CTRL[WAS] and programming a seed,
whether the value is new or a previously used seed value, reinitialize the CRC module for
a new CRC computation. All other parameters must be set before programming the seed
value and subsequent data values.
31.3.2 CRC calculations
In 16-bit and 32-bit CRC modes, data values can be programmed 8 bits, 16 bits, or 32 bits
at a time, provided all bytes are contiguous. Noncontiguous bytes can lead to an incorrect
CRC computation.
31.3.2.1 16-bit CRC
To compute a 16-bit CRC:
1. Clear CTRL[TCRC] to enable 16-bit CRC mode.
2. Program the transpose and complement options in the CTRL register as required for
the CRC calculation. See Transpose feature and CRC result complement for details.
3. Write a 16-bit polynomial to the GPOLY[LOW] field. The GPOLY[HIGH] field is
not usable in 16-bit CRC mode.
4. Set CTRL[WAS] to program the seed value.
5. Write a 16-bit seed to CRC[LU:LL]. CRC[HU:HL] are not used.
6. Clear CTRL[WAS] to start writing data values.
7. Write data values into CRC[HU:HL:LU:LL]. A CRC is computed on every data
value write, and the intermediate CRC result is stored back into CRC[LU:LL].
8. When all values have been written, read the final CRC result from CRC[LU:LL].
Transpose and complement operations are performed on the fly while reading or writing
values. See Transpose feature and CRC result complement for details.
31.3.2.2 32-bit CRC
To compute a 32-bit CRC:
Functional description
K20 Sub-Family Reference Manual, Rev. 1.1, Dec 2012
706
Preliminary
Freescale Semiconductor, Inc.
General Business Information
