- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第29卷 第8期 甘肃科技 If_29 No.8
2013年4月 GansuScienceandTechnol Ap 2013
循环冗余校验在单片机通信中的C语言的实现
张晓渝
(兰州理工大学 ,甘肃 兰州 730000)
摘 要:介绍了循环冗余校验 (CRC—CycleRedundancyCode)的原理以及用二进制无借位除法计算生成多项式为
CRC一16的CRC校验的方法,并给出了当发送一个字节和多个字节时的CRC校验C语言编程和流程图。循环冗余
校验是提高数字传输可靠性的一种有效的方法。
关键词:循环冗余校验;CRC;C语言;二进制除法
中图分类号:TP368TN911
在单片机数据通信过程中,数据信号完全暴露 CRC一32= +X26+ 2 +X22+X16+X12+ ¨+
在环境中,在传输过程中产生误码是不可避免的。 0+ 。+ ’+ + + + +1
由软件实现差错检测具有经济实用、方便可靠、不增 (4)
加硬件开销等优点。通常所用的差错检测法有:奇 采用式(2)作为生成多项式。
偶校验法、行列冗余校验法等。这些方法都是在数 1.2 CRC校验的数学模型
据信息后面增加冗余位,使冗余码与数据信息一起 CRC校验就是在传输数据信息后面用CRC余
发送出去,并在接受端对收到的数据信息进行处理, 数码作为校验码。在这个过程中最为关键的是余数
将结果与接收到的校验码进行比较。如果相同,传 码的生成。余数码是由传输数据序列左移k位 (k
输正确;否则认为传输错误。但是这些方法的冗余 是余数码的位数),然后用模 2除法除以生成多项
位仅能反映行与列的奇数位情况,对于行或列的偶 式序列所得的余数。其数学模型为:
数位错误不敏感,判漏的几率很高。而循环冗余校 设传输数据序列为 n位,用多项式表示为
验对奇数位错误和偶数位错误的发现率为 100%, G()。生成多项式p()为k+1位。
对于其他突发性错误的发现率为99.9%。因此,循 1)首先将传输数据左移k位,即G()乘以
环冗余校验法在单片机数据通信中具有广泛的应 作为被除数,其中k为余码的位数。
用。 2)将乘得的结果 X ·G()用生成多项式P
()去除。
1 CRC校验法的原理和数学模型 3)忽略其商,仅将所得余数 C()取出,则 c
1.1 CRC校验的原理 ()的系数对应的二进制序列就是要求的余数码
CRC校验法也是在数据信息后增加冗余位。 (即BCC)。
但在这种方式中,将所传数据看成是高次多项式,也 由以上过程可知:
称为位序列多项式 G()。将此多项式序列看成预 余数C()=MOD{[( ·G()]/P(x)} (5)
先规定的生成多项式P(X)(CheckingPolynomia1)去 最后将C()与XG()相加,形成(k+凡)位数
除,除法用模 2减法(无借位)实现。将其余数码作 据F(),即为带有 CRC校验码的预传送的数据序
为冗余码附加在被除数的尾部一并传送;在接收方, 列。
用同样的方法,得到的余码,与传送过来的余数码比 需要指出的是:1)在进行乘
文档评论(0)