单总线技术是美国 Dallas 公司的一项专有技术,采用单根信号线传输数据,具有节省 I/O 口资源、结构简单、成本低、便于总线扩展和维护等诸多优点。单总线技术适用于单个主机系统控制一个或多个从机设备。Dallas 公司的单总线产品中均有一个 8 字节只读存储器(ROM),用于存放产品的序列号(每个芯片唯一的 64 位标识代码)。如图 1 所示,从低位起第一个字节(8 位)是器件的家族代码,表示产品的分类;接下来的 6 个字节(48 位)是每个器件唯一的 ID 号;最后一个字节(8 位)是前 56 位的 CRC 校验码。同一种类型的器件有 248 个 ID 号码总量,确保了在总线上不会产生地址冲突。

 

传统的基于单总线的测温系统采用 ROM 搜索的方式在线识别挂接在总线上器件的注册码和器件的类型,由此可在线确定总线上的器件数量。但是,随着挂接在总线上的单总线器件增加,搜索 ROM 的时间也随之增加,系统开销增大。基于此,本设计采用支持菊链模式的新型数字温度传感器芯片 DS28EA00 组建单总线测温网络。该方案无需进行传统的 ROM 搜索步骤,允许用户将器件在链路中的物理位置与序列号对应,节省了 RAM 开销,简化了基于单总线的应用设计。

 

 

1、 DS28EA00 特性分析

DS28EA00 是具有 9 位(0.5℃)至 12 位(0.062 5℃)分辨率和用户可编程非易失性(NV)上/下触发点报警功能的数字温度计。每个 DS28EA 00 都有工厂编程的唯一 64 位序列号。DS28EA00 具有滞回和干扰滤波功能,使其能够在大的单总线网络中可靠工作。与其他单总线器件(例如 DS18B20)不同,DS28EA00 具有两个额外的引脚用以执行顺序检测功能。该特性允许用户将器件在链路中的物理位置与序列号对应,例如用来测量储存塔不同高度处的温度。如果无需顺序检测功能,这些引脚可作为通用输入或输出。

 

2 、基于 DS28EA00 的测温系统的硬件连接

采用 DS28EA00 的单总线测温系统硬件连接图如图 2 所示,主控制器采用 51 系列单片机,通过一个通用 I/O 口与单总线器件 DS28EA00 连接。与 Dallas 其他的数字温度传感器不同,DS28EA00 具有两个额外的引脚 PIOA 和 PIOB。其中,除了连接在总线上的第一个 DS28EA00 的 PIOB 接地外,其他每一个器件的 PIOA 均与下一个器件的 PIOB 相连接,最后一个 DS28EAOO 的 PIOA 悬空或接地,所有的 DS28EA00 采用菊链的方式互连在一起。微控制器的其他部分连接输入设备、输出设备和通信接口。

 

 

3、 单总线菊链模式下的顺序检测分析

如表 1 所列,在菊链模式连接方式下,DS28EA00 有 3 种工作状态:OFF、ON 和 DONE。这 3 种状态的转换由 Chain command 命令控制。当接通电源后,总线上所有的 DS28EA00 均处于 OFF 状态,在该状态下顺序检测 ROM 命令“Conditional Read ROM”不起作用。当处于 ON 状态时,如果 DS28EA00 的 PIOB 引脚处于低电平状态,那么它将响应“Conditional Read ROM”命令,发送自己的 ROM 序列号。当发送完成后,该 DS28EA00 将处于 DOWN 状态,不再响应“Conditional Read ROM“命令,并将自己的 PIOA 引脚置“0”电平,使得下一个 DS28EA00 继续响应“Conditional Read ROM”命令,发送自己的 ROM 序列号,直到连接在单总线上的最后一个 DS28EAOO。当微控制器把所有 DS28EA00 的序列号都读到后,发送 Chain DOWN 命令,使得总线上挂接的所有 DS28EA00 均回复到 OFF 状态。如此,便完成了对总线上所有 DS28EA00 的 ROM 检测,并且是按照顺序一个一个检测的,这使得检测的序列号与器件在链路中的物理位置相对应。如图 3 所示,主控制器采用 Chain command 命令可以使 DS28EA00 在 3 种状态间切换,当发送 Chain command 命令后,主控制器必须接着往总线上先写入一个字符的命令码,然后把该命令码以反码的形式再写入一遍。3 个命令码 3Ch、5Ah、96h 分别对应状态 OFF、ON 和 DOWN。如果菊链状态改变成功,则微控制器收到字符 AAh,否则收到 OOh。

 

 

 

4 、基于 DS28EA00 的测温系统的软件设计

菊链状态下利用 DS28EA00 进行多点测温的程序流程如图 4 所示,测温主要分为下面几步:

 

①首先,单片机通过 I/O 口发送 Skip ROM 命令,同时向多个 DS28EA00 发送信号,接在 Skip ROM 命令后,发送 Chain ON 命令,使得所有的 DS28EA00 均处在 ON 状态,此时所有从器件的 PIOA/PIOB 引脚都是高电平状态除了总线网络中的第一个 DS28EA00,它的 PIOB 是接地的。

 

②主控制器发送 Conditional Read ROM 命令,此时菊链网络中的第一个 DS28EA00 将响应此命令,并发送自己的 64 位 ROM 序列号,当主控制器接收到序列号后,接着发送 Chain DONE 命令,把第一个 DS28EA00 置为 DOWN 状态,并且使其 PIOA 脚输出低电平,由于状态变为 DOWN,第一个 DS28EA00 将不再响应 ConditionalRead ROM 命令。

 

③主控制器继续发送 Conditional Read ROM 命令,此时由于第二个 DS28EA00 的 PIOB 脚被置低电平,所以将响应该条命令,并发送自己的 64 位 ROM 序列号,当主控制器接收到序列号后,继续发送 Chain DONE 命令,把第二个 DS28EA00 也置为 DOWN 状态,并且使其 PIOA 脚输出低电平,将选通第三个 DS28EA00。

 

④主控制器将重复的执行 Conditional Read ROM 命令,直到总线上所有的 DS28EA00 都完成发送 ROM 序列号。

 

⑤主控制器通过发送 Skip ROM 命令和 Chain OFF 命令结束顺序检测操作。

 

⑥主控制器根据读到的 DS28EA00 序列号,向指定的 DS28EA00 读取温度值。

 

以下为部分测温的源程序,编程环境是 Keil C。

 

 

5 、小结

本文介绍了一种基于 DS28EA00 的单总线测温系统的设计方案。采用 Dallas 公司生产的支持菊连模式的数字温度传感器 DS28EA00 作为基本测温元件,重点分析了菊连模式下的顺序检测过程,给出了硬件连接图及软件流程。采用该方案无需进行传统的 ROM 序列号搜索步骤,节省了 RAM 开销,简化了基于单总线测温的设计。