摘要
DS2409的设计初衷是将其用做门禁控制的探测点(即读取头)以及用来减少大型
概述
得益于DS2409 MicroLAN耦合器的独特设计,它可以被用于实现多种特殊应用。本文首先列出了DS2409的特性和应用,接着介绍了可以实现相同功能的替代电路。最后本文对这些替代电路做了详细讨论。
DS2409特性描述
DS2409是一个特殊类型的2端口可寻址开关器件。与向传统的可编程输入/输出口(PIO)输出高、低电平不同,这个器件通过传输门来将其输出通道与作为其输入的1-Wire总线连接。在任何时刻,只有一个1-Wire输出通道有效。除了1-Wire输出通道以外,DS2409还有一个可控输出通道,该输出通道可以配合主输出通道使用(默认方式),也可配合辅助输出通道使用,还可以独立使用。这些功能的切换是通过控制状态控制字节来完成的(参见DS2409数据资料)。状态信息字节(参见DS2409数据资料)允许主机确认设备配置状况、检查器件工作状态(使用或非使用状态)、确认每个1-Wire输出的逻辑状态(高或者低)、事件标志位(置位/清零)。表1总结了DS2409的这些特性以及这些特性带来的便利。
表1. DS2409特性及优势
特性名称 | 描述 | 优势 |
任何时刻只有一个输出有效 | 仅有一个输出可以和 |
保持总线的低负载状态。 |
可控输出 | DS2409拥有一个漏极开路可控输出。上电以后,该输出被配置为在主输出有效时,驱动一个LED。在软件的控制下,这个输出可以和辅助输出配合使用,也可以直接被打开或关闭。 | 可自动标示当前有效的输出通道,也可用来实现一个握手功能(参见双主机网络部分的描述)。 |
事件检测 | 所有的输出都有事件检测功能。如果输出为非使用状态,输出上的下降沿(如1-Wire从器件对总线的拉低)将使事件标志置位。 | 锁定一个事件降低总线流量。 |
条件搜索 | 如果主输出的事件标志置位,那么主输出上的器件将参与条件搜索。 | 在门禁控制应用中减少总线流量。 |
在输出有效之前输出复位信号 | 所有输出通道在有效之前都将输出复位信号(参见表4的Smart-On命令)。 | 当在多个网络中打开一个信号通路时,可以减少通信量。 |
短路检测 | 所有输出都有短路检测功能(参见Smart-On命令)。 | 防止数据线短路引起的总线崩溃。 |
DS2409需要5V VDD供电,上电后,所有1-Wire输出通道都处于非工作状态,并通过内部上拉电阻拉到5V VDD电平。短暂的电源掉电将使器件进入上电复位状态。在VDD稳定后,1-Wire输入端口作用一个短暂低电平,使DS2409进入软件上电复位状态。当DS2409重新和主机连接后,器件进入默认的上电复位配置状态,1-Wire总线输出通道都处于非工作状态,事件标志位状态不确定。
表1列出的特性主要面向下列3种应用:智能探测点、多层网络、双主机网络(参见表2)。
表2. 特性及其应用
特性名称 | 应用 | ||
智能探测点 | 多层网络 | 双主机网络 | |
任何时刻只有一个有效输出通道 | — | — | |
可控输出 | — | (手动模式) | |
事件检测 | — | ||
条件搜索 | — | — | |
输出有效前输出复位信号 | — | — | |
短路检测 | — |
智能探测点
图1所示框图是将iButton®作为电子钥匙的门禁系统。R1/C1应尽量靠近1-Wire适配器安装。R1的作用在于当1-Wire总线中断时,DS2409可以实现一个软复位。C1在VDD过冲时可以避免DS2409阻塞1-Wire总线。
图1. 带智能探测点的门禁控制系统拓扑
除了主1-Wire总线外,探测点(如DS9092 iButton探头)位于DS2409主输出端分支二级网络上。与辅助输出口相连接的是一个ID芯片,比如一个1-Wire EEPROM器件,这个器件中存储了分支名称。正常工作情况下,所有分支都处于禁止状态(即与主1-Wire总线断开),与此同时主机在进行条件搜索,检测事件是否发生。当一个iButton连接到探测点时,将该分支上的DS2409事件标志位置位。在下一个扫描周期中,主机将定位于该DS2409并使能辅助输出通道,以读取分支名称。接下来,主机将访问相同的DS2409并且使能主输出通道,以访问接入系统的iButton。当主输出通道进入工作状态后,点亮LED,指示用户已检测到器件连接。如果不需要点亮LED,控制输出可以连接到一个门锁,软件控制打开/关闭。由于Smart-On命令具有短路检测功能,DS2409可以防止探测点短路所引起的网络故障。
多层网络
对于任何网络,找到主机驱动负载和节点(或分支、从机)数量间的最佳平衡非常重要。达到这个目的一种方式是网路分层(参见图2)。图中展示了一个4层网络,从始终保持有效状态的主干开始(第0层),每个子层都包含开关分支(第1层到第3层)。R1/C1应靠近1-Wire主机。如果通过1个或多个DS2409在1-Wire主干层和子层构建多层网络,R1将保证主机再度连接时自动关断通路。C1在VDD过冲时避免DS2409阻塞1-Wire总线。
为了有效控制这种网络,主机应当了解每层各个分支DS2409从机的ROM ID,以识别网络拓扑。为了打开第3层从机的通路(如箭头所示),主机应执行下列命令:
- 对主干U1执行Match ROM命令。
- 使能主输出通道(该操作将打开第1层两个从器件的通路)。
- 对第1层U3执行Match ROM命令。
- 使能主输出通道(该操作将打开第2层的两个从器件通路)。
- 对第2层U4执行Match ROM命令。
- 打开辅助输出通道(该操作将打开第3层连接至该输出的从器件通路)。
图2. 多层网络拓扑
由于采用VCC供电,DS2409的最大1-Wire总线负载是100pF (50pF来自1-Wire总线输入,50pF来自输出),而典型的寄生供电1-Wire器件总线负载为800pF至1000pF。在示例拓扑中,主机所要驱动的总负载是:主干网上的DS2409 (50pF)、第1层的两个DS2409 (150pF,2个输入、1个输出)、第2层的两个DS2409 (150pF),连接在U4辅助输出通道的所有从器件(50pF加上从机负载)。因此总负载是400pF加上从机负载。
根据应用需求,在每个分支可以挂接多于2个DS2409,表3列出了最大分支数目以及相应的来自于耦合器的负载。层与层之间,分支数目呈指数方式增长,然而来自DS2409的负载则呈线性增长。
表3. 多层分支数与DS2409负载
网络深度 | 配置 | |||
每个分支2个DS2409 | 每个分支3个DS2409 | 每个分支4个DS2409 | ||
第0层 | 分支数目 | 4 | 6 | 8 |
DS2409总负载 | 2个器件 | 3个器件 | 4个器件 | |
第1层 | 分支数目 | 16 | 36 | 64 |
DS2409总负载 | 4个器件 | 6个器件 | 8个器件 | |
第2层 | 分支数目 | 64 | 216 | 512 |
DS2409总负载 | 6个器件 | 9个器件 | 12个器件 | |
第3层 | 分支数目 | 256 | 1296 | 4096 |
DS2409总负载 | 8个器件 | 12个器件 | 16个器件 | |
第n层 | 分支数目 | 4 × 4n | 6 × 6n | 8 × 8n |
DS2409总负载 | 2 × n + 2 | 3 × n + 3 | 4 × n + 4 |
除了随网络层数增加而线性增加的通信负荷外,用户同时应注意DS2409所引入的阻抗。对于主输出来说,典型值是10Ω (最大值20Ω);对于辅助通道来说,典型值是15Ω (最大值30Ω)。非零阻抗降低了最终网络层(主机至从机)的高电平,并拉高了主干网(从机至主机)的低电平。降低高电平通常不是什么问题,但是由于低电平阀值被拉高,通常建议用户将网络分层控制在4层或4层以内。
双主机网络
在应用中存在需要双主机控制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功能命令及其典型用法
命令名称 | 功能类别 | 目的 | 典型用法 |
Match ROM | 网络 | 选择一个特定的1-Wire从机 | 主要的寻址方式 |
Smart-On Main | 控制 | 带在线检测和短路检测的主通道开通 | 谨慎开启输出,如使用后续Match ROM命令开启下一层通路 |
Smart-On Auxiliary | 控制 | 带在线检测和短路检测的辅助通道开通 | 谨慎开启输出,如使用后续Match ROM命令开启下一层通路 |
Skip ROM | 网络 | 用于寻址当前网络分支上的所有1-Wire器件 | 用于广播一个命令,如关闭所有通路 |
All Lines Off | 控制 | 清除事件标志位、关闭输出、终止线缆放电命令 | 在Skip ROM命令后:断开当前线路,在不改变当前配置的状况下复位网络 |
Status Read/Write | 控制 | 读:验证输出状态和配置; 写:对器件进行配置 |
读:输出电平检测(如在双主机中的握手)、事件标志位检测 (智能探测点)、验证配置及哪个输出有效 写:改变器件模式和可控输出与哪个输出结合、对可控输出进行直接控制 |
Conditional Search ROM | 网络 | 确定有效网络分支上需要主机注意的1-Wire从机 | 在智能探测点上检测iButton是否出现 |
Search ROM | 网络 | 确定有效网络分支上的所有1-Wire从机 | 确定一个网络的拓扑、创立网络上所有从机的清单 |
Discharge Lines | 控制 | 将所有输出关闭 | 对输出端连接的寄生供电从器件进行上电复位操作、查找网络问题 |
Direct-On Main | 控制 | 打开主输出通道 | 快速打开输出 |
Read ROM | 网络 | 获取器件的ROM ID | (在多从机网络中无效) |
我们重点介绍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命令
DS2409替代方案
为了替代DS2409,用户应当使用1-Wire可寻址开关(用于数字控制和检测)和模拟开关(开通或关闭输出)。用1个双通道可寻址开关(如DS2413、DS2406或DS28E04)和一路或两路模拟开关,可以部分替代DS2409。完全替代器件则需要一个5通道1-Wire可寻址开关(如DS2408,8通道)和两路模拟开关。需要注意的是,可寻址开关上电后所有PIO都处于断开(不导通)状态。
模拟开关必须为单刀双掷(SPDT),应选择供电电压为5V ±10%的开关器件,导通电阻(RON)小于等于30Ω,三个开关节点的电容应不大于50pF,开关时间小于100ns。如果内置高ESD保护则更加理想。基于上述考虑,可以选择下列模拟开关:
- 单通道:MAX4729 (5.7Ω,最大值)、MAX4730 (5.7Ω,最大值)、MAX4644 (4.75Ω,最大值)
- 双通道:MAX4717 (3.5Ω,最大值)、MAX4719 (25Ω,最大值)、MAX4635 (4.5Ω,最大值)、MAX4636 (4.5Ω,最大值)、MAX4750 (30Ω,最大值)
- 三通道:MAX4693 (25Ω,典型值;40Ω,最大值、低速切换)
示例电路
图7所示电路是部分替代电路,实现DS2409的1-Wire输出切换和输出控制。U1为2通道1-Wire可寻址开关(带开漏PIO);U2是一个单刀双掷模拟开关,3个开关触点对应NO、NC和COM引脚。开关受IN引脚的数字输入电平控制。
上电默认状态下,所有1-Wire可寻址开关的PIO都处于高阻状态。通过电阻R2在开关的IN引脚作用一个高电平,使NO引脚连接到COM端。NO引脚通过1.5kΩ上拉电阻R1连接至COM引脚的无效1-Wire输出端。这些配置等效于DS2409的上电状态。
为了打开U2上的1-Wire输出,主机将PIO-A打开,如同在U2的IN引脚作用一个低电平。使模拟开关的COM端从NO切向NC,接通1-Wire总线。将PIO-A关闭,则关闭1-Wire输出。主机也可以对PIO-B进行独立于PIO-A的操作,如替代DS2409手动模式下的控制输出或用来控制其它类似R1/R2/U2的电路。控制两个模拟开关时,1-Wire主机必须保证只有一个1-Wire输出通道打开。这些可以通过软件实现,也可以通过更安全的连接逻辑完成,即通过PIO-A ^ /PIO-B和/PIO-A ^ PIO-B组合逻辑控制模拟开关。PIO-B也可以用于事件检测(条件搜索)和短路检测(虚线)。但不可模拟输出有效前发出一个复位脉冲的情况。
图7. DS2409部分替代电路,U1可以选用DS2406、DS2413或DS28E04
DS2406可寻址开关
图7所示电路已经用DS2406可寻址开关进行测试。模拟开关(MAX4561)的IN引脚连接到DS2406的PIO-B。PIO-A用来控制输出,开启LED。通过Write Status命令(代码55h)控制存储器0007h (SRAM控制位)操作PIO,该SRAM控制位的第6位直接控制PIO-B通道的状态。图8显示了输出使能过程,图中顶部波形图是CRC16字节(1Fh,E2h),跟随在0007h单元写入的3Fh数据字节之后。底部波形是PIO-B的跳变波形,控制模拟开关。在CRC16字节之后的复位/应答周期结束之前,不会出现1-Wire总线输出波形(中间波形)。图8并未显示复位/应答周期。
图9显示了关闭输出的过程,顶部波形是跟随在写入0007h单元的7Fh数据字节之后的CRC16字节(1Eh,12h);底部波形是控制模拟开关的PIO-B的跳变波形;PIO-B状态转变后,1-Wire输出(中间波形)终止,然后主机发出复位/应答脉冲。图9并未显示复位/应答周期。
除了向状态寄存器写入命令以改变PIO状态外,PIO还可以由Channel Access命令(代码F5h)控制,但本文没有介绍该操作。另请注意,DS2406在断电后不到1分钟之内执行了一次上电复位操作。而DS2409在断电后或1-Wire输入断开(低电平)大约几个毫秒后执行上电复位操作。DS2406将锁存其PIO状态,由此,该器件支持事件检测(条件搜索)和短路检测(虚线)。通过Channel Access命令清除闭锁状态(通道控制字节1)。
图8. 利用DS2406进行部分替代,输出有效
图9. 利用DS2406进行部分替代,输出禁止
DS2413可寻址开关
按照图7所示电路对DS2413可寻址开关进行了测试。模拟开关的IN引脚与DS2413的PIO-A连接。PIO-B用于控制输出,点亮LED。通过PIO Access Write命令(代码5Ah)实现PIO的操作,图10所示为输出使能过程。顶部波形是PIO输出数据字节(第一个是原码FEh,随后是反码01h),然后是AAh确认字节,以及新的PIO引脚状态(3Ch)。PIO-A (底部波形)用于控制模拟开关,其状态在PIO输出数据字节的反码之后发生改变。因此,确认字节和PIO引脚状态在1-Wire输出通道出现(中间波形)。为了确保总线的从机与主机同步,主机必须发出复位/应答脉冲。
图10. 利用DS2413进行部分替代,输出有效
图11. 利用DS2413进行部分替代,输出禁止
图11所示为输出禁止波形。顶部波形是PIO输出数据字节(第一个是原码FFh,随后是反码00h)。确认字节和新的PIO引脚状态(3Ch)并未在图中表示出来。PIO-A (底部波形)用于控制模拟开关,其状态在PIO输出数据字节的反码之后发生改变。确认字节和PIO引脚状态没有通过1-Wire输出(中间波形)。
请注意,DS2413与1-Wire总线断开5分钟后,执行一次上电复位。而DS2406在1分钟内即进行上电复位。DS2413并不锁存引脚状态,因此它不支持条件搜索,但可以实现短路检测(虚线)。
DS28E04可寻址开关
DS28E04是带有2个PIO的1-Wire EEPROM。PIO上电时处于非导通状态,POL引脚需要接高电平(5V)。两个PIO的控制方式与DS2413相同,因此图10和图11也适合这种情况。寄生供电模式下,通过一个低于15s的1-Wire总线低电平使DS28E04进入上电复位。DS28E04具有PIO状态锁存功能,因此,它支持事件检测(条件搜索)和短路检测(虚线)。通过Reset Activity Latches命令清除锁存。
全面替代(DS2408可寻址开关)
图7所示的电路用于替代:a) 一路1-Wire开关输出和控制输出,但不支持事件/短路检测;b) 一个带事件/短路检测的1-Wire开关输出。这限制了2路可寻址开关的选择。为了全面替代器件,需要5个PIO通道(图12)。
全面替代电路采用两个模拟开关(U2、U3),开关受控于DS2408 8通道可寻址开关(U1)的PIO端口P1和P2。P2、P3口连接在1-Wire开关输出通道,支持短路和事件检测。P4用来替代控制输出。P5至P7留作它用。必要时,可以利用P5控制另一个模拟开关。从而获得第三路1-Wire输出,通过P6支持短路/事件检测。P7和P4用来指示三个1-Wire通道的哪个通道处于有效状态。
按照与DS2413相同的方式控制DS2408的PIO,因此图10、图11仍然适合这里的应用。可编程DS2408的条件搜索,在其PIO引脚检验是否发生事件。通过Reset Activity Latches命令清除锁存。
与其它可寻址开关不同,DS2408需要一个外部复位信号(U4)来保证PIO在上电后处于非导通状态。寄生供电模式下,1-Wire总线上一个短于5s的低电平将使DS2408进入上电复位状态。
ESD保护
DS2409在1-Wire输入和两路1-Wire输出通道都内置了ESD保护,不再需要额外的ESD保护机制。1-Wire可寻址开关的1-Wire输入通道同样具有ESD保护,但其PIO引脚都未加ESD保护。多数模拟开关的ESD保护都很有限,建议增加ESD保护电路,特别是对于连接1-Wire输入和输出通道的引脚。在选择ESD保护器件时,应选择电容较小的器件,符合这类条件的ESD保护器件有:MAX3202E/MAX3203E/MAX3204E或MAX3207E/MAX3208E系列。
图12. DS2409全面替代电路
总结
DS2409对于构建单主机大型1-Wire网络非常有效。其它的应用包括:门禁控制和双主机1-Wire网络的智能接入点。但是,DS2409已进入停产阶段,这会给一些用户造成麻烦。本文重点介绍了支持同样应用的一些DS2409替代方案。