社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
CRC即循环冗余校验码(Cyclic Redundancy Check),是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
CRC算法参数模型解释:
NAME:参数模型名称。
WIDTH:宽度,即CRC比特数。
POLY:生成项的简写,以16进制表示。例如:CRC-32即是0x04C11DB7,忽略了最高位的"1",即完整的生成项是0x104C11DB7。
INIT:这是算法开始时寄存器(crc)的初始化预置值,十六进制表示。
REFIN:待测数据的每个字节是否按位反转,True或False。
REFOUT:在计算后之后,异或输出之前,整个数据是否按位反转,True或False。
XOROUT:计算结果与此参数异或后得到最终的CRC值。
常见CRC参数模型如下:
CRC算法名称 | 多项式公式 | 宽度 | 多项式 | 初始值 | 结果异或值 | 输入值反转 | 输出值反转 |
CRC-4/ITU | 4+x+1 | 4 | 03 | 00 | 00 | true | true |
CRC-5/EPC | 4+x3+1 | 5 | 09 | 09 | 00 | false | false |
CRC-5/ITU | 5+x4+x2+1 | 5 | 15 | 00 | 00 | true | true |
CRC-5/USB | 5+x2+1 | 5 | 05 | 1F | 1F | true | true |
CRC-6/ITU | 6+x+1 | 6 | 03 | 00 | 00 | true | true |
CRC-7/MMC | 7+x3+1 | 7 | 09 | 00 | 00 | false | false |
CRC-8 | 8+x2+x+1 | 8 | 07 | 00 | 00 | false | false |
CRC-8/ITU | 8+x2+x+1 | 8 | 07 | 00 | 55 | false | false |
CRC-8/ROHC | 8+x2+x+1 | 8 | 07 | FF | 00 | true | true |
CRC-8/MAXIM | 8+x5+x4+1 | 8 | 31 | 00 | 00 | true | true |
CRC-16/IBM | 16+x15+x2+1 | 16 | 8005 | 0000 | 0000 | true | true |
CRC-16/MAXIM | 16+x15+x2+1 | 16 | 8005 | 0000 | FFFF | true | true |
CRC-16/USB | 16+x15+x2+1 | 16 | 8005 | FFFF | FFFF | true | true |
CRC-16/MODBUS | 16+x15+x2+1 | 16 | 8005 | FFFF | 0000 | true | true |
CRC-16/CCITT | 16+x12+x5+1 | 16 | 1021 | 0000 | 0000 | true | true |
CRC-16/CCITT-FALSE | 16+x12+x5+1 | 16 | 1021 | FFFF | 0000 | false | false |
CRC-16/X25 | 16+x12+x5+1 | 16 | 1021 | FFFF | FFFF | true | true |
CRC-16/XMODEM | 16+x12+x5+1 | 16 | 1021 | 0000 | 0000 | false | false |
CRC-16/DNP | 16+x13+x12+x11+x10+x8+x6+x5+x2+1 | 16 | 3D65 | 0000 | FFFF | true | true |
CRC-32 | 32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1 | 32 | 04C11DB7 | FFFFFFFF | FFFFFFFF | true | true |
CRC-32/MPEG-2 | 32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1 | 32 | 04C11DB7 | FFFFFFFF | 00000000 | false | false |
1. 关闭 #define STM32_CRC 宏定义,计算结果和主流算法一致:0xcbf43926。
在线CRC计算:https://www.lammertbies.nl/comm/info/crc-calculation.html
2. 打开 #define STM32_CRC 宏定义,计算结果和STM32硬件算法一致:0x379e9f06。
STM32的CRC示例程序
3. C程序源代码
源码下载地址:https://download.csdn.net/download/kezunhb/10670548
免积分下载地址:https://www.etdev.net/thread-20-1-1.html
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!