引 言
Dalias公司推出的数字化温度传感器I)S18820的独特的“单线总线”,可以使用户方便地使用多片I)S18820构成多点温度测量系统,因此如何准确、有效地对挂在同一条单线总线上的多片Dsl8820 ROM编码进行搜索与识别成为系统设计的一个核心问题。用DSl8820的ROM操作命令Read ROM[33h]依次读取单线总线上的唯一一个ROM编码,然后存放在外部扩展的EEPROM存储器,再用MatchROM[55h]命令匹配识别可以解决这个问题。这种方法的优点在于简单、不需要复杂的算法,但是实际使用中不够灵活,对于一个探测单元有多个不可分离的DS18820的ROM序列号的读取更是无能为力。本文提出的一种搜索算法为这个问题提供了一个理想而灵活的解决方案。
1 DS18820简介
作为一种数字化温度传感器,DSl8820测温时无需任何外部元件,可直接输出9~12 位(含符号位)的被测温度值,测温范围为一55~+125℃;在一10~+85℃范围内测量精度为±O.5℃,输出测量分辨率可调,最高可达O.062 5℃;支持“单线总线”技术,仅需要占用一个通用I/0端口即可完成与单片机的通信;现场温度直接以“单线总线”的数字方式传输,大大提高了系统的抗干扰能力。每片DS18820内含唯一的64位ROM编码,因此可以对挂在总线上多片DSl8820进行唯一寻址,只有被寻址的DSI 8820才能对后续操作命令作出响应。
1.1 “单线总线”通信协议
“单线总线”是一种在一条总线(这条总线只有一条口线)具有单主机多从机的总线系统,在“单线总线”可挂多个从机系统。为了不引起逻辑上的冲突,所有从机系统“单线总线”接口都是漏极开路的,多个从机系统输出信号在总线上实现线与,因此在使用时必须对总线外加上拉电阻。
为保证数据的完整性,所有的单线总线器件都要遵循严格的通信协议。“单线总线”通信协议定义了复位脉冲、应答脉冲、写时序和读时序等几种信号类型(具体的时序参考相关文献,这里不再做具体介绍)。所有的单总线命令序列(如初始化、ROM命令、RAM命令)都是由这些基本的信号类型组成的。在这些信号中,除了应答脉冲外,其他均由主机发出,并且发送的所有命令和数据都是字节的低位在前。