STM32中CRC计算单元,及CRC校验的应用
扫描二维码
随时随地手机看文章
作者:strongerHuang
1关于CRC校验
CRC:Cyclic Redundancy Check,即循环冗余校验码。
─ X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X4 + X2 + X +1
参考维基百科循环冗余校验:
https://zh.wikipedia.org/wiki/%E5%BE%AA%E7%92%B0%E5%86%97%E9%A4%98%E6%A0%A1%E9%A9%97
2
STM32中CRC计算单元CRC 主要特性
使用 CRC-32 (以太网)多项式:0x4C11DB7
— X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2+ X +1
单输入/输出 32 位数据寄存器
CRC 计算在 4 个 AHB 时钟周期 (HCLK) 内完成
8 位通用寄存器 (可用于临时存储)
---来自STM32参考手册
输入/输出数据的反转
STM32默认不对输入数据和输出数据进行位反转。
1.对输入数据的位反转操作可以设置为按字节/半字 /字为单元进行操作。例如输入数据为 0x1A2B3C4D,
每个字节内逐位反转,结果是 0x58D43CB2
每半字内逐位反转,结果是 0xD458B23C
每个字长内逐位反转,结果是 0xB23CD458
2.对输出数据的位反转
例如输出数据为 0x11223344,反转后为 0x22CC4488
看下标准库的部分函数源码:
3
CRC应用再比如之前讲述的MAVLink通信协议:
其实之前给大家过一篇文章:如何在 IAR和 KEIL中计算 CRC值。
简单来说,这里的配置可以对Flash进行CRC计算,关于这里内容比较多,足以单独写一篇文章了,感兴趣的读者可以深入了解一下。
GitHub在Git 2.28中推进master/slave名称更换
长按前往图中包含的公众号关注
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!