×

逆序CRC编解码算法及在DS18B20中的应用

消耗积分:10 | 格式:rar | 大小:210 | 2009-07-30

百灵千岛酱

分享资料个

循环冗余校验CRC 码是检错与纠错能力极强的线性分组码,在通信与测
控领域应用广泛。本文提出了逆序CRC 信息单元编码算法,即以包含若干位的信
息块为单元计算CRC 的方法,进行了详细的数学推导,给出了编码算法流程图。
分析了CRC 的解码算法并给出了解码算法流程图。在讨论了DS18B20 的CRC 程
序流程图的基础上,给出了在keil μVision8.08a 环境下调试通过的KeilC51 程序。
在数据通信中,由于信道存在着干扰,可能会使所传递的信息出现差错,为了
让信宿知道所收信息的正确性,就要有一种检验信息正确与否的规则。循环冗余校
验CRC(Cyclic Redundancy Check)是常用的检纠错能力极强的一种规则。理论证明,
r 阶CRC 能够检验出全部的奇数位错、全部二位错、全部长度小于或等于r 位的
突发错[1]。有关CRC 正序算法的分析可参见文献[2][3],本文分析逆序CRC 算法。
所谓逆序CRC 算法就是把原生成多项式的反转作为计算逆序CRC 码的生成多项
式,从低字节低位计算CRC 码的算法,即是从右端到左端计算CRC 码的算法。
DS18B20 温度传感器是由DALLAS 公司生产的一线式数字温度传感器。CPU
只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大
量的引线和逻辑电路[4][5]。DS18B20 中CRC 码的计算是按逆序进行的,而且主要
有两处用到CRC。一是DS18B20 的8 字节的序列号,最后一个字节是前面7 个字
节的CRC 码,这是为了保证序列号的唯一性与正确性。另一个是在DS18B20 内部
9 字节的高速温度存储器,其第9 字节是前面8 个字节的CRC 检验码,这是为了
保证温度数据传输的正确性。
本文首先提出了逆序 CRC 信息单元编码算法,即以包含若干位的信息块为单
2位从右到左计算CRC 的方法,进行了详细地数学推导,给出了算法流程图。接着
分析了CRC 的解码算法并给出了算法流程图。最后在讨论了DS18B20 的CRC 算
法流程图的基础上,给出了在keil μVision8.08a 环境下调试通过的KeilC51 程序。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !