DS18B20ROM编码搜索算法.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DS18B20 ROM编码的搜索温度传感器均挂与单线总线上,对单线总线上的DS18B20正确寻址是其正常地测量温度决条件,而识别ROM编码是对单线总线上的DS18B20正确寻址唯一方法。所以对单线总线上的DS18B20 ROM编码搜索与识别是必须的。 “单线总线”通信协议 “单线总线”是一种在一条总线(这条总线只有一条口线)具有单主机多从机的总线系统,在“单线总线”可挂多个从机系统。为了不引起逻辑上的冲突,所有从机系统“单线总线”接口都是漏极开路的,多个从机系统输出信号在总线上实现线与。因此在使用时必须对总线外加上拉电阻。 为保证数据的完整性,所有的单线总线器件都要遵循严格的通信协议。“单线总线”通信协议定义了复位脉冲、应答脉冲、写时序和读时序等几种信号类型(具体的时序参考3.1节,这里不再做具体介绍)。所有的单总线命令序列(如初始化,ROM命令,RAM命令)都是由这些基本的信号类型组成的。在这些信号中,除了应答脉冲外,其它均由主机发出,并且发送的所有命令和数据都是字节的低位在前。DS18B20 ROM搜索命令 当单线总线上挂有多个DS18B20时,系统对总线上器件的数量和每个器件的ROM的识别与搜索是通过DS18B20 ROM搜索命令与算法配合来实现的。下面具体介绍ROM搜索命令的工作过程。对64位ROM编码识别从最低位开始, ROM编码的每一位搜索过程可总结为“两读一写”:读一位,读该位补码,写一位。总线主机在ROM编码每一位上完成这三步就可以获得一个器件的ROM编码。 ① “两读” 总线主机发布ROM搜索命令后执行一次读,总线上所有器件就把它们各自ROM编码的第一位放到总线来做做出响应。这次读获得的数据是所有器件放在总线上数据的“与”。再执行一次读,因为ROM搜索命令正在执行所以总线上所有器件把各自ROM编码的第一位的补码放在总线上,第二次读获得的数据也是所有器件放在总线上数据的“与”。对第一位的“两读”就此完成。之后主机再次进行的“两读”则是针对ROM编码的第二位,以此类推。从“两读”获得的数据有以下解释,见表3-1 表3-1 “两读”获得的数据解释 “两读”数据 “两读”数据解释 00 有器件在总线上,总线上所有器件在此数据位上发生冲突 01 有器件在总线上,总线上所有器件在此数据位均为0 10 有器件在总线上,总线上所有器件在此数据位均为1 11 没有有器件在总线上 ② “一写” 对ROM编码的某一位“两读”之后对该位进行“一写”操作。“一写”操作写的数据则要根据“两读”获得的数据来确定,如果“两读”数据为00则表示总线上器件在该位上数据发生冲突,“一写”写的数据此种情况下具有“排除”的作用,如果器件ROM编码在该位上的数据与“一写”写的数据相同则继续保持与总线的联系。如果不相同则此器件从总线上“排除”,不再响应主机发布的命令,直到主机进行下一次复位。如果“两读”数据为01则表示总线上所有器件在该位上均位0,为保持器件与总线的联系“一写”操作主机应写0 。同理为“两读”数据为10主机则应写1。 DS18B20 ROM编码的搜索算法 在一条“单线总线”上的挂有多片DS18B20情况下,对ROM编码的搜索与识别主要是通过“两读”数据为00时 “一写”操作的“排除”作用来实现的。多次“排除”作用后就可以使总线上只剩下唯一的一个器件仍与总线保持联系。如何“排除”这需要算法的配合。下面具体介绍DS18B20 ROM编码的搜索算法。 先确立几个定义:对 “两读”数据为00的ROM编码位,之后“一写”操作主机要写的数据定义为“00写位”;所有00写位的集合定义为“00写位组”。那么搜索算法所要解决的问题就是:确立一个00写位组,确保搜索命令能够搜索到一个唯一的ROM编码,并在完成一次搜索后对00写位组做出更新以确保下次的搜索命令能够搜索到一个唯一的ROM编码并且不会搜索到已经搜索到的ROM编码,直到完成总线上所有的器件的ROM编码搜索。 在给出搜索算法规则前再确立几个定义:00写位组中最高ROM编码位对应的00写位定义为“最高00写位”;00写位组中邻近最高00写位的00写位定义位“次高00写位”;如果更新后的00写位组不足以搜索到一个唯一的ROM编码,则添加新的00写位,这个新的00写位定义位“新00写位”。 DS18B20 ROM编码的搜索算法规则: 第一次搜索确立一个00写位组,其中所有00写位全部为0。 每次搜索后更新00写位组并从最高00写位开始更新。 00写位组更新规则:如果最高00写位为0则改最高00写位为1,更新完成。如果最高00写位为1则弃去最高00写位并把次高00写位作为新的最高00写位。 如果出现新00写位,新00写位一律为0并作为新的最高00写位。 如果0写位组全为1则搜索所有器件的ROM编码

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档