如何配置IAR的CRC参数(STM32)
mouser 2020-11-20

前言

STM32全系列产品都具有CRC外设,对CRC的计算提供硬件支持,为应用程序节省了代码空间。CRC校验值可以用于数据传输中的数据正确性的验证,也可用于数据存储时的完整性检查。在IEC60335中,也接受通过CRC校验对FLASH的完整性进行检查。在对FLASH完整性检查的应用中,需要事先计算出整个FLASH的CRC校验值(不包括最后保存CRC值的字节),放在FLASH的末尾。在程序启动或者运行的过程中重新用同样的方法计算整个FLASH的CRC校验值,然后与保存在FLASH末尾的CRC值进行比较。

EWARM从v5.5版本之后开始支持STM32芯片的CRC计算。前面所说的计算整个FLASH的CRC校验值并保存在FLASH末尾的过程,可以在IAR中完成。通过配置EWARM的CRC计算参数,自动对整个FLASH空间进行CRC计算,并将计算结果放到FLASH的末尾。本文中将介绍的就是如何配置IAR的CRC参数,使之与STM32的CRC硬件模块保持一致。本文中的例子都基于STM32F072进行。

STM32的CRC外设

CRC校验值的计算采用多项式除法,可以通过除数和被除数进行异或运算实现。这种方法非常适合通过硬件电路来实现。

使用STM32CRC外设时,你要考虑的内容包括:采用哪个CRC生成多项式,输入数据(要进行校验的数据)和初始值。

1.生成多项式

默认使用CRC32多项式:0x4C11DB7

“”

部分芯片支持可编程的多项式,比如STM32F3,STM32F0,STM32L0

2.初始值

STM32的CRC初始值默认为0xFFFFFFFF,STM32F3,STM32F0,STM32L0系列可以修改初始值

3.输入/输出数据的反转

STM32F3,STM32F0,STM32L0系列还提供了对输入/输出数据进行反转的功能。
默认不对输入数据和输出数据进行位反转

• 对输入数据的位反转操作可以设置为按字节/半字 /字为单元进行操作。例如输入数据为0x1A2B3C4D,
- 每个字节内逐位反转,结果是0x58D43CB2
- 每半字内逐位反转,结果是0xD458B23C
- 每个字长内逐位反转,结果是0xB23CD458

• 对输出数据的位反转。
- 例如输出数据为0x11223344,反转后为0x22CC4488

IAR的CRC配置

1.修改Link文件

指定checksum在FLASH中的存储位置,在Link文件中增加下面语句。

“”

该语句指定将CRC的值放在FLASH的末尾位置。是整个FLASH空间的末尾,不是应用程序的代码末尾。这样,CRC值的位置就是固定的。不会随代码大小而变化。

2.配置Checksum页面的参数

IAR Checksum页说明(v6.4及以上)

“”

IAR的checksum页面分为两个部分。
第一部分,也就是红线圈出的部分。定义了FLASH中需要计算CRC的范围和空闲字节填充值。
剩下的部分,就是对checksum计算参数的设定部分。

Checksum size :选择checksum的大小(字节数)
Alignment:指定checksum的对齐方式。不填的话默认2字节对齐。
Algorithm:选择checksum的算法
Complement:是否需要进行补码计算。选择“Asis”就是不进行补码计算。
Bit order:位输出的顺序。MSB first,每个字节的高位在前。LSB first,每个字节的低位在前。
Reverse byte order within word: 对于输入数据,在一个字内反转各个字节的顺序。
Initial value: checksum计算的初始化值
Checksum unit size :选择进行迭代的单元大小,按8-bit,16-bit还是32-bit进行迭代。

3.STM32 CRC外设使用默认配置时IAR的配置

STM32CRC外设的配置:

POLY= 0x4C11DB7(CRC32)
Initial_Crc = 0Xffffffff
输入/输出数据不反转
输入数据:0x08000000~0x0801FFFB。(最后4个字节用来放计算出的CRC值)

“”
“”

具体使用中我们可以根据实际应用需求参照上面介绍做相应配置即可。

