引言DS2480B是带UART主机接口的1-Wire主机(驱动器)。该器件针对电源传输进行优化并支持嵌入式应用的高速模式,可以将主机从生成严格定时的1-Wire波形这一任务中解脱出来。DS2480B采用有源电路,缩短了时隙结束时的恢复时间。图1给出了1-Wire驱动器部分的简化电路图。
图1. DS2480B 1-Wire驱动器的简化电路
当1-Wire总线处于空闲状态时,DS2480B驱动器通过一个受控电流源提供上拉。该电流源可被关闭(下拉期间),可提供弱上拉电流(下拉及空闲时IWEAKPU),或者提供一个有源上拉(上升沿时IACTPU)。下拉电路(Q1)的压摆率可以通过软件调整。Q2表示需要大电流的1-Wire从器件功能(如EEPROM编程或温度转换)所采用的供电电路。Q2的功能在本应用笔记中未讨论。
为支持有效的布线配置,需要一个外部线路终端电阻RT (~100Ω)以尽量减小传输线路的影响,如反射、下冲和过冲。然而,加入RT后会导致有源上拉在1-Wire总线完全充电之前过早关闭。这是因为DS2480B检测的是其1-Wire引脚的电压,而非1-Wire网络从器件一侧的电压。当1-Wire引脚电压到达内部门限值(典型值IACTPU × RT = 15mA × 100Ω = 1.5V)时,从器件一侧的电压将低于1-Wire引脚电压,差值为RT上的压降。1-Wire引脚电压超出该门限值时定时器启动,在有源上拉关闭前定时必须结束。但由于定时器启动早,因此结束的也早。不过,在有源上拉关闭后(关闭初期),将继续用弱上拉电流IWEAKPU为1-Wire总线充电,直到完全充电。
临界参数简单来说,可将1-Wire网络比作一个在通信过程中不断充放电的有损耗电容。因此,在确定驱动器性能时,任何影响网络充电和放电过程的因素都是必须考虑的参数。描述DS2480B驱动器的硬件定义的重要参数包括:
- 1-Wire弱上拉电流,IWEAKPU
- 1-Wire有源上拉电流,IACTPU
- 有源上拉开启门限,VIAPO
- 有源上拉定时器门限,VIAPYO
- 有源上拉开启时间, tAPUOT (标准速率时为2.0µs, 高速模式下为0.5µs)
1-Wire主机时序配置DS2480B具有不同于标准速率的伸缩速率模式。这一特别伸缩速率模式允许对1-Wire时隙进行微调。复位/在线检测序列的时间是固定的。可以通过写控制寄存器来设置的时序参数如下:
- 写1低电平时间(tLOW1)
- 数据采样偏移(tDSO)
- 写0恢复时间(tREC0)
- 下降沿压摆率(DS2480B产生的下降沿)
表1. 可变参数:仅针对伸缩模式
表2. 固定参数:伸缩模式和高速模式
数据采样偏移和写0恢复时间参数由同一寄存器值控制。可以这样做是因为这两个参数都受1-Wire网络充电速度的影响。在达到逻辑1之前不需对1-Wire采样(tDSO功能)。反之,读时隙期间对1-Wire线完全充电所需的等待时间即可满足写0时隙的恢复时间(tREC0功能)。
如图2所示,写1时隙和读数据时隙由3部分组成:tLOW1, tDSO和tHIGH1。tLOW1可设为8µs至15µs。tDSO范围为3µs至10µs,tHIGH1固定为49µs,写1或读数据时隙的持续时间可在60µs至74µs之间任意设置。从1-Wire总线读数据(读时隙)时,在时隙开始后tLOW1 + tDSO时间内进行采样,即采样从下降沿开始后11µs至25µs之间。
图2. 写1时隙和读数据时隙
写0时隙(图3)包括两部分,tLOW0和tREC0。由于tLOW0固定为57µs ,tREC0介于3µs至10µs之间,因此写0时隙的持续时间为60µs至67µs。根据DS2480B从主机UART接收到的数据,各时隙之间有足够的空闲时间。
图3. 写0时隙
1-Wire从器件响应时序的时间取决于三个因素:主机下拉下降沿的压摆率;从器件的电气特性;主机和从器件之间的物理距离。在伸缩模式下,压摆率可以调节,上限为15V/µs,下限为0.55V/µs。但是,若压摆率设置的较低,则当tLOW1设置的较短时会起冲突。多次测试表明,1.37V/µs是一个较为理想的压摆率,适合几乎所有带或不带线路终端的应用。尽量避免设置到最快压摆率(15V/µs),除非线路连接有接适当的端接。无端接时可能会有明显的振铃,特别是当DS2480B驱动长电缆时。
怎样更改设置如附录A “选择配置参数值” 所示,采用如下配置:tLOW1 = 8µs,tDSO = 9µs,时序周期为66µs时可获得较佳性能。
可以下载(ZIP)一个可执行的Windows应用程序tmline.exe用于设置。必须先将该文件从ZIP文件夹中解压缩,然后移到Windows桌面。双击其图标运行程序,或右击该图标并选择"打开" 。程序会打开一个类似DOS的窗口,并执行以下几项任务:自检;检测底层驱动软件版本;显示Pulldown Slew Rate、Write 1 Low Time、Data Sample Offset/Write 0 Recovery Time的默认设置。如果tmline程序启动时1-Wire应用软件已经运行,则显示当前设置。
Current (STANDARD) 1-Wire line settings: PDSR = 1.37 V/us W1LT = 8 us DSOW0 = 6 ustmline程序要求用户输入的第一个参数为Pulldown Slew Rate。输入的数值为参数值代码,如表A所示。输入0至7表示选择新的值;输入8表示不改变设置退出程序。所有其他输入将被忽略。
Select the PDSR (pulldown slew rate): 0) 15 V/us 1) 2.20 V/us 2) 1.65 V/us 3) 1.37 V/us 4) 1.10 V/us 5) 0.83 V/us 6) 0.70 V/us 7) 0.55 V/us 8) EXIT Enter number: 3(例如用户输入:3)
输入有效数值后,下一个需要指定的参数为Write 1 Low Time。
Select the W1LT (write-1 low time): 0) 8 us 1) 9 us 2) 10 us 3) 11 us 4) 12 us 5) 13 us 6) 14 us 7) 15 us 8) EXIT Enter number: 0(例如用户输入:0)
输入新的Write 1 Low Time后,用户输入最后一个的参数为Data Sample Offset/Write 0 Recovery Time。
Select the DSO/WOR (data sample offset/write 0 recovery): 0) 3 us 1) 4 us 2) 5 us 3) 6 us 4) 7 us 5) 8 us 6) 9 us 7) 10 us 8) EXIT Enter number: 6(例如用户输入:6)
输入有效数值后,tmline向端口适配器中的DS2480B写入一组新的参数。然后循环显示新的设置作为当前值,并请求输入一个新的下降沿摆率。输入"8"退出程序。1-Wire应用软件运行期间,新设置始终有效。
多从器件1-Wire网络的恢复时间 标准速率模式对于单从机网络,在标准速度模式下,1-Wire从器件数据资料中通常规定采用2.2kΩ上拉电阻和2.8V最低上拉电压时最小恢复时间为5µs。Maxim的应用笔记3829:确定多从机1-Wire网络的恢复时间,描述了在四种不同温度、两种不同电压的条件下如何确定多从器件1-Wire网络的恢复时间。由于DS2480B是一个5V器件,因此可以参照应用笔记3829中有关工作电压等于或大于4.5V时恢复时间的相关描述。温度高于或等于-5°C时,标准速率下的恢复时间规定为2 × N + 1µs (N为从器件个数)。因此,一个从器件的恢复时间为3µs,两个从器件为5µs,3个从器件为7µs ,4个从器件为9µs。
因此,根据附录B中最差情况(1.5mA IWEAKPU,9mA IACTPU)计算,并且参考“四个从器件的9µs恢复时间”这一配置为参考,可以得知DS2480B至少可以处理31个从器件。因此,标准速度下DS2480B驱动器的驱动强度至少为2.2kΩ有源上拉电阻的8倍。
高速模式对于单从机网络,在高速模式下,1-Wire从器件数据资料通常通常规定采用2.2kΩ上拉电阻和2.8V最低上拉电压时最小恢复时间为2µs。根据上文提及的应用笔记3829,温度高于等于-5°C时,高速模式下的恢复时间为1.37 × N + 0.5µs (N为从器件个数)。因此,一个从器件的恢复时间为1.87µs,两个从器件为3.24µs,三个从器件为4.61µs,四个从器件为5.98µs。
因此,以"两个从器件的恢复时间为3.24µs"为参考,并按比例缩减为1.8个从器件的恢复时间为3µs,然后在高速模式下,按最坏情况执行同样的计算,可以得出DS2480B至少可以处理9个从器件。因此,高速模式下DS2480B驱动器的驱动强度至少为2.2kΩ有源上拉电阻的5倍。
- VIAPYO通常大于按最差情况计算时的假定值。
- 只要电压升高至足以被认为是时隙结束,则从器件允许不完全再充电。
- DS2480B的VIH1也许低于数据资料中规定的最小值。
总结1 - Wire网络的可靠性同时取决于主机(驱动器)和从器件。运行于标准速度时,DS2480B 1-Wire驱动器采用伸缩速率并设置tLOW1 = 8µs、tDSO = tREC0 = 9µs时,可实现最优的性能。1.37V/µs的压摆率是一个较理想的设置。此时1-Wire从器件速率范围为15µs至54µs。只有一个从器件并且时基低于54µs时,系统将无法工作。下降沿摆率变为1.65V/µs或2.2V/µs,会增加网络中“临界”从器件正常工作的机会。为了适应那些速度较慢的1-Wire从器件(例如,60µs),必须将tHIGH1和tLOW0延长6µs,分别变为55µs和63µs。然而,当前版本的DS2480B尚不支持该功能。
以采用1-Wire驱动器的免费Windows软件OneWireViewer为例。标准速率下,OneWireViewer软件默认tLOW1 = 8µs、tDSO = 6µs、压摆率1.37V/µs。如上所述,将有必要将tDSO增加至9µs,OneWireViewer 4.01和更高版本将tDSO默认值改为9µs,从而适应本应用笔记的推荐值。tLOW1和压摆率的默认值分别保持为8µs和1.37V/µs。
DS2480B是强上拉1-Wire驱动器。相比采用2.2kΩ上拉电阻的电路而言,标准速度和高速模式下DS2480B的驱动能力至少为该电路的8倍和5倍。
附录A 选择配置参数值写1和读数据时隙由tLOW1、tDSO和 tHIGH1三部分组成,有64种组合,如表3所示。tDSO越长(写0时隙时为tREC0),网络再充电(恢复)需要的时间越长。然而, tLOW1和tDSO设为最大值时,采样时间点会推迟至时隙开始25µs后才开始采样。采样点也就是DS2480B读1-Wire总线的时间点。
表3. 时隙周期与tLOW1和tDSO的对应关系
1-Wire从器件的内部时基变化范围为15µs至60µs。因此,从器件发出信号0做为响应时,可以在时隙开始15µs后,停止总线拉低。压摆率设为1.37V/µs (标称值)时,从器件响应时隙,并在电压达到2.2V左右或tLOW1大约2µs后启动其定时器。为确保在这样快的从器件时仍然可以读到信号0,采样时间点不得晚于时隙开始后2 + 15 =17µs。所有周期不超过66µs的时序都符合这一条件。另一个从器件可能响应时隙,并在电压达到大约0.8V或tLOW1大约3µs后启动其定时器,并在60µs后停止拉低总线。在这种情况下,1-Wire总线可以在时隙开始后63µs开始充电。为了能将恢复时间设为最小值3µs,时序周期应取最小值66µs。快速的压摆率可使这一时间点与从器件开启定时器的时间点更加靠近。这可以稍微改善恢复时间,但若驱动器未接线路终端,这样做也增加了振铃。
如果写1和读数据时隙周期不为66µs会发生什么?快速1-Wire从器件支持较短的时序周期。但是,时隙周期每减小1µs,最慢的从器件的响应时间必须快1µs。在时隙周期为60µs的极限条件下,网络中能正常工作的最慢的从器件不能低于54µs。慢较的1-Wire从器件允许时隙周期超过66µs。然而,时隙周期每增加1µs,速度最快的从器件必须慢1µs以保持其在网络中的可读性。在时隙周期为74µs的极限条件下,网络中能正常工作的最快的从器件不能高于23µs。随机选择的1-Wire从器件中不满足上述最后一个条件的概率很低。因此,时隙周期小于64µs或大于68µs时可靠性较差。多数1-Wire从器件的速度大约为15µs到60µs这一范围的中心值,低于54µs的器件比较罕见。
由于选择的tDSO值也适用于写0时隙时再充电的tREC0,因此tREC0应尽可能设为最大值。该值取最大值决定了tLOW1 = 8µs和tDSO = 9µs时器件性能较佳(表3中的高亮部分)。再从从器件的角度来分析写0时隙,从器件在tLOW0大约3µs后启动定时器并在60µs后读数据(采样)。由于时隙开始57µs之后tLOW0结束,因此6µs后从器件开始采样,此时tREC0几乎结束。为了保证从器件不错过写0时隙的最后一阁采样点,其时基绝不能低于54µs。该要求也保证了读0时隙的最短恢复时间和写0时隙一样,即9µs。
附录B DS2480B可以驱动多少个从器件?这一问题并不能简单的回答。1-Wire从器件与理想电容器还是有些区别。不过,可以用一个电容模型来描述其工作情况,电压低于某一固定值时该电容模型呈现低容值,电压大于该值时该电容模型呈现高容值。大电容值相当于寄生电源电容,用于从器件的再充电过程。
为加快充电过程,DS2480B用2级电流源代替电阻。开始时先用小电流IWEAKPU充电,然后再采用较大电流IACTPU充电。图4中上升沿详细描述了这一过程。
图4. 上升沿
在t1时刻,下拉(主机或从器件)结束且弱上拉电流开始对1-Wire总线充电。总线上的负载和DS2480B的IWEAKPU值决定了上升斜率。在t2时刻,总线电压超过门限电压VIAPO。此时DS2480B充电电流切换到相对较大的电流IACTPU。因此,1-Wire总线电压开始快速上升。当t3时刻电压超过门限VIAPYO时,定时器开始计时,使IACTPU继续保持2µs (tAPUOT,伸缩模式)或0.5µs (高速模式)。定时结束后,IWEAKPU继续为1-Wire总线供电,直到DS2480B启动下一个时序或通讯周期。
采用恒定电流源对电容充电可以使用下面的公式进行描述:
V(t) = ICHARGE × t / C(等式1)
设定V(t) = VIAPO,令IWEAKPU等于ICHARGE,可以从等式(1)中得到到达门限值VIAPO的时间t2等于:
t2 = C × VIAPO / IWEAKPU(等式2)
t2时,充电电流从IWEAKPU变为IACTPU,并持续充电使电压由VIAPO达到并超过VIAPYO。将等式2展开可推导出充电至VIAPRO的时间t3等于:
t3 = C × [(VIAPTO - VIAPO) / IACTPU + VIAPO / IWEAKPU](等式3)
估算DS2480B可以驱动的从器件数目时,有必要将再充电过程分为三个阶段,并对每阶段进行单独分析。
估算DS2480B可以驱动的从器件数目时,有必要将再充电过程分为三个阶段,并对每阶段进行单独分析。 充电周期第1阶段用等式3计算。第2阶段用等式1计算,令ICHARGE等于IACTPU,t等于tAPUOT。这样可以得到在剩余时间内IACTPU继续充电所引起的电压增量。对于第三阶段,计算充电剩余时间,并用等式1确定IWEAKPU引起的额外电压变化。在给定从器件数目条件下,如果第2阶段和第3阶段时VIAPYO的电压变化导致其高于或等于工作电压,则器件完成了完全充电。能够满足这一条件的最大从器件数就是所期望的结果。这种算法可以用电子表格来实现,其中从器件数目做为变量。
经过上述计算后,可得到伸缩模式下可驱动的从器件数目是31。注意,该数字是一个保守的估计。实际可驱动的从器件数目要更多。表4列出了计算时用到的输入参数值。
表4. 伸缩模式下计算可驱动的从器件数目时用到的参数值
相同条件下,高速模式可算出可驱动9个从器件。考虑电缆电容时,必须确认第1阶段的持续时间不超过1µs。同样,该数字也是一个保守的估计。实际可驱动的从器件数目要更多。表5列出了计算时用到的参数值。
表5. 高速模式下计算可驱动的从器件数目时用到的参数值
注意,为简单起见,假定从器件开始再充电的时间与电压到达VIAPYO的时间重合。实际再充电可能开始的早一些或迟一些,与数据流成动态变化。再充电开始的越早,到达VIAPYO越晚,以补偿额外充电所需的能量。如果再充电开始较晚,充电需要的能量较少;第1阶段的持续时间越短,第3阶段补偿的时间就越长。
注意,这些计算不考虑连接主机和从器件的电缆的电容。如需得出采用某一特定的电缆可以支持多少从器件,先计算出电缆电容,并在计算第1阶段持续时间以及第2和第3阶段电压变化量时将其计入从器件总电容。
附录C 网络过载条件1-Wire总线有两种类型的过载,容性过载和直流过载。电容过载表现为恢复时间不足。它通常表现为写0时隙末尾的一个毛刺,即再充电未完成时就开始下一个时序。如果遵从本应用笔记中的建议进行设置和加载,不大可能发生电容过载。
如果1-Wire和GND之间接一个阻值约为3kΩ的电阻,则会发生直流过载。额外的“漏电流”导致恢复时间内1-Wire电压跌至低于驱动器的电源电压。如果出现这种情况,将在上升沿出现直流过载,如图5所示。1-Wire电压升至VDD后,一旦IACTPU结束,1-Wire电压将降至较低的电压。
图5. 上升沿DC过载
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)