It is based on a CRC32 engine that computes the signature of 32-bit data presented to the peripheral.
The dedicated hardware compares the calculated signature of the operation to a preloaded expected signature and if the two fail to match, the peripheral generates an error.
CRC engine can either take the data from an MDMA transfer, or from a source MDMA channel, or from the core.
In addition to the CRC check, the engine can also be used for initializing large memory sections with a constant value or for verifying that sections of memory are equal to a constant value.
It supports 32 bit programmable CRC polynomial with bit reverse option.
Also supports bit/byte/word mirroring options.
Auto clear and preset of the result is also supported.