本文转载自
转载地址:
声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有,如涉及侵权,请联系小编进行处理。

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
热门推荐
  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 为什么有些CPU的主频更低,但运算效率却更高呢?

    为什么有些CPU的主频更低,但运算效率却更高呢? 比如:51单片机30M主频,STM32单片机20M主频,执行相同一段代码可能主频更低的STM32所花的时间更短。 这里就牵涉到CPU流水线的问题,本文围绕CPU流水线描述相关内容。 一、早期CPU流水线 1.流水线来源 流水线

    10-19
  • 究竟是什么让很多单片机的工作电压是5V?

    5V来自于TTL电平,5呢为True,0即为False,之后用了压降更低的PN节,衍生出了3.3这个电平。 12V和24V来自于汽车电瓶,早年乘用车又12V和24V两个系统,现在一般小型车12V,商用车24V,再究其由来应该是铅酸电池。 所以3v3和5v一般出现在信号电路或者单片机等vc

    10-19
  • 没想到,CRC校验原来这么简单

    由于公众号申请的时间比较晚,所以没有留言互动功能,最近公众号上线了读者讨论功能,和留言差不多,对本篇文章有什么感想的都可以到文章末尾留言评论。 目录 前言 CRC算法简介 CRC计算 CRC校验 CRC计算的C语言实现 CRC计算工具 总结 前言 最近的工作中,要实

    11-09
  • 解决串口传输“阻塞”问题的方案

    本文在探讨传统数据收发不足之后,介绍如何使用带FIFO的串口来减少接收中断次数,通过一种自定义通讯协议格式,给出帧打包方法;之后介绍一种特殊的串口数据发送方法,可在避免使用串口发送中断的情况下,提高系统的响应速度。 1.简介 串口由于使用简单,价格

    09-17
  • 嵌入式 Linux 的一切,看这一篇就够了!

    嵌入式Linux是什么 嵌入式Linux跟桌面Linux一样,是一个操作系统。从单片机走过来的童鞋往往习惯于直接控制寄存器,事必躬亲,从零开始实现想要的功能。而在嵌入式Linux的世界里,我们首先要抛弃这个思想,应把它作为最后没办法的办法。 就像我们想要在window

    09-11
  • 单片机高阻态与P0口上拉电阻讲解

    51单片机的时候对P0口必须加上上拉电阻,否则P0就是高阻态,对这个问题可能感到疑惑,为什么是高阻态?加上拉电阻?今天针对这一概念进行简单讲解。 在一个系统中或在一个整体中,我们往往定义了一些参考点,就像我们常常说的海平面,在单片中也是如此,我们

    09-01
  • 技术原理解读:小波变换

    记得我还在大四的时候,在申请出国和保研中犹豫了好一阵,骨子里的保守最后让我选择了先保研。当然后来也退学了,不过这是后话。当时保研就要找老板,实验室,自己运气还不错,进了一个在本校很牛逼的实验室干活路。我们实验室主要是搞图像的,实力在全国也是

    09-01
  • 数控加工刀具及工具系统:数控加工刀具

    点击蓝字关注我们 一、数控加工对刀具的要求 稳定可靠的切削性能, 很高的耐用度, 可靠的卷屑、 断屑和排屑能力, 高的加工精度和重复定位精度, 能实现刀具尺寸的预调、 快速换刀和自动换刀。 二、数控加工刀具的构成和分类  数控加工刀具一般应包括通用刀

    08-27
  • 螺纹刀具:丝锥和板牙

    一、丝锥 1.普通丝锥的结构 丝锥是加工内螺纹并能直接获得螺纹尺寸的标准螺纹刀具,它的基本结构是一个有轴向槽的外螺纹。  2.螺旋丝锥  螺旋丝锥可控制排屑方向: 加工通孔右旋螺纹用左旋槽丝锥,使切屑从孔底排出。 加工盲孔右旋螺纹用右旋槽丝锥,使切屑

    09-09
  • 单片机系统抗干扰,软件 VS 硬件哪个重要?

    在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。 1、软件抗干扰方法的研究 在工程实践中,软件抗干扰研究的内容主要是:一、消除模拟输入

    08-24
  • 大牛都是怎么学习STM32的?看完顿悟

    单片机用处这么广,尤其是STM32,这么火!如何快速上手学习呢? “不要去学STM32”。我不是说STM32不好,而是这种为了学习单片机而去学习单片机的思路不对。 你问,如何系统地入门学习stm32? 这本身就是一个错误的问题。假如你会使用8051 , 会写C语言,那么

    08-25
  • 史上最全Linux/C/C++思维导图

    申明:所有图片都源自网络素材,侵删。 这是收集的,并花大量时间整理的可说最全的Linux/C/C++思维导图。 有些图可能不是高清,但是放大即可看清楚。 linux思维导图 1、认识Linux 2、Linux命令 3、Linux学习路径 4、Linux 桌面介绍 FHS:文件系统目录标准 Linu

    08-20
下载排行榜
更多
广告