历史上的今天
返回首页

历史上的今天

今天是:2025年01月25日(星期六)

2021年01月25日 | CRC校验、STM32中CRC计算单元、CRC应用

2021-01-25 来源:eefocus

    从这一段时间后台反馈的问题可以看得出来,好些朋友对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原理的内容,我这里就不再过多讲述。


参考维基百科循环冗余校验:

https://zh.wikipedia.org/wiki/%E5%BE%AA%E7%92%B0%E5%86%97%E9%A4%98%E6%A0%A1%E9%A9%97


2STM32中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比较简单,只有三个比较简单的寄存器,不管是使用寄存器,还是库函数,对于大部分人来说,没有多大难度。


看下标准库的部分函数源码:

图片


3CRC应用

我记得读书那个时候,想要把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计算。关于这里内容比较多,足以单独写一篇文章了。可能后面会单独写一篇相关文章。


推荐阅读

史海拾趣

Hi-Optel Technologly Co Ltd公司的发展小趣事

Hi-Optel Technologly Co Ltd在电子行业中的五个发展故事

故事一:创立与初期发展

Hi-Optel Technologly Co Ltd(以下简称Hi-Optel)成立于1999年,由国有大型上市公司和国内著名风险投资机构共同投资,注册资本高达1亿美元。公司自创立之初便专注于光纤通信领域的模块开发、制造和营销。初期,Hi-Optel面临着技术挑战和市场开拓的双重压力,但凭借其强大的研发实力和敏锐的市场洞察力,逐步在光纤收发器、TO-CAN等关键产品的研发上取得突破,为后续的快速发展奠定了坚实基础。

故事二:技术创新与产品线拓展

随着技术的不断进步,Hi-Optel持续加大研发投入,不断推出新产品以满足市场需求。公司不仅拥有从TO-CAN到光纤收发器等完整产品的研发、生产和处理能力,还涵盖了不同速率和不同封装传输和数据通信的主动模块。这些产品广泛应用于SONET、以太网、FTTx、LTE和IDC光纤传输/接入系统,极大地提升了公司在行业内的竞争力。同时,Hi-Optel还积极拓展产品线,将业务范围延伸至更广泛的电子通信领域。

故事三:市场拓展与品牌建设

在市场拓展方面,Hi-Optel采取了多种策略以扩大市场份额。公司积极参加国内外各类电子通信展会,展示其最新技术和产品,吸引了众多客户和合作伙伴的关注。同时,Hi-Optel还注重品牌建设,通过提升产品质量和服务水平,赢得了客户的广泛好评。此外,公司还建立了完善的销售网络和售后服务体系,为客户提供全方位的支持和服务。

故事四:供应链优化与成本控制

为了应对激烈的市场竞争,Hi-Optel不断优化供应链管理,降低生产成本。公司与多家优质供应商建立了长期稳定的合作关系,确保原材料的稳定供应和质量的可靠性。同时,Hi-Optel还通过引入先进的生产设备和工艺,提高生产效率和产品质量,进一步降低了生产成本。这些措施不仅增强了公司的市场竞争力,还为公司的可持续发展提供了有力保障。

故事五:国际化战略与全球化布局

随着全球化进程的加速,Hi-Optel积极实施国际化战略,拓展海外市场。公司成立了多个海外分支机构,并在多个国家和地区建立了销售网络和售后服务体系。通过与国际知名企业的合作与交流,Hi-Optel不断提升自身的技术水平和品牌影响力。同时,公司还积极参与国际标准和规范的制定工作,推动行业技术的进步和发展。这些努力使得Hi-Optel在全球电子通信领域的影响力日益增强。

GHI Electronics公司的发展小趣事

GHI Electronics公司成立于2003年,总部位于美国密歇根州。公司自创立之初便明确了其使命:为客户提供咨询、制造和解决方案,以降低风险、成本和复杂性。这一清晰的定位使得GHI Electronics能够迅速在电子工程和制造领域站稳脚跟。随着市场需求的不断变化,GHI Electronics不断调整和优化其服务内容,逐渐赢得了客户的信任和市场的认可。

