单片机中CRC原理及应用

crc校验算应该绝大部分理工类同学都学习过,但真正搞明白的没几个,之前给大家分享过《几种常见的校验算法》,今天结合stm32来分享其中crc相关的内容。
1、关于crc校验
crc:cyclic redundancy check,即循环冗余校验码。
crc是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。
循环冗余检查(crc)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
---来自百度百科
学电子、计算机相关专业的同学都应该学习过crc的基础原理。其原理说难不难,可以说就是一个公式。同时,说简单也不简单,这个公式里面包含的内容不简单。
拿stm32参考手册中crc计算单元来说,使用crc-32(以太网)多项式:0x4c11db7─ x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x4 + x2 + x +1
关于crc基础原理的内容比较多,百度、谷歌一下可以看到很多关于crc原理的内容,我这里就不再过多讲述。
参考维基百科循环冗余校验
2、stm32中crc计算单元
相信初学stm32的朋友都知道stm32中有个crc计算单元,如果有不知道的去面壁思过(参考手册中目录一看就能看见crc章节)。
但很多朋友都仅限知道有crc计算单元这个东西,基本都没怎么进一步了解过。
stm32全系列产品都具有 crc 外设(注意,是全系列都有), 对 crc 的计算提供硬件支持,为应用程序节省了代码空间。
stm32的crc(循环冗余校验)计算单元使用一个固定的多项式发生器从一个 32 位的数据字中产生 crc 码。
在众多的应用中,基于 crc 的技术还常用来验证数据传输或存储的完整性。
根据 en/iec60335-1 标准的规定,这些技术提供了验证 flash 完整性的方法。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
操作stm32的crc比较简单,只有三个比较简单的寄存器,不管是使用寄存器,还是库函数,对于大部分人来说,没有多大难度。
看下标准库的部分函数源码:
3、crc应用
我记得读书那个时候,想要把crc搞明白好难啊,原因在于不知道学这个crc到底有什么用途。
crc用途其实非常广泛,我们最常见的就是在一些通信上,比如:modbus:
再比如之前讲述的mavlink通信协议:
crc其主要目的就是验证数据的正确性。在crc应用中,还有一个重要的作用:通过 crc 校验对 flash 的完整性进行检查。
在对 flash 完整性检查的应用中,需要事先计算出整个 flash 的 crc 校验值(不包括最后保存 crc 值的字节),放在 flash 的末尾。在程序启动或者运行的过程中重新用同样的方法计算整个 flash 的 crc 校验值,然后与保存在 flash 末尾的 crc 值进行比较。
这个对flash添加crc校验主要目的:在远程升级程序可有效检查程序的完整性。
在iar ewarm中有这么一个功能:checksum。不知道大家使用过没,也是可以对flash添加crc的功能。看下图:
简单来说,这里的配置可以对flash进行crc计算,关于这里内容比较多,足以单独写一篇文章了,感兴趣的读者可以深入了解一下。
来源:strongerhuang
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理


中国电信低调成立天翼物联的背后:高调的物联网野心
电话机器人具备怎样的优点
Celeno高性能802.11ac Wave 2 4x4产品采用CEVA DSP
大屏双核 LG Optimus L7本月底开卖
高频高效DC-DC转换器TPS61087DRCR 应用介绍
单片机中CRC原理及应用
浅谈电池修复技术之UPS电源明细(一)
光学系统设计流程
半导体集成电路和晶圆有何关系?半导体晶圆制造工艺介绍
龙芯中科发布自重研发的新一代CPU——龙芯3号
传统安防公司如何突围海外市场,如何在新技术日新月异的时代塑造自己新的核心竞争力
频谱管理中的问题解决方案
文昌潭牛智能变电站成功投运,海南电网已步入智能时代
国内iPhone 12 Pro与iPhone 12 Pro Max依然供不应求
长虹各型彩电CPU关键引脚及掩膜型号对照表原型号
采访楚庆:对于5G开发,中国有天然优势
供应海利普变频器-A系列变频器
区块链一站式内容交易所快比特介绍
索尼宣布明年停止向PS3、PSV提供免费的PS Plus游戏
随着技术不断深入 作为安防重要板块的防盗报警也迎来了蜕变