网站大量收购独家精品文档,联系QQ:2885784924

理解和运用MaximiButton产品中的循环冗余校验(CRC)..doc

理解和运用MaximiButton产品中的循环冗余校验(CRC)..doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
理解和运用MaximiButton产品中的循环冗余校验(CRC).

摘要:全部1-Wire?器件,包括iButton?器件,都具有唯一的8字节注册码,储存在只读存储器(ROM)中。该注册码在1-Wire总线上用作唯一的网络地址。为确保数据通信的完整性,每个注册码的一个字节是一个DOW CRC字节。本篇应用笔记说明了8位DOW CRC的计算方法以及用于验证器件存储器记录的16位CRC的计算。DOW CRC和CRC-16还会在选择1-Wire器件验证数据的硬件中产生。 引言 Maxim的iButton系列产品是通过单线按照1-Wire协议传送特定命令序列,进行数据通信。该系列产品都有个很重要的特性,就是在出厂前每个器件都被写入了唯一的8字节ROM码。其ROM码组成如图1所示,最低有效字节为家族代码,代表iButton器件的类型,如:DS1990A的家族码为01,DS1991的家族码为02。由于在同一条1-Wire总线上可同时挂接多个相同系列或不同系列的1-Wire器件,因此主机必须能够决定如何正确地访问位于1-Wire总线上的各个器件,这一点尤为重要。家族码提供器件的类型,随后的6个字节是器件的唯一序列号,用以区分同一个系列的不同器件。该序列号可作为1-Wire总线上器件的“地址”,这样1-Wire总线上的所有器件连同主机就构成了一个微型局域网(MicroLAN),它们之间通过一条公共线来进行通信。1-Wire器件ROM码的最高有效字节是循环冗余校验(CRC)码,该值基于前面的7个字节数据。当系统主机开始与某个器件进行通信时,可以读取8个ROM字节,低位在前。如果主机计算出的CRC码与ROM数据本身所含的CRC码相同,则通信有效;反之,则表明有错误发生,需重新读取器件的ROM码。 图1. 采用DOW CRC的iButton系统配置 有些iButton器件除了8字节ROM外,还具有高达8kB的RAM,主机可以通过适当的命令进行访问。即使iButton器件本身不带CRC硬件电路,如果主机具有为ROM码计算CRC值的能力,就可以采用CRC技术,开发一个访问器件RAM部分的子程序。数据按正常模式写入器件,主机将计算出的CRC结果附在数据后面,与数据一起保存。当从iButton器件读入数据时,则执行相反的过程。主机将计算出的CRC值与存储器中存储的CRC进行比较,如果相同,则认为从iButton接收的数据有效。为了充分利用CRC来验证1-Wire总线上进行的串行通信的有效性,用户有必要了解一下CRC的概念和工作原理。此外,无论是基于硬件实现还是软件实现,还需要掌握通过主机计算CRC的实用计算方法。 背景知识 有多种串行数据的检错方法,一种常用的方法是在被检测的数据包中包含一个附加位,用于指示是否出错。如:对于8位ASCII字符来说,可在其ASCII字符串后添加一位用于检错。假设数据可以附加第9位,使数据中1的位数为奇数个。这样,应该附加1,数据包就变为:111010001,其中带下划线的字符为所要求的奇偶校验位,使全部9位数据中1的位数为奇数。如果收到的数据为:111010001,则认为接收到的信息有效;但是,若收到的数据为:111010101,即左边第七位接收错误,此时数据中1的个数就不再是奇数,则表明发生了错误,进而采取相应的措施,这种校验方法称作奇校验。与之类似,如果要求数据中1的个数总为偶数,则称为偶检验。但是这种检验方式有其局限性,它只能检查出数据中的奇数个错误。在上例中,如果收到的数据为:111011101,其中从左边数第6位和第7位都是错的,但此时奇偶检测结果却是正确的。对于这类错误,因此无论采用奇校验还是偶校验,都不能够检测出来。 详述 Maxim 1-Wire器件的CRC 在串行数据流中发现错误的最有效检错方案是循环冗余校验(CRC),并且所要求的硬件最少。这里主要介绍Maxim器件的CRC校验的工作及特性,暂不涉及详细的数学定义和描述。包含在CRC特性之后的数学概念在参考资料中进行了详细介绍。由于CRC实际上是由硬件实现,因此很容易理解CRC功能,通常CRC表示为带反馈的移位寄存器,如图2所示。另一种方式,也可将CRC看成是变量X的多项式,每一项的系数为二进制数,这些系数与移位寄存器的反馈通道直接对应。硬件方案中的移位寄存器的阶数,或多项式中的最高幂次就是将要计算CRC的位数。通常数字通信中使用的CRC编码方式有CRC-16和CRC-CCITT,它们产生的CRC码都为16位。Maxim的1-Wire CRC (DOW CRC)的位数是8位,用于1-Wire器件的64位ROM码的检错,该ROM码包括:最低有效字部分的8位家族码、与最低有效字节紧挨着的6字节48位唯一序列号、位于最高有效字节是前56位ROM码所计算出的CRC校验码。图2中,异或门构成的反馈路径

文档评论(0)

v4v5v4I + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档