原创 CRC算法分析&源码

2008-10-13 23:03 4414 4 5 分类: 软件与OS

      CRC校验用于通讯过程中,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的n位CRC码,并附在信息后边,构成一个新的二进制码序列(共k+n位)发送出去。在接收端,则根据信息码和CRC码之间所遵循的规则进行校验,以确定传送过程中是否出错。


      n位CRC码产生的规则是先将要发送的二进制序列M(x)左移n位,然后再除以一个n+1位的多项式G(x),最后得到的n位的余数R(x)即是CRC校验码。


      不同位数的CRC采用的G(x)取值如下:
      1)CRC4 = X4 + X + 1
      2)CRC8 = X8 + X5 + X4 + 1
      3)CRC12 = X12 + X11 + X3 + X2 + 1
      4)CRC16 = X16 + X15 + X2 + 1 (美国)
      5)CRC-CCITT = X16 + X12 + X5 + 1 (欧洲)
      6)CRC32 = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X1 + 1


      在接收端,将收到的数据除以G(x),若余数为0则表明校验正确,然后将收到的数据右移n位得到的值就是原始数据。


      在计算CRC码的除法运算中,采用的是模2除(按位除)而不是算术除。因此,加法和减法的运算结果是一样的。


      常用CRC16计算方法:
      1)按位计算CRC
      本位后的CRC码等于上一位CRC码乘以2后除以多项式(G(x)去除最高位),所得的余数再加上本位值除以多项式所得的余数。


      2)按字节计算CRC
      本字节后的CRC码等于上一字节余式CRC码的低8位左移8位后,再加上上一字节CRC右移8位(即取高8位)和本字节之和所求得的CRC码。


      3)按半字计算CRC
      本字节后的CRC 码等于上一字节CRC码的低12 位左移4位后,再加上上一字节余式CRC右移4位(即取高4位)和本字节之和后所求得的CRC码。


      采用三种方法实现的CRC16(CCITT)源码:


      https://static.assets-stash.eet-china.com/album/old-resources/2008/10/14/309bc57a-82dc-4aaf-b381-af73926af9c1.rar

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户182075 2008-12-11 23:21

用上了,谢谢,多谢了
相关推荐阅读
用户171132 2009-04-11 15:39
Curve to Data V0.92
此软件实现了将图片中的曲线转换成数据的功能。使用方法:1.打开图片文件 2.双击曲线,选中曲线颜色 3.识别曲线范围识别完成手动调整待转换区域 4.开始转换设置参数 5.转换完成,数据存于ctod.t...
用户171132 2009-01-14 23:14
PI控制器电路设计
PID是一个经典的控制律,被广泛应用于各种控制系统中。PID控制器可以用模拟电路来实现,也可以用数字算法来实现。实际应用中,PI控制相对于PD或PID控制用的更多一些。<?xml:namespa...
用户171132 2009-01-11 11:38
AVR ISP下载器资料
1.       并口下载器<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:names...
用户171132 2009-01-05 22:04
ByteBlasterII DIY
      ByteBlasterII下载电缆适用于ALTERA CPLD/FPGA芯片配置文件的下载,支持多种下载模式和多个系列的芯片。           Altera 官方资料:http://w...
用户171132 2008-11-26 22:27
USB接口锂电池充电器设计
BQ2057是一款TI公司生产的锂电池充电控制芯片,通过它可以方便的设计锂电池充电器。BQ2057的管脚定义如下:<?xml:namespace prefix = v ns = "urn:sch...
用户171132 2008-10-18 12:17
Window CE 驱动开发流程
以Windows CE.net系统、S3C2410平台为例:一.中断添加1.要使用中断必须先注册中断       X:\WINCE420\PLATFORM\SMDK2410\INC\oalintr.h...
EE直播间
更多
我要评论
1
4
关闭 站长推荐上一条 /3 下一条