最详细易懂的 CRC-16 校验原理(附源程序)
1、循环校验码(CRC 码):
是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任
意选定。
2、生成 CRC 码的基本原理:
任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。
例如:代码 1010111 对应的多项式为 x
6
+x
4
+x
2
+x+1,而多项式为 x
5
+x
3
+x
2
+x+1 对应的代
码 101111。
标准 CRC 生成多项式如下表:
名称WWWWWWWWWW生成多项式WWWWWWWWWWWWWW简记式* 标准引用
CRC-4 x4+x+1 3 ITU G.704
CRC-8 x8+x5+x4+1 0x31
CRC-8 x8+x2+x1+1 0x07
CRC-8 x8+x6+x4+x3+x2+x1 0x5E
CRC-12 x12+x11+x3+x+1 80F
CRC-16 x16+x15+x2+1 8005 IBM SDLC
CRC16-CCITT x16+x12+x5+1 1021ISO HDLC, ITU X.25, V.34/V.41/V.42, PPP-FCS
CRC-32 x32+x26+x23+...+x2+x+1 04C11DB7 ZIP, RAR, IEEE 802 LAN/FDDI, IEEE
1394, PPP-FCS
CRC-32c x32+x28+x27+...+x8+x6+1 1EDC6F41 SCTP
3、CRC-16 校验码的使用:
现选择最常用的 CRC-16 校验,说明它的使用方法。
根据 Modbus 协议,常规 485 通讯的信息发送形式如下:
地址WW功能码WWW数据信息WW校验码
1byte 1byte nbyte2byte
CRC 校验是前面几段数据内容的校验值,为一个 16 位数据,发送时,低 8 位在前,高 8
为最后。
例如:信息字段代码为: 1011001,校验字段为:1010。
发送方:发出的传输字段为:1 0 1 1 0 0 1 1 0 10
信息字段WWWWWWW校验字段