通讯协议里crc效验

网上有关“通讯协议里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效验 ”这个话题的介绍 ,今天小编就给大家分享完了 ,如果对你有所帮助请保持对本站的关注!

(52)

猜你喜欢

发表回复

本站作者才能评论

评论列表(3条)

  • 凡筠的头像
    凡筠 2025年11月24日

    我是乐信号的签约作者“凡筠”

  • 凡筠
    凡筠 2025年11月24日

    本文概览:网上有关“通讯协议里crc效验”话题很是火热,小编也是针对通讯协议里crc效验寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。您说的这是...

  • 凡筠
    用户112407 2025年11月24日

    文章不错《通讯协议里crc效验》内容很有帮助

联系我们:

邮件:乐信号@gmail.com

工作时间:周一至周五,9:30-17:30,节假日休息

关注微信