网上有关“通讯协议里crc效验”话题很是火热,小编也是针对通讯协议里crc效验寻找了一些与之相关的一些信息进行分析 ,如果能碰巧解决你现在面临的问题,希望能够帮助到您 。
您说的这是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 (1010 0000 0000 0001).
5. 重复步骤 3 和 4,直到完成 8 次移位操作后 ,一个字节的处理完毕。
6. 对报文中的下一个字节重复步骤 2 到 5继续此操作,直至所有报文被处理完毕 。
7. CRC 寄存器中的最终值为 CRC 值.
8. 当放置 CRC 值于报文时,注意高低字节必须交换。
crc校验码的计算方法:
1、循环校验码(CRC码):是数据通信领域中最常用的一种差错校验码 ,其特征是信息字段和校验字段的长度可以任意选定。
2 、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。
例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111 。
注意事项
是接受方和发送方的一个约定,也就是一个二进制数 ,在整个传输过程中,这个数始终保持不变。
在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接收方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置 。
应满足以下条件:
1、生成多项式的最高位和最低位必须为1。
2、当被传送信息(CRC码)任何一位发生错误时 ,被生成多项式做除后应该使余数不为0。
3 、不同位发生错误时,应该使余数不同 。
4、对余数继续做除,应使余数循环。
关于“通讯协议里crc效验 ”这个话题的介绍 ,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
评论列表(3条)
我是乐信号的签约作者“凡筠”
本文概览:网上有关“通讯协议里crc效验”话题很是火热,小编也是针对通讯协议里crc效验寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。您说的这是...
文章不错《通讯协议里crc效验》内容很有帮助