Crosspoint Solutions公司的发展小趣事

在电子行业的激烈竞争中,Crosspoint Solutions公司凭借一项革命性的技术创新脱颖而出。公司研发出一款高度集成的交叉点开关芯片,该芯片在数据传输速度和稳定性上均达到了行业领先水平。这一创新迅速吸引了各大电子设备制造商的注意,公司因此获得了大量订单,市场份额迅速扩大。

中环(Central)公司的发展小趣事

随着公司业务的不断拓展,中环在保持主业优势的同时,也积极开展多元化发展。2014年,公司开始开展光伏电站开发业务,进一步延伸了产业链。同时,公司还成立了东方环晟,开拓了组件业务。这些举措不仅为公司带来了新的增长点,也增强了其综合竞争力。

BROTHER公司的发展小趣事

在电子产品领域取得一定成就后,BROTHER并没有停止前进的步伐。公司开始寻求多元化业务的拓展,以应对市场变化和风险。除了传统的缝纫机和电子产品外,BROTHER还开始涉足打印机、传真机、扫描仪等办公设备领域。通过不断创新和研发,BROTHER成功推出了一系列高品质、高性能的办公设备产品,满足了不同客户的需求。同时,公司还积极开拓新的市场领域,如智能家居、物联网等前沿领域,为未来发展奠定了坚实基础。

Doodle Labs公司的发展小趣事

随着技术的不断进步和市场的不断变化,Doodle Labs意识到单一产品无法满足多样化的客户需求。因此,公司开始加大研发投入,不断推出新的产品线。其中,最为引人注目的是一款名为Helix的六波段智能无线电产品,它能够在1625-2500MHz的频率范围内工作,为无人机提供全方位的通信支持。这款产品一经推出就受到了市场的热烈欢迎,Doodle Labs也因此获得了更多的关注和认可。

问答坊 | AI 解惑

89C51

本帖最后由 paulhyde 于 2014-9-15 09:33 编辑 89C51FDBDFBDGD  …

查看全部问答>

开关电源分类介绍

开关电源的分类介绍  现代开关电源有两种:一种是直流开关电源;另一种是交流开关电源。本书要介绍的只是直流开关电源,其功能是将电能质量较差的原生态电 源(粗电),如市电电源或蓄电池电源,转换成满足设备要求的质量较高的直流电压(精电) ...…

查看全部问答>

计算机系统总线基础

一. 总线的概念 在计算机系统中,不同的子系统必须具有连接彼此的接口,比如,内存和处理器需要通信,处理器和I/O设备也需要通信。这些工作都是由总线来完成的。总线就是一条共享的通信链路,它用一套线路来连接多个子系统。下图是一个典型的计算 ...…

查看全部问答>

有没用TVP5147做解码芯片的?我配置出来的效果很不好,怎么改进啊?!谁有优化后的参数表?

有没用TVP5147做解码芯片的?我配置出来的效果很不好,怎么改进啊?!谁有优化后的参数表?…

查看全部问答>

vxworks源码和tornado的target目录的问题

刚开始接触vxworks,现在在学习END驱动,看到tornado的target目录下的src里面有个文件是templateEnd.c,有点不明白这里面的代码和vxworks源码里面的MUXDevLoad的关系是怎么样的,是否在templateEnd.c里面提供的模板供我们在特定的芯片开发时按照上 ...…

查看全部问答>

求CRC校验程序

现有电脑与单片机串口通讯数据 请大侠求证CRC校验方法 多谢 发送: A5 A5 00 1E 00 00 01 35 CA EC A5 A5 00 1E 00 01 01 35 FA DB A5 A5 00 1E 00 02 01 35 AA 82 A5 A5 00 1E 00 03 01 35 9A B5 A5 A5 00 1E 00 04 01 35 0A 30 A5 A5 00 ...…

查看全部问答>

WinCE下的注册表读写,在线等,急~~~~

我在VC下的注册表读写问题为什么在EVC下运行成功,却无法对注册表修改?…

查看全部问答>

PC5设为外部中断时中断号选哪个?

PC5设为外部中断时中断号应该选啥( NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;)…

查看全部问答>