![]()
% q4 r# ]$ S; W% h, b$ p 传统的基于单总线的测温系统采用ROM搜索的方式在线识别挂接在总线上器件的注册码和器件的类型,由此可在线确定总线上的器件数量。但是,随着挂接在总线上的单总线器件增加,搜索ROM的时间也随之增加,系统开销增大。基于此,本设计采用支持菊链模式的新型数字温度传感器芯片DS28EA00组建单总线测温网络。该方案无需进行传统的ROM搜索步骤,允许用户将器件在链路中的物理位置与序列号对应,节省了RAM开销,简化了基于单总线的应用设计。
P$ B7 p' \6 b+ b
1、 DS28EA00特性分析
: u( F9 G. f& t& q |; ~
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。
![]()
* C- d" x' K+ C$ H7 o2 [/ s
4 、基于DS28EA00的测温系统的软件设计
) l6 p1 P7 @5 A* v
菊链状态下利用DS28EA00进行多点测温的程序流程如图4所示,测温主要分为下面几步:
* Z$ u$ }4 c0 e p; F
①首先,单片机通过I/O口发送Skip ROM命令,同时向多个DS28EA00发送信号,接在Skip ROM命令后,发送Chain ON命令,使得所有的DS28EA00均处在ON状态,此时所有从器件的PIOA/PIOB引脚都是高电平状态除了总线网络中的第一个DS28EA00,它的PIOB是接地的。
: `) j2 p& \0 a4 k ②主控制器发送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。
/ E4 T1 Y5 `, Q( B8 b0 c! W
④主控制器将重复的执行Conditional Read ROM命令,直到总线上所有的DS28EA00都完成发送ROM序列号。
2 j l6 N+ ^ o- @% Z0 A* I
⑤主控制器通过发送Skip ROM命令和Chain OFF命令结束顺序检测操作。
1 o5 c3 h! @8 t" }2 m* k3 t
⑥主控制器根据读到的DS28EA00序列号,向指定的DS28EA00读取温度值。
5 ^7 H, ]1 F# p1 k1 r' Q7 L$ }( \ \- h
以下为部分测温的源程序,编程环境是Keil C。
- r# O& I+ m5 E8 I* q& e, G ![]()
5 、小结
- M. T# p, L- \ 本文介绍了一种基于DS28EA00的单总线测温系统的设计方案。采用Dallas公司生产的支持菊连模式的数字温度传感器DS28EA00作为基本测温元件,重点分析了菊连模式下的顺序检测过程,给出了硬件连接图及软件流程。采用该方案无需进行传统的ROM序列号搜索步骤,节省了RAM开销,简化了基于单总线测温的设计。
. P* _3 [& \% q0 n1 t
. y5 h. H* c& @9 N/ j* ~% Q( Q