DS18B20 ROM 编码的搜索算法 当温度传感器均挂与单线总线上时,对单线总线上的DS18B20正确寻址是其正常地测量温度先决条件,而识别ROM编码是对单线总线上的DS18B20正确寻址唯一方法
所以对单线总线上的DS18B20 ROM编码搜索与识别是必须的
1)“单线总线”通信协议 “单线总线”是一种在一条总线(这条总线只有一条口线)具有单主机多从机的总线系统,在“单线总线”可挂多个从机系统
为了不引起逻辑上的冲突,所有从机系统“单线总线”接口都是漏极开路的,多个从机系统输出信号在总线上实现线与
因此在使用时必须对总线外加上拉电阻
为保证数据的完整性,所有的单线总线器件都要遵循严格的通信协议
“单线总线”通信协议定义了复位脉冲、应答脉冲、写时序和读时序等几种信号类型(具体的时序参考3
1节,这里不再做具体介绍)
所有的单总线命令序列(如初始化,ROM命令,RAM命令)都是由这些基本的信号类型组成的
在这些信号中,除了应答脉冲外,其它均由主机发出,并且发送的所有命令和数据都是字节的低位在前
2)DS18B20 ROM 搜索命令 当单线总线上挂有多个 DS18B20 时,系统对总线上器件的数量和每个器件的 ROM 的识别与搜索是通过DS18B20 ROM 搜索命令与算法配合来实现的
下面具体介绍ROM 搜索命令的工作过程
对 64 位 ROM 编码识别从最低位开始, ROM 编码的每一位搜索过程可总结为“两读一写”:读一位,读该位补码,写一位
总线主机在 ROM 编码每一位上完成这三步就可以获得一个器件的 ROM 编码
① “两读” 总线主机发布 ROM 搜索命令后执行一次读,总线上所有器件就把它们各自ROM 编码的第一位放到总线来做做出响应
这次读获得的数据是所有器件放在总线上数据的“与”
再执行一次读,因为 ROM 搜索命令正在执行所以总线上所有器件把各自 R