CRC算法

CRC校验实现的过程说明

(2012-05-16 02:42:04)
标签:

modbus通讯

 

 

对于CRC16校验的算法,我为了方便初学者能直观的了解其计算过程,最近有点时间,特将《从MODBUS到透明就储》中的例子直观的用表格说明的方式把它描述出来,让读者一看就明白。供大家学习参考。
多项式CRC16=16x+15x+2x+1(0XA001-RTU标准),假设计算的数是:02,07.
    
         
  说明MSBLSBLSB移出 
这两行异或 CRC初始化:1111111111111111  
  数据:020000000000000010  
  XOR第一个字符=1111111111111101  
这两行异或移位1右移1位01111111111111101 
  多项式1010000000000001  
  XOR=1101111111111111  
这两行异或移位2右移1位01101111111111111 
  多项式1010000000000001  
  XOR=1100111111111110  
 移位3右移1位01100111111111110 
      检测LSB移出位,如果是0则不异或再右移1位
这两行异或移位4右移1位00110011111111111 
  多项式1010000000000001  
  XOR=1001001111111110  
 移位5 01001001111111110 
这两行异或移位6 00100100111111111 
  多项式1010000000000001  
  XOR=1000010011111110  
 移位7 01000010011111110 
这两行异或移位8 00100001001111111 
  多项式1010000000000001  
  XOR=1000000100111110  
第一个数据:02处理完毕  
下面处理第二个数据:07,将CRC寄存器中处理好的数据与07异或
这两行异或  1000000100111110  
  070000000000000111  
  XOR=1000000100111001  
这两行异或移位1 01000000100111001 
  多项式1010000000000001  
  XOR=1100000010011101  
  ......      
         
  运算同02的数据处理,其结果是:    
   0001001001000001则该帧数据的CRC16为:4112
       

读者可以用CRC软件(可用曾子琪的多功能串口调试软件进行计算)校验下该CRC码的正确性,然后自己依据上述表格中的格式去计算,这样对整个过程就明白了。也就明白CRC怎么校验一组数据的了

转载于:https://www.cnblogs.com/CJye/archive/2013/05/28/3103556.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值