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
<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://download.csdn.net/download/kezunhb/10670548>
免积分下载地址:https://www.etdev.net/thread-20-1-1.html
<https://www.etdev.net/thread-20-1-1.html>
热门工具 换一换