您当前的位置:首页 > 技术资料 > 综合技术文章

1-Wire网络驱动器

发布时间:2010-05-09 13:01:24  来源:资料室    作者:   更新20211020 070907

电路描述

网络驱动器(图1)由下拉部分(Q1,R1,C1,R5)和上拉部分(Q2,R2,C2,R6)组成。晶体管Q3与周围的元件(C4、R7)组成强上拉电路,可为诸如EEPROM、温度传感器等器件提供额外电源。 本文没有讨论"强上拉"的功能。任何时候,三个晶体管中最多只有一个处于导通状态;当1-Wire不进行通信("空闲"状态)时,这三个晶体管都不导通。838电子 
R4、R1和R3的串联电路提供标准的1-Wire到VCC上拉。在这种电路情况下,总的上拉电阻近似为1kΩ。当1-Wire线空闲时,则线上呈现此阻抗。由于R4与Q1的漏极相连,因此Q1导通时电流会流过该电阻,但不会影响1-Wire总线的低电平电压。1-Wire总线电压升至5V的速度是由R4+R1+R3的电阻值和1-Wire网络的负载决定的。不建议减小R4阻值,否则会导致1-Wire总线的低电平电压升高,而这不是我们所期望的。通过把肖特基二极管D1、D2分别导通至GND和VCC,抑制ESD冲击以及来自邻近电缆的耦合信号。电阻R3限制ESD电流,保护D1和D2。1-Wire网络驱动器
图1. 驱动器原理图

该驱动器一个最明显的特性就是可以在主机端实现与1-Wire电缆之间严格的终端匹配。在1-Wire网络中推荐使用5类非屏蔽双绞数据电缆,其特性阻抗约为100Ω。当Q1或Q2导通时,总线终端匹配分别通过R3与R1或R2的串联来实现。C3与R1和R3串联为在线应答脉冲提供一个交流耦合终端匹配。为了驱动器适应不同的特征阻抗电缆,需要相应地调整R1和R2。

驱动器的三个部分在相应的晶体管导通时,其压摆率受到控制。当驱动器将1-Wire总线变为低电平(例如某个时序或复位脉冲的起始点), R5和C1控制下降斜率;R6和C2限制动态上拉信号变为有效状态时的压摆率;而R7和C4限制强上拉的压摆率。这三个部分的时间常数均为0.5µs,压摆率近似为4V/µs。关于详细资料和示波器波形,请参见性能举例部分。
 

电路工作原理

若忽略强上拉电路(Q3, R7, C4),驱动器要求连接三个信号至监控微控制器,这些信号分别为DRIVE、DPU和SENSE。DRIVE为高电平有效信号,它通过使 Q1导通,来启动 1-Wire通信。DPU为低电平有效信号,用来激活动态上拉晶体管Q2。SENSE是1-Wire电路与微控制器输入口之间的直连信号。1-Wire的地线与驱动器/微控制器GND共地。为了进行1-Wire通信,必须发出恰当的DRIVE信号和DPU信号,并在适当的时间内通过SENSE输入口读取1-Wire总线信号。1-Wire通信有四种波形,它们是复位/在线应答检测序列,和三种通信时隙波形。

 

复位/在线应答脉冲检测序列

1-Wire通信过程都是从一个复位脉冲开始,之后跟随在线应答脉冲,波形如图2所示。当需要发出复位脉冲时, DRIVE信号要变为高电平并保持从A到B的时间(参见图2)。从A点开始,1-Wire的电压缓降为0V。在B点,DRIVE信号释放,除非1-Wire器件将总线拉低以产生中断信号(参见DS1994/DS2404数据资料,中断类型2),否则1-Wire电压开始上升。为了能正确处理这种中断,从C点开始就要对1-Wire进行重复采样,直到D点1-Wire状态变为逻辑高电平。在D点之后很短时间内,动态上拉DPU信号变为有效状态(E点),1-Wire总线将会以更快的速度被拉至5V,动态上拉在F点结束。假定总线上存在一个1-Wire器件,它就会发出在线应答脉冲,从G点开始,到I点结束。在G与I之间的某个地方(H点),对1-Wire状态进行采样,判定是否存在1-Wire 器件。在线应答脉冲结束后,1-Wire电压开始升至5V。在J点还要对1-Wire逻辑状态再次采样,判断是否发生了1A类中断信号(参见DS1994/DS2404数据资料)。无中断信号时,逻辑状态为高电平,从K点到L点动态上拉信号再次变为有效状态,以确保1-Wire总线电压上升到5V,如图2所示。当有中断信号产生时,J点所检测到的状态将为逻辑0,同时开始下一轮重复采样过程,就像在复位脉冲结束那样(如返回C点继续采样)。如果在总线上还存在其它的1-Wire器件,除发出中断的器件外,它们将把此中断脉冲看作是复位脉冲,随后发出在线应答脉冲作为响应。(如第二次到达J点时,1-Wire的逻辑状态为高,如图2所示)。在任何情况下,复位/在线应答脉冲检测在M点结束,同时也是下一个时隙的起始。


