67|0

9

帖子

0

资源

一粒金砂(初级)

HC32L/F系列MCU原理与应用——CRC [复制链接]

本期主题
#CRC-16参数模型介绍
#CRC-32参数模型介绍
#CRC应用注意事项
#CRC软件算法基本原理及参考

CRC简介

更多信息咨询请联系angel.qi:13827489351(微信与手机号码同步)

CRC即循环冗余校验码(CyclicRedundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
本系列MCU内置CRC硬件算法,支持字节、半字、字三种位宽的数据填充方式,可方便快速实现数据的CRC编码及CRC校验。

 CRC-16参数模型
本系列MCU内置CRC-16算法特点如下:
-参数模型:CRC-16/X25(x16+ x12 + x5 + 1)
-宽度:16比特
-多项式简写:1021(以16进制表示)
-初始值:0xFFFFu(算法开始时寄存器的初始化预置值)
-输入数据反转:TRUE
-输出数据反转:TRUE
-结果异或值:0xFFFFu(计算结果与该数据进行异或)

 CRC-32参数模型
本系列MCU内置CRC-32算法特点如下:
-参数模型:CRC-32(x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 +x8 + x7 + x5 + x4 + x2 + x + 1)
-宽度:32比特
-多项式简写:04C11DB7(以16进制表示,忽略最高位的“1”)
-初始值:0xFFFFFFFFu(算法开始时寄存器的初始化预置值)
-输入数据反转:TRUE
-输出数据反转:TRUE
-结果异或值:0xFFFFFFFFu(计算结果与该数据进行异或)

常见CRC软件算法基本原理及参考设计
关于CRC的算法原理及具体实现不在本说明中赘述,以下简单列举常见的CRC-16软件算法基本方法步骤,供了解:
1.根据CRC16的标准选择初值;
2.将数据的第一个字节(初值)高8位异或;
3.判断最高位,若该位为 0 左移一位,若为 1 左移一位再与多项式Hex码异或;
4.重复3直至8位全部移位计算结束;
5.重复将所有输入数据操作完成以上步骤,所得16位数即16位CRC校验码;
具体实现中只需要根据具体的初值、反转、异或、参数模型等进行完善即可。

HC32系列CRC-16参考软件设计

CRC应用注意事项
考虑不同应用场景,本系列MCU内置硬件CRC的数据填充方式同时支持字节、半字和字。实际使用时可以根据通信数据特点灵活选用不同的写入方式,不同写入方式产生的CRC编码及校验结果相同,三种方式等效写入寄存器所对应的数据宽度及顺序参考如下示例:
        -8位宽度方式写入:0x00, 0x11, 0x22 , 0x33
        -16位宽度方式写入:0x1100, 0x3322
        -32位宽度方式写入:0x33221100
在不同的行业领域,根据CRC所使用的参数模型、多项式、初始值、异或值以及是否反转数据等的不同,实际应用中会产生多种CRC算法,在使用其他CRC设备和本系列MCU硬件通信校验时,必须选择和本系列MCU中硬件CRC参数模型等完全一致的CRC算法进行匹配。
 

此帖出自信息发布论坛

回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表