English
Language : 

C8051F970-A-GM Datasheet, PDF (234/454 Pages) Silicon Laboratories – Low Power Capacitive Sensing MCU with up to 32 kB of Flash
C8051F97x
23.2. Preparing for a CRC Calculation
To prepare CRC0 for a CRC calculation, software should set the initial value of the result. The polynomial used for
the CRC computation is 0x1021. The CRC0 result may be initialized to one of two values: 0x0000 or 0xFFFF. The
following steps can be used to initialize CRC0.
1. Select the initial result value (Set CRCVAL to 0 for 0x0000 or 1 for 0xFFFF).
2. Set the result to its initial value (Write 1 to CRCINIT).
23.3. Performing a CRC Calculation
Once CRC0 is initialized, the input data stream is sequentially written to CRC0IN, one byte at a time. The CRC0
result is automatically updated after each byte is written. The CRC engine may also be configured to automatically
perform a CRC on one or more 256 byte blocks read from flash. The following steps can be used to automatically
perform a CRC on flash memory.
1. Prepare CRC0 for a CRC calculation as shown above.
2. Write the index of the starting page to CRC0AUTO.
3. Set the AUTOEN bit to 1 in CRC0AUTO.
4. Write the number of 256 byte blocks to perform in the CRC calculation to CRCCNT.
5. Write any value to CRC0CN (or OR its contents with 0x00) to initiate the CRC calculation. The CPU will not
execute code any additional code until the CRC operation completes. See the note in the CRC0CN
register definition for more information on how to properly initiate a CRC calculation.
6. Clear the AUTOEN bit in CRC0AUTO.
7. Read the CRC result.
23.4. Accessing the CRC0 Result
The internal CRC0 result is 16 bits. The CRCPNT bits select the byte that is targeted by read and write operations
on CRC0DAT and increment after each read or write. The calculation result will remain in the internal CR0 result
register until it is set, overwritten, or additional data is written to CRC0IN.
23.5. CRC0 Bit Reverse Feature
CRC0 includes hardware to reverse the bit order of each bit in a byte as shown in Figure 23.2. Each byte of data
written to CRC0FLIP is read back bit reversed. For example, if 0xC0 is written to CRC0FLIP, the data read back is
0x03. Bit reversal is a useful mathematical function used in algorithms such as the FFT.
CRC0FLIP
(write)
CRC0FLIP
(read)
Figure 23.2. Bit Reversal
Rev 1.0
235