4,390
社区成员
发帖
与我相关
我的任务
分享

其中:1、X8*D(X)意思是将D(X)左移8位,为什么要左移8位呢?因为要求8位的CRC校验码,所以要在D(x)后补上8个00000000然后再
做模 2除法
2、方程式中+Xn+Xn+1+……Xn+7什么意思呢?n到n+7刚好8bit,Xn+Xn+1+……Xn+7代表的意思是111111110000.......0(n+7代表最高位数据),所以+Xn+Xn+1+……Xn+7就是给左移8位后的D(x)模2加上一个11111111......0(0xFF0000......0)就是第一个问题中所说的初始值0xFF。(为什么是n到n+7呢?因为原始数据为 n bit,在其后加上8个0后数据长度变成了n+8,所以最高数据为n+7)
第三个问题:
以计算 F2 01 83的CRC校验码为例:
首先 F2 01 83左移8位,即:0xF2018300 二进制:11110010000000011000001100000000
其次模2加上一个初始值: 0xFF000000 二进制:11111111000000000000000000000000
得到的结果: 00001101000000011000001100000000
再用这个得到数字模2除以P(X),即X8+X4+X3+X2+1 = 100011101
所得余数为:11001000
RX为对上述余数取反,即00110111(0x37),等于SAE J1850协议中举例表中的值0x37