打印
[信息]

学习笔记+CRC校验单元

[复制链接]
701|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2019-12-23 15:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我来说一说F4系列的CRC校验单元,不知道是否stm32整个系列通用哈!
下文所有图片摘自**:RM0090_STM32F405/415, STM32F407/417, STM32F427/437和STM32F429/439单片机参考手册,亲们可以从官方网站下载。

CRC(循环冗余校验)计算单元用于从32位数据字和固定的生成多项式中获取CRC码。


CRC的主要特点有:
•使用CRC-32(以太网)多项式:0x4C11DB7
– X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1
•单个输入/输出32位数据寄存器
•在4个AHB时钟周期(HCLK)中完成CRC计算
•通用8位寄存器(可用于临时存储)





有关CRC的有关功能有下面的描述:

CRC计算单元主要由单个32位数据寄存器组成,该寄存器:
•用作在CRC计算器中输入新数据的输入寄存器(写入寄存器时)
•保留上一次CRC计算的结果(读取寄存器时)
对数据寄存器的每次写操作都会创建先前CRC值和新CRC值的组合(CRC计算是在整个32位数据字上完成的,而不是每个字节一个字节)。
写入操作将一直暂停直到CRC计算结束,从而允许进行背对背写入访问或连续的写入和读取访问。
可以使用CRC_CR寄存器中的RESET控制位将CRC计算器复位为0xFFFF FFFF。 该操作不会影响CRC_IDR寄存器的内容。



CRC计算单元包含两个数据寄存器和一个控制寄存器。
CRC寄存器必须通过字(32位)进行访问。



对于CRC的寄存器我这里就不详细贴图了,在这里附一下STM32F4的CRC库

void CRC_ResetDR(void)复位CRC数据寄存器
uint32_t CRC_CalcCRC(uint32_t Data)计算32位数的CRC
uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[],uint32_t BufferLength)计算多个32位数的CRC
uint32_t CRC_GetCRC(void)返回当前CRC数值
void CRC_SetIDRegister(uint8_t ID_Value)存入一个8位数据到独立寄存器
uint8_t CRC_GetIDRegister(void)从独立数据寄存器读出8为数据






使用特权

评论回复
沙发
labasi| | 2020-1-17 14:03 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
板凳
paotangsan| | 2020-1-17 14:10 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
地板
renzheshengui| | 2020-1-17 14:17 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
5
wakayi| | 2020-1-17 14:27 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
6
wowu| | 2020-1-17 14:36 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
xiaoqizi| | 2020-1-17 14:45 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
8
operating| | 2020-1-17 15:05 | 只看该作者
感谢分享!CRC校验算是比较好而且常用的一种校验算法了

使用特权

评论回复
9
木木guainv| | 2020-1-17 15:06 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
10
guanjiaer| | 2020-1-17 15:21 | 只看该作者
非常感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1760

主题

15201

帖子

10

粉丝