双主机网络
在应用中存在需要双主机控制1-Wire总线的情况,例如,需要一个备份主机或者两台主机相互通信的情况。图3是实现双主机的示意图,在这个例子中,DS1996存储器iButton用作数据交换时的暂存器,可选择ID芯片,如果已安装,则可存储与系统相关的信息,告知主机它们正在访问一个共享网络,该网络同时带有数据缓冲功能和握手逻辑。除了存储器iButton外,同样可以存在一个1-Wire从机构成的网络。建议在双主机网络中同样使用图1所示的R1/C1组合,将R1/C1应用于2个主机侧。
图3. 双主机,如果不能保证相同电压,则由同一电源为两个DS2409供电
作为起点,DS2409的主输出和辅助输出通道都处于禁止状态。公共网络都从DS2409上拉到5V,等效上拉电阻降低到750Ω。两台主机都定期读取DS2409信息,以确定另一个主机是否已经接管了1-Wire总线网络。
假定主机A访问DS1996,向主机B传送数据。为了访问存储器iButton (DS1996),主机A首先打开U1的可控输出,这将把U2的辅助输出拉低。同时,主机B已经读到了U2的状态信息,因此它知道主机A已经接管总线。接下来主机A打开耦合器U1的主输出,并且向存储器iButton写入数据,这些操作结束后,主机A关闭U1的主输出并且关闭控制输出。
主机B仍然在读取U2的状态信息,并检测到主机A已经完成了写操作。此时主机B打开U2的控制输出,这将把U1的辅助输出拉低。主机A读到U1的状态信息并且知道主机B已经接管总线。这时主机B打开主输出通道,并从存储器iButton中读回数据。完成信息处理后,主机B向iButton写入一个回应信息。在这个操作结束后,主机B关闭U2的主输出并关闭控制输出。由于主机A仍在读取U1的状态信息,能够了解到主机B对总线的访问已经结束。
功能命令及其典型用法
DS2409总共有11条命令,这些命令实现网络控制功能。表4列出了这些命令并阐述了它们的典型用法。这些命令按照它们在网络应用中的重要性排序。详细信息请参阅DS2409数据资料。
表4. DS2409功能命令及其典型用法
我们重点介绍Smart-On命令(图4)。图中顶部的波形是1-Wire总线通信波形,本例中所示的是Smart-On Auxiliary命令。第一字节是33h命令代码,之后是复位信号FFh和复位响应(00h,表示检测到应答脉冲),后面跟随一个确认字节(33h,表示没有短路)。中间波形表示辅助输出通道的状态,即复位/应答检测(PD)周期。底部波形表示可控输出在开启辅助输出之前关闭主输出通道时的波形变换。在确认字节后的任何通信,都通过当前开通的通道进行。应答脉冲仅在其之前有一个All Lines Off命令时有效。
图4. Smart-On Auxiliary命令
关闭输出通道通常采用All Lines Off命令(图5)。图中顶部的波形是命令字节66h,之后是确认字节。命令字节通过输出通道输出(中间波形),但确认字节没有从通道输入。底部波形表示当关闭输出时,可控通道电平的跳变。
图5. All Lines Off命令
除Smart-On命令外,对于主输出通道还有Direct-On命令(图6)。示波器上的波形如同All Lines Off命令的镜像。在命令码A5h之后,主输出通道打开(底部波形)。确认字节从输出通道输出(中间波形)。如果使用了这个命令,必须产生一个复位/应答周期,以保证打开通道上的从机与主机同步。
图6. Direct-On Main命令