简介
基于STM32F107VCT6介绍STM32的硬件CRC和使用方法,并记录软件检验实现。
STM32的CRC介绍
手册中说明STM32的CRC硬件校验使用的是32位CRC校验,多项式为0x04C11DB7;CRC计算时一次性运算32bits,不是按照字节运算;CRC_DR寄存器的复位值为0xFFFFFFFF,即CRC计算的初始值。
STM32的CRC使用
- STM32的CRC_DR寄存器既作为输入寄存器又作为输出寄存器
- 作为输入寄存器时直接写入要进行CRC计算的数据
- 作为输出寄存器时,通过读操作返回上次CRC计算结果
- 每一次写入数据寄存器的计算结果是前一次计算结果和新计算结果的组合;在新的数据块进行CRC计算之前,需要复位CRC_DR寄存器
以STM32F107的标准库为例,介绍CRC计算的步骤
'''
// 代码块
uint32_t buff[4] = {0x01,0x02,0x03,0x04};
CRC_ResetDR();
CRC_CalcBlockCRC(buff,4);
delay(5);
ret = CRC_GetCRC();
'''