图2. 复位与在线应答脉冲时序

表1. 复位/在线应答脉冲检测序列的时间建议值

A to B B to C D to E E to F E to H H to J J to K K to L L to M
480µs 0 to 2µs 0 to 2µs 8µs 72µs 240µs 0 to 2µs 60µs > 2µs


采样点H必须选在应答脉冲窗口之内,在线应答脉冲窗口由最快和最慢的1-Wire器件在线应答脉冲的时间决定,数据资料中将此窗口时间长度规定为tMSP。复位脉冲结束后,当1-Wire器件检测到逻辑高电平时,标志着tMSP开始,图2中该参考点近似为E点。A到C之间的时间长度等于tF (下降时间)与tRSTL (低电平复位时间)之和。当发生2类中断时,有效的复位时间长度就是从A到B的持续时间与中断脉冲(参见DS1994/DS2404数据资料)持续时间的总和。从E到M的时间称为高电平复位时间tRSTH。数据资料规定了tRSTL,并说明了如何确定最小的tRSTH值,但对于tRSTH没有最大值要求。
 

通信时隙

写0时隙

写0时隙用于在1-Wire总线中传送比特0,对应的1-Wire波形如图3所示。需要进行写0时隙操作时,DRIVE信号首先要变为有效电平状态并持续一段时间,图中对应的为A点和B0点。从A点开始,1-Wire总线的电压缓降至0V。在B0点当DRIVE信号释放时,1-Wire总线电压开始上升。B0点之后很短时间内,动态上拉DPU变为有效(C0点),1-Wire总线将会以更快的速度被拉至5V。动态上拉信号在D0点结束,下一个时隙或复位/在线脉冲检测序列将紧随在E点之后。


图3. 写0时隙

写0时隙不需要对数据线进行采样,因此图3未标明任何采样点,但是也允许对1-Wire总线按照读时隙(图4或图5)中相同的时间点进行采样,不过获得的采样逻辑状态将始终为0,表明电路正在向1-Wire总线进行写0操作。从A到C0的持续时间长度等于tF (下降时间)与tW0L (写0低电平时间)之和,从C0至E0的时间称为恢复时间tREC。数据资料规定了tW0L和tREC的最小值。A至E0的时间称之为时隙周期tSLOT

表2. 推荐的写0时隙时间值

A to B0 B0 to C0 C0 to D0 A to E0
60µs 2µs 16µs 80µs


 

写1/读1时隙

写1时隙用于从1-Wire总线上传送比特1,对应的1-Wire波形如图4所示。实际上,从1-Wire总线读取比特1的操作与写1操作的工作波形是相同的,因此,写1操作和读1操作就作为一种情况来讨论。若要产生写1或读1时隙,首先在A点将DRIVE信号变为有效并持续到BR。从A点开始,1-Wire总线电压缓降至0V。在BR点,DRIVE信号释放,无论是在进行读1操作还是进行写1操作,1-Wire总线电压都开始上升。在CR点对1-Wire总线进行取样。由于读到的比特为1,动态上拉DPU将立即变为有效状态,并从D1持续到E1。这将使1-Wire总线电压以更快的速度升至5V。下一时隙或复位/在线应答脉冲检测序列可以从F1点开始。


图4. 写1/读时隙(读1)

采样点CR必须落在主机采样窗口范围内,由最快的1-Wire器件响应时间决定。在数据资料中该时间窗口称为tMSR。时隙开始后,1-Wire器件检测到逻辑低电平时作为tMSR的开始点,图4中这一参考点近似为A点加上脉冲的下降时间tF。从A到BR的持续时间等于tF (下降时间)和tRL (读低电平时间)之和。数据资料中规定了tRL (等于tW1L)和tMSR,从A到F1的时间也就是时隙周期时间tSLOT

