CRC算法在单片机通信系统中的实现.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编c己嗍7第八届工业仪表与自动化学术会议 CRC算法在单片初通信系统中的实现 奏建新 路林考 【上海交通大学自动化系,上海200240) 摘要:主要论述了在单片机通信系统中CRC算法的设计和在单片机硬件环下的编程实现.为了实现单片机系统 之间高效元差错的数据传输,必须对数据进行检错,当传输距离较远或采用无线传输时,这就更为重要了.给出 了3种对应于51单片机硬件环境的C语言程序的算法,并从性能和成本上进行了比较。对按住计算CRC码的方 法给出了一种通用的算法. 关键词:CRC算法c语言线形编码生成多项式单片机 0 引言 在通信系统的众多检错手段中,CRC是非常著名的一种。cRc一全称循环冗余校验是对数据 块校验的一种高效的差错控制方法.在单片机通信系统设计过程中,当传输距离较远或是采用无 线传输时,为了保证高效而无错地传输数据,必须对数据进行检错,从性能和成本上考虑,采用 CRC校验算法远优于奇偶校验和算术和校验等方法。CRC的计算有两种方法,一种是采用专门的 硬件,另一种就是软件方法。对于小型低成本的5l单片机系统而言,常常需要在没有相关硬件 的支持下实现CRC校验,也即通过软件来完成CRC计算(CRC算法). 这里给出了3种算法,从性能和成本上考虑,它们的适用范围也稍有不同:第一种适用于单 片机程序存储空间较小但CRC计算速度要求不高的情况;第二种适用于程序存储空间较大且CRC 计算速度要求较高的情况;最后一种适用于程序存储空间不太大,且CRC计算速度要求适中的情 况。 ’ 。 1 0RC算法的原理 CRC校验主要是利用线形编码理论,基本思想是:在发送端,根据要传送的n位二进制数据 码,以一定的规则产生一个用来进行校验的r位校验码,即CRC码,把它附加在数据码后边,从 C码之间所 而形成一个新的(n+r)位二进制码序列并发送出去;在接收端,根据数据码和CR 遵循的规则进行校验,这样就可以确定数据在传送过程中是否出错了.假设n位二进制数据序列 D=[以以一。…Zdo】, 特定的关系,如果因为干扰而使数据出错了,这种特定的关系就会遭到破坏,因此通过检查这一 R 关系就可以实现对数据的正确性的校验.从检错能力来说,C C不能发现错误的概率可在 0.0047%以下. 校验码R是通过对数据序列D进行二进制除法取余运算得到的,即用一个生成多项式的(r +1)位二进制序列G=【g,g,-l…gl舒】来除,可以表示为 156 6f.c 第八届工业仪表与自动化学术会议 肌耻e[等】 二 Re[]表杀对括号内的式子进行取余运算。 式中,,D(x)表示数据序列左移r崔, ÷ f R 生成C C码的多项式通常采用: CRC-16:(美国二进制同步系统中采用)G(x)=z16+x15+x2+1 CRC-CCITT:(由欧洲CCITT推荐)G(x)=石16+石12+工5+1 CRC一32: 在这里我们主要讨论16位的CRC算法,生成多项式采用CRC—CCITT。 校验码的编码计算如上所述,而校验过程则是对M序列直接进行除法取余运算: 肌)-Re[筹】、. .(2) 所得余式R(x)若为零则表示数据正确,否则认为发生错误。用软件计算CRC码时,接收方可 以将接收到的信息码求CRC码,比较结果和接收到的CRC码是否相同。 CRC校验采用多项式编码方法,求CRC码采用的是模2加减法运算法则(不带进位借位的按 位加减法),实际上就是逻辑上的异或运算,乘法和除法运算与普通乘除法运算一样。 2求

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档