通用CRC32校验程序,可完美匹配STM32硬件CRC算法 - Go语言中文社区

通用CRC32校验程序,可完美匹配STM32硬件CRC算法


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

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/kezunhb/article/details/82729696
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-14 08:03:58
  • 阅读 ( 1593 )
  • 分类:算法

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