一、CRC计算过程概述
- 对于每一种CRC校验,都有一个生成多项式,如CRC-8校验,
ploy=x8+x2+x1+1,
无论哪一种CRC校验,其最高指数位和最低指数位的因数都是1.
用一段二进制数表示上式:1_0000_0111,由于CRC计算时最高位1与seed最高位计算时钟为0,会自动消去,因此一般把对高位舍去,写成0x07,但是手动计算时还是要把这个1加上。 - 对于待校验的数据seed,先在其后面部k个0(k为生成多项式的最高次幂),然后将得到的数据和生成多项式异或,直到除尽,舍去商,得到的余数(位宽等于生成多项式的最高次幂)加在seed后面即为CRC校验值。接收端再根据接收到的数据进行校验,结果为0表示结果正确。
如:ploy=0x17(即x8+x2+x1+1);seed=0x96;
step1:补0 0x96后补8个0得到0x9600;
step2:模除(按位进行异或)
step3:将EB拼接到原始数据:0X96EB。 - 此外还应注意的时CRC有很多标准的计算格式,其中的一些参数有如下含义:
REFIN:输入数据反转,将输入的数据按照字节内反转。比如输入0x05