0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32的CRC外设如何设置

贸泽电子设计圈 来源:互联网 作者:佚名 2017-09-28 06:05 次阅读

前言

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值)

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2239

    文章

    10669

    浏览量

    348686
  • crc
    crc
    +关注

    关注

    0

    文章

    191

    浏览量

    29186
  • 数据处理
    +关注

    关注

    0

    文章

    506

    浏览量

    28246

原文标题:如何在IAR中配置CRC参数?讲的太详细了!

文章出处:【微信号:Mouser-Community,微信公众号:贸泽电子设计圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何为STM32编程节省代码空间?在IAR中配置CRC参数有窍门

    基于STM32芯片IAR环境下的CRC配置。STM32全系列产品都具有CRC外设,对CRC的计算
    的头像 发表于 09-06 17:38 1.3w次阅读

    上位机要外设工作需要设置什么内容?

    本帖最后由 eehome 于 2013-1-5 09:58 编辑 已知:上位机选用stm32f103vet6;外设是串口接口,且有外设有固件,波特率是9600 16bit CRC
    发表于 12-27 12:30

    STM32外设地址的怎么设置

    网上找的资料。大家对于设置外设地址有疑问的可以这边看看。STM32外设地址的设置.doc (365 KB )
    发表于 08-21 08:00

    CRC原理应用及STM32硬件CRC外设

    图说CRC原理应用及STM32硬件CRC外设
    发表于 01-22 07:07

    STM32 硬件CRC和软件CRC速度谁快

    一、测试条件硬件: STM32L432KC 主频: 80MHz 编译器: IAR 8.20.1 编译选项: High Speed no size constraints CRC 生成多项式
    发表于 08-11 06:35

    如何使用STM32CubeMX配置STM32L431RCT6的硬件CRC外设校验数据

    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件CRC外设校验数据,并用SHT30温湿度传感器为例检查是否可以正确校验。1. 准备工作硬件准备硬件准备
    发表于 02-14 06:09

    如何使用STM32CubeMX配置STM32L431RCT6的硬件CRC外设校验数据呢

    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件CRC外设校验数据,并用SHT30温湿度传感器为例检查是否可以正确校验。
    发表于 02-14 07:39

    STM32469I_EVAL-CRC

    单片机开发板STM32469I_EVAL的开发例程CRC
    发表于 06-03 15:48 3次下载

    CRC—冗余校验

    程序简介 -工程名称:ChipID芯片ID -实验平台: 秉火STM32 F429 开发板 -MDK版本:5.16 -ST固件库版本:1.5.1 【 !】功能简介: 利用STM32 CRC外设
    发表于 12-13 15:39 5次下载

    STM32之软件CRC和硬件CRC速度测试

    软件提前生成CRC表,用于查询。分别使用软件CRC算法和硬件CRC外设对一个缓存进行计算,目的是从该缓存中找到同步头。同步头共11字节,前两个字节为后九个字节的
    发表于 05-09 11:45 6145次阅读
    <b class='flag-5'>STM32</b>之软件<b class='flag-5'>CRC</b>和硬件<b class='flag-5'>CRC</b>速度测试

    CRC校验 、STM32CRC计算单元、 CRC应用

    CRC校验、STM32CRC计算单元、CRC应用
    的头像 发表于 03-04 13:54 5367次阅读

    关于STM32F4xx的硬件CRC32校验

    关于STM32F4xx的硬件CRC32校验一、概述前段时间由于项目所需,要对MCU上某些数据进行CRC32校验,MCU选用的是STM32F4系列,以前看到过
    发表于 12-03 15:51 19次下载
    关于<b class='flag-5'>STM32</b>F4xx的硬件<b class='flag-5'>CRC</b>32校验

    AN4187 在STM32系列中CRC外设的使用方法

    AN4187 在STM32系列中CRC外设的使用方法
    发表于 11-21 17:07 1次下载
    AN4187 在<b class='flag-5'>STM32</b>系列中<b class='flag-5'>CRC</b><b class='flag-5'>外设</b>的使用方法

    STM32系列中使用CRC外设

    电子发烧友网站提供《在STM32系列中使用CRC外设.pdf》资料免费下载
    发表于 08-01 09:23 0次下载
    在<b class='flag-5'>STM32</b>系列中使用<b class='flag-5'>CRC</b><b class='flag-5'>外设</b>

    STM32 CRC使用详解

    电子发烧友网站提供《STM32 CRC使用详解.pdf》资料免费下载
    发表于 09-19 14:58 3次下载
    <b class='flag-5'>STM32</b> <b class='flag-5'>CRC</b>使用详解