老铁们,大家好,相信还有很多朋友对于crc校验码计算器在线和CRC码的计算方法的相关问题不太懂,没关系,今天就由我来为大家分享分享crc校验码计算器在线以及CRC码的计算方法的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!本文目录CRC码的计
老铁们,大家好,相信还有很多朋友对于crc校验码计算器在线和CRC码的计算方法的相关问题不太懂,没关系,今天就由我来为大家分享分享crc校验码计算器在线以及CRC码的计算方法的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
本文目录
CRC码的计算方法
1、循环校验码(CRC码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。
2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。
例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。
modbus协议CRC校验计算方式该怎么计算
生成CRC的过程为:
1.将一个16位寄存器(称作CRC寄存器)初始赋值为十六进制FFFF(全1);
2.将报文的第一个字节(8位)与16位CRC寄存器的低字节异或,结果置于CRC寄存器;
3.将CRC寄存器右移1位(向LSB方向),MSB充零,并检测LSB:
4.(如果LSB为0):重复步骤3(另一次移位).
(如果LSB为1):对CRC寄存器异或多项式值0xA001(1010000000000001).
5.重复步骤3和4,直到完成8次移位操作后,一个字节的处理完毕。
6.对报文中的下一个字节重复步骤2到5继续此操作,直至所有报文被处理完毕。
7.CRC寄存器中的最终值为CRC值.
8.当放置CRC值于报文时,注意高低字节必须交换。
crc校验计算方法
在CRC计算时只用8个数据位,起始位及停止位,如有奇偶校验位也包括奇偶校验位,都不参与CRC计算。
CRC计算方法是:
1、加载一值为0XFFFF的16位寄存器,此寄存器为CRC寄存器。
2、把第一个8位二进制数据(即通讯信息帧的第一个字节)与16位的CRC寄存器的相异或,异或的结果仍存放于该CRC寄存器中。
3、把CRC寄存器的内容右移一位,用0填补最高位,并检测移出位是0还是1。4、如果移出位为零,则重复第三步(再次右移一位);如果移出位为1,CRC寄存器与0XA001进行异或。
5、重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理。
6、重复步骤2和5,进行通讯信息帧下一个字节的处理。
7、将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换
8、最后得到的CRC寄存器内容即为:CRC校验码。
CRC循环冗余校验码的计算
循环冗余校验码的计算方法:
编码原理:
现假设有:有效信息:M;
除数G(生成多项式)有:M/G=Q+R/G;
此时,可选择R作为校验位,则MR即为校验码。
校验原理:(M-R)/G=Q+0/G
说明:以接收到的校验码除以约定的除数,若余数为0,则可认为接收到的数据是正确的。
例:有效信息1101,生成多项式样1011
循环校验码解:
有效信息1101(k=4),即M(x)=x3+x2+x0,生成多项式1011(r+1=4,即r=3);
即G(x)=x3+x1+x0,M(x)·x3=x6+x5+x3,即1101000(对1101左移三位);
M(x)·x3/G(x)=1101000/1011=1111+001/1011即1010的CRC是:1101001。
计算图文如下:
Modbus RTU CRC校验详细步骤CRC值怎么计算
//参考如下C代码,ModbusRTUCRC!UINT16Crc16(UCHAR*pDatas,UCHARucLen){UINT16ui16Crc=0XFFFF;UCHARi;while(ucLen–){ui16Crc^=*pDatas++;for(i=0;i>=0x01;ui16Crc^=0xa001;//多项式}else{ui16Crc>>=0x01;}}}return(ui16Crc);}
如果你还想了解更多这方面的信息,记得收藏关注本站。
如若转载,请注明出处:https://www.gujiufaka.com/20942.html