English
Language : 

F28M36P63C_14 Datasheet, PDF (89/254 Pages) Texas Instruments – F28M36x Concerto™ Microcontrollers
www.ti.com
F28M36P63C, F28M36P53C, F28M36H53C, F28M36H53B, F28M36H33C, F28M36H33B
SPRS825C – OCTOBER 2012 – REVISED FEBRUARY 2014
3.19 µCRC Module
The µCRC module is part of the master subsystem. This module can be used by Cortex-M3 software to
compute CRC on data and program, which are stored at memory locations that are addressable by
Cortex-M3. On this device, the Cortex-M3 Flash Bank and ROM are mapped to the code space that is
only accessed by the ICODE/DCODE bus of Cortex-M3; and RAMs are mapped on the SRAM space that
is accessible by the SYSTEM bus. Hence, the µCRC module snoops both the DCODE and SYSTEM
buses to support CRC calculation for data and program.
3.19.1 Functional Description
The µCRC module snoops both the DCODE and SYSTEM buses to support CRC calculation for data and
program. To allow interrupts execution in between CRC calculations for a block of data and to discard the
Cortex-M3 literal pool accesses in between executions of the program (which reads data for CRC
calculation), the Cortex-M3 ROM, Flash, and RAMs are mapped to a mirrored memory location. The
µCRC module grabs data from the bus to calculate CRC only if the address of the read data belongs to
mirrored memory space. After grabbing, the µCRC module performs the CRC calculation on the grabbed
data and updates the µCRC Result Register (µCRCRES). This register can be read at any time to get the
calculated CRC for all the previous read data. The µCRC module only supports CRC calculation for byte
accesses. So, in order to calculate the CRC on a block of data, software must perform byte accesses to
all the data. For half-word and word accesses, the µCRC module discards the data and does not update
the µCRCRES register.
NOTE
If a read to a mirrored address space is thrown from the debugger (Code Composer Studio
or any other debug platform), the µCRC module ignores the read data and does not update
the CRC result for that particular read.
3.19.2 CRC Polynomials
The following are the CRC polynomials that are supported by the µCRC module:
• CRC8 Polynomial = 0x07
• CRC16 Polynomial-1 = 0x8005
• CRC16 Polynomial-2 = 0x1021
• CRC32 Polynomial = 0x04C11DB7
3.19.3 CRC Calculation Procedure
The software procedure for calculating CRC for a set of data that is stored in Cortex-M3 addressable
memory space is as follows:
1. Save the current value of the µCRC Result Register (µCRCRES) into the stack to allow calculation of
CRC in nested interrupt
2. Clear the µCRC Result Register (µCRCRES) by setting the CLEAR field of the µCRC Control Register
(µCRCCONTROL) to "1"
3. Configure the µCRC polynomials (CRC8, CRC16-P1, CRC16-P2, or CRC32) in the µCRC
Configuration Register (µCRCCONFIG)
4. Read the data from memory locations for which CRC needs to be calculated using mirrored address
5. Read the µCRCRES register to get the calculated CRC value. Pop the last saved value of the CRC
from the stack and store this value into the µCRC Result Register (uCRCRES)
Copyright © 2012–2014, Texas Instruments Incorporated
Device Overview
89
Submit Documentation Feedback
Product Folder Links: F28M36P63C F28M36P53C F28M36H53C F28M36H53B F28M36H33C F28M36H33B