表3. 推荐的写1/读时隙(读1)时间值

A to BR A to CR CR to D1 D1 to E1 A to F1
9µs 18µs 0 to 2µs 60µs 80µs


 

读时隙(读0)

读0时隙用于从1-Wire总线上读取比特0,对应的1-Wire波形如图5所示。需要进行读时隙操作时,DRIVE信号首先要变为有效电平状态并持续一段时间,图中对应为A点和BR点。从A点开始,1-Wire总线的电压缓降至0V。为了发送比特0, 1-Wire器件需要把1-Wire拉为低电平,从A点,到BR点结束。这样的话,1-Wire总线在开始时先由1-Wire主机将电压拉低,在BR点时主机下拉结束,随后由总线上存在的一个或多个1-Wire器件继续把1-Wire总线电压维持在逻辑低电平状态。在CR点对1-Wire总线进行采样。由于读到的比特为0,1-Wire总线将被重复采样。在D0点1-Wire器件停止下拉, 1-Wire总线电压开始升高。随后在E0再次进行取样,判断总线是否已经处于逻辑高电平状态,同时动态上拉DPU变为有效状态,1-Wire总线电压开始以更快的速度升至5V。动态上拉DPU的有效状态从F0持续到G0。下一个时隙或复位/在线应答脉冲检测时序可以从H0开始。


图5. 读时隙(读0)

CR采样点的选取与写1/读时隙时相同,随后的重复采样间隔应该在微控制器和软件允许范围内尽可能的短。从A到H0的时间也就是时隙周期时间tSLOT

表4. 推荐的读时隙(读0)时间值

A to BR A to CR E0 to F0 CR to G0 A to H0
9µs 18µs 0 to 2µs 60µs 82µs

应用注意事项

控制这个高级的1-Wire网络驱动器的信号结构相对来说比较复杂。然而,算法还是比较直观,因此这个驱动器通常用软件来实现,采用速度足够快的微控制器,以产生实时信号。下面的流程图将有助于用户采用自己熟悉的、任何一款能够满足要求的微控制器来实现该驱动器。为能产生合适的定时信号,必须要考虑在选定晶振频率下每个命令的执行时间。

软件流程图



注1: 若仅将定时器作为计数器而不是实时定时器,则必须采用递减计数器。定时器应该在5000µs后终止。

注2PresenceShort是用来向高级程序报告复位/在线应答脉冲检测时隙结果的逻辑变量。由于在这里只有一款可产生中断的1-Wire芯片(DS1994/DS2404),并且使用中断会大大降低1-Wire网络的有效速度,因此中断不作为变量来进行报告。



在该流程图,采用一个逻辑输入变量来控制是产生写0时隙还是产生读0时隙。写1时隙与读0时隙是相同的。位变量BitValue用来向上级程序报告时隙执行的结果 。

注1: 若仅将定时器作为计数器而不是实时定时器,则必须采用递减计数器。定时器应该在45µs后终止。

注2:按照此流程图,在定时器停止之前,DPU信号会被重复置为有效状态。若信号已处于有效状态,则激活操作不会对它产生影响,因此允许对已处于有效状态的DPU信号进行激活。如果需要,也可以进行检测DPU信号是否有效,如果DPU信号有效,则在执行程序时无需再次激活。
 

性能举例

本文讨论的驱动器产生的1-Wire信号的示波器波形如下页所示。当对信号进行检验时,尤其是在电缆的最远端,必须使用差分探头,探头的参考地悬空,否则探头的地将旁路1-Wire的参考地,从而改变系统的拓扑结构。如果不能提供差分探头,则必须通过变压器或使用电池供电的示波器,将示波器地同总线地隔离,两种方法可任选其一,以断开示波器电源电缆的安全接地。

示波器波形
 


复位/在线应答脉冲检测时隙(如图2)


写0时隙(如图3)


写1/读1时隙(如图4)


读0时隙(如图5)


在300m电缆末端的下降沿信号


 


来顶一下
近回首页
返回首页
分享到:
发表评论

 共有人参与,请您也说几句看法

 
   验证码: 看不清楚,点击刷新 看不清楚,点击刷新