最详细易懂的CRC-16校验原理(附源程序).docx

最详细易懂的CRC-16校验原理(附源程序).docx

ID:55250160

大小:14.12 KB

页数:6页

时间:2020-05-07

最详细易懂的CRC-16校验原理(附源程序).docx_第1页
最详细易懂的CRC-16校验原理(附源程序).docx_第2页
最详细易懂的CRC-16校验原理(附源程序).docx_第3页
最详细易懂的CRC-16校验原理(附源程序).docx_第4页
最详细易懂的CRC-16校验原理(附源程序).docx_第5页
资源描述:

《最详细易懂的CRC-16校验原理(附源程序).docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、最详细易懂的CRC-16校验原理(附源程序)1、循环校验码(CRC码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码。标准CRC生成多项式如下表:  名称         生成多项式             简记式*  标准引用  CRC-4        x4+x+1                 3        ITUG.704  C

2、RC-8        x8+x5+x4+1             0x31                     CRC-8        x8+x2+x1+1             0x07                     CRC-8        x8+x6+x4+x3+x2+x1      0x5E  CRC-12       x12+x11+x3+x+1         80F   CRC-16       x16+x15+x2+1           8005     IBMSDLCCRC16-CCITT x16+x12+x5+1  1021   ISOHDLC

3、,ITUX.25,V.34/V.41/V.42,PPP-FCS  CRC-32     x32+x26+x23+...+x2+x+104C11DB7ZIP,RAR,IEEE802LAN/FDDI,IEEE1394,PPP-FCS  CRC-32c    x32+x28+x27+...+x8+x6+11EDC6F41    SCTP3、CRC-16校验码的使用:    现选择最常用的CRC-16校验,说明它的使用方法。根据Modbus协议,常规485通讯的信息发送形式如下:  地址 功能码  数据信息 校验码  1byte  1byte  nbyte    2byte  CRC校验是前面几

4、段数据内容的校验值,为一个16位数据,发送时,低8位在前,高8为最后。例如:信息字段代码为:,校验字段为:1010。发送方:发出的传输字段为:  10110011010                          信息字段      校验字段接收方:使用相同的计算方法计算出信息字段的校验码,对比接收到的实际校验码,如果相等及信息正确,不相等则信息错误;或者将接受到的所有信息除多项式,如果能够除尽,则信息正确。4、CRC-16校验码计算方法:常用查表法和计算法。计算方法一般都是:(1)、预置1个16位的寄存器为十六进制FFFF(即全为1),称此寄存器为CRC寄存器;(2)、把第一个8

5、位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低      8位相异或,把结果放于CRC寄存器,高八位数据不变;(3)、把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位;(4)、如果移出位为0:重复第3步(再次右移一位);如果移出位为1,CRC寄存器与多   项式A001(1010 0000 0000 0001)进行异或;(5)、重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;(6)、重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;(7)、将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低      

6、字节进行交换;(8)、最后得到的CRC寄存器内容即为:CRC码。以上计算步骤中的多项式A001是8005按位颠倒后的结果。查表法是将移位异或的计算结果做成了一个表,就是将0~256放入一个长度为16位的寄存器中的低八位,高八位填充0,然后将该寄存器与多项式0XA001按照上述3、4步骤,直到八位全部移出,最后寄存器中的值就是表格中的数据,高八位、低八位分别单独一个表。 5、提供两个经典的程序示例(皆验证通过)(1)     C查表法版本:    特点:速度快,语句少,但表格占用一定的程序空间。 *pucFrame为待校验数据首地址,usLen为待校验数据长度。返回值为校验结果。USHOR

7、TusMBCRC16(UCHAR*pucFrame,USHORTusLen){   UCHARucCRCHi=0xFF;   UCHARucCRCLo=0xFF;   intiIndex;   while(usLen--)   {       iIndex=ucCRCLo^*(pucFrame++);       ucCRCLo=(UCHAR)(ucCRCHi^aucCRCHi[iIndex]);       ucCRCHi=auc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。