CRC校验的理解和计算过程

CRC校验即循环冗余校验先介绍下模2运算模2加法与模2减法相同,类似于逻辑的异或运算。Input1Input2OutputABC110101011000CRC校验过程:①选定的除数二进制位数设为K位②要发送的原始数据帧二进制位数设为M位,在原始数据帧后面加上(K-1)位"0"③加了(K-1)位"0"的新数据帧(此...
摘要由CSDN通过智能技术生成

CRC校验

即循环冗余校验
循环冗余校验码(cyclie redundancy check)简称CRC(循环码),是一种能力相当强的检错、纠错码,并且实现编码和检码的电路比较简单,常用于串行传送(二进制位串沿一条信号线逐位传送)的辅助存储器与主机的数据通信和计算机网络中。
循环码是指通过某种数学运算实现有效信息与校验位之间的循环校验(而海明码是一种多重校验)。 [3]
这种编码基本思想是将要传送的信息M(X)表示为一个多项式L,用L除以一个预先确定的多项式G(X),得到的余式就是所需的循环冗余校验码。 这种校验又称多项式校验。
理论上可以证明循环冗余校验码的检错能力有以下特点:①可检测出所有奇数位错;②可检测出所有双比特的错;③可检测出所有小于、等于校验位长度的突发错。

参考百度百科的解释,推荐去看一看:
百度百科-循环冗余校验码

更为精炼的解释是:
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Modbus RTU是一种串行通信协议,用于在工业自动化领域中传输数据。CRC校验是一种常用的错误检测方法,用于验证数据的完整性。下面是计算Modbus RTU CRC校验的步骤: 1. 首先,将待发送的数据按字节拆分,并将每个字节转换为二进制形式。 2. 初始化一个16位的寄存器(初始值为0xFFFF)作为CRC寄存器。 3. 对每个字节进行以下操作: - 将字节与CRC寄存器的低8位进行异或运算。 - 对结果进行8次循环,每次循环右移一位。 - 如果结果的最低位为1,则将CRC寄存器与一个预定义的固定值(0xA001)进行异或运算。 - 否则,继续下一次循环。 4. 最后,CRC寄存器中的值即为计算得到的CRC校验。 下面是一个示例,以便更好地理解计算CRC校验过程: 假设待发送的数据为:0x01 0x03 0x00 0x00 0x00 0x02 1. 将每个字节转换为二进制形式: - 0x01 -> 00000001 - 0x03 - 0x00 -> 00000000 - 0x02 -> 00000010 2. 初始化CRC寄存器为0xFFFF。 3. 对每个字节进行操作: - 第一个字节:00000001 - 异或CRC寄存器的低8位:00000001 XOR 11111111 = 11111110 - 循环8次并进行相应的异或运算,最终得到:01011110 - 第二个字节:00000011 - 异或CRC寄存器的低8位:00000011 XOR 01011110 = 01011101 - 循环8次并进行相应的异或运算,最终得到:10101100 - 后续字节以此类推... 4. 最后,CRC寄存器中的值为:10101100,即为计算得到的CRC校验

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值