0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过调节上拉电阻来提高1-wire总线器件的驱动能力

电子设计 来源:单片机与嵌入式系统应用 作者:朱立强 , 金晖 2021-05-05 09:53 次阅读

Dallas公司生产的集成电路中,广泛应用了1-wire总线。主机只需1根连线就可以把一个或数个1-wire总线器件连接起来,实现有效可靠的数据通信。但是,在使用1-wire总线驱动多个器件、连接电缆线较长的场合,它的驱动能力是否适应;或者说,应该如何提高1-wire总线器件的驱动能力? 本文就此问题进行分析和实验。

1 1-wire总线简介

从 Dallas公司提供的图1所示读写时序图可以看出,主机读DS18B20 时,首先应该把线拉低至少1μ s,然后在15μs内读总线的逻辑状态(t0~t1)。DS18B20 则在主机拉低总线1μs内开始输出数据,如果为0,继续拉低总线,并在15~60μs(t1~t2)之间释放总线(典型值为30μs),由上拉电阻把总线拉至高电平;如果数据位为1,则在主机拉低总线1μs后,DS18B20 的DQ端呈现开漏状态,一旦主机释放总线,上拉电阻就把总线拉至高电平。在60μs(t2)之后,1-wire总线还必须继续保持高电平至少1μs,作为两个数据位之间的分隔(称之为“恢复时间”)。由此可见,为了保证所读数据的可靠性,89C2051必须在15μs前读取总线的逻辑状态。

图1 1-wire总线读写时序图

主机在对DS18B20进行写入操作时,首先应该拉低1- wire总线至少1μs 。然后,如果写入数据位是 0,则继续拉低总线至60μs结束(t2);否则就释放总线,由上拉电阻把总线拉成高电平。而DS18B20则在15~60μs之间(t1~t2)读入数据(典型值为15μs)。同样,在60μs之后(t2),1-wire总线还必须继续保持高电平至少1μs,作为两个数据位之间的分隔。

2 实验电路参数的分析与实验结果

以1-wire总线的数字温度集成电路DS18B20与单片机89C2051 为例,其接口电路如图2所示,时钟频率为12MHz 。89C2051的P1.0口与DS18B20的DQ相连。1-wire总线器件的DQ口(数据口线)都为开漏结构,以便可以在1-wire总线上挂接多个DS18B20。因此,在1-wire总线上应该加接1个上拉电阻,文献推荐值为4.7kΩ。笔者使用2 m长的4芯屏蔽电缆连接89C2051 和DS18B20 ,其中一芯以及外屏蔽单端接地,其余分别为VCC、GND 和DQ 。经测试,DQ线到地的分布电容为131pF/m 。为了能够测试1-wire总线的驱动能力,在DQ线上加接电容,以便近似地模拟长电缆,等效电路如图3所示。可以通过选择上拉电阻的值,合理安排 t0~t1和t0~t2两个时间段,以提高1-wire总线器件驱动长总线的能力。自然,上拉电阻越小,其拉动1-wire总线的能力就越大,但是要受到 DS18B20的低电平吸入电流的限制。综合考虑各种因素,选取上拉电阻值为1.5kΩ。

图2 89C2051与DS18B20接口电路

图3 1-wire总线逻辑电平转换时的等效电路

电工学可知,图3(a)中电容C上的电压为

在t0~t1阶段,由 89C2051拉低1-wire总线并保持至少1μs。89C2051的I/O口输出低电平时可吸入20mA的电流,其内阻因是非线性特性,不会大于 50Ω。DS18B20的逻辑0输入电平最大可为0.8V;89C2051为0.9V,取 VC = 0.8V,VCC = 5V。把上述数据代入方程(4),取负载电容C = 10nF,可以得到t =0.9μs;加上SETB指令需时1μs ,稳定所需时间(至少1μs),取t0~t1 = 3μs。

在t1~t2阶段,无论是89C2051还是DS18B20输出0电平,由于总线电平已经是0电平,不存在阶跃问题,所以不必计算。

如果是逻辑1,不管是由89C2051还是由DS18B20输出, 两者的输出FET均为开漏状态(89C2051有弱上拉,可以忽略),由上拉电阻把1-wire总线从0电平上拉到高电平。可以用于把总线从0电平上拉到 1电平的时间t1-t2 = 15 - 3 - 1 = 11μs,其中1μs在读DS18B20时用于读操作,在写DS18B20时用来补偿指令MOV DQ,C所需的时间。DS18B20的逻辑高电平最低为2.2V,89C2051为1.9V,取VC = 2.2V 。

把上述数据代入方程(2),当上拉电阻为4.7kΩ时,可以算得C = 4.0nF;当上拉电阻为1.5kΩ时,C = 12.6nF,相当于96.5m长的屏蔽电缆。

3 实验结果

表1为实验数据,使用2m长的4芯屏蔽电缆,在总线上加接电容以模仿长电缆。

表1 1-wire总线器件驱动能力与上拉电阻的关系

从表1可以看出,实验结果与理论计算基本相符。由于实验条件的限制,测试是相当粗糙的。更细致的调节,可以使用示波器观察1-wire总线上的波形来对电路参数与程序进行微调,以求得到更好的结果。笔者曾以其它的定时关系编制了实验程序,其驱动能力均不如本程序。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 集成电路
    +关注

    关注

    5396

    文章

    11645

    浏览量

    363762
  • 单片机
    +关注

    关注

    6044

    文章

    44632

    浏览量

    639488
  • 总线
    +关注

    关注

    10

    文章

    2909

    浏览量

    88499
收藏 人收藏

    相关推荐

    基于DS2432的USB口1-Wire总线适配器的设计

    电阻器,它可使USB口的D+端上拉到DS2490S的VB端,表示USB主机系统是高速设备,同时这个
    发表于 07-11 07:24

    基于C++模板技术的1-wire总线编程

    atmega48 的 uart 数据链路实现的 1-wire 总线总线具有枚举功能,其挂有多个 ds18b20 器件。ds18b20_
    发表于 11-22 23:40

    1-Wire时序的理解及配置

    /μs。DS2480B是强1-Wire驱动器。相比采用2.2kΩ
    发表于 11-12 00:17

    电阻与下拉作用

    的输入。 -------电阻是用来解决总线驱动能力不足时提供电流的。一般说法是电流,下拉
    发表于 06-28 06:21

    微控制器和1-Wire温度传感器的软件接口

    3V至5.5V电源端的4.7kf2电阻提供。由于每个器件具有唯一的64位ROM识别码,所以挂接在总线上的
    发表于 12-17 11:29

    请问我这样通过电阻提高IO驱动能力能行吗?

    这个是在书上截取的一段话,照这样下去,要提高IO的驱动能力,外部多并联几个电阻或者接一个小一点的
    发表于 08-02 04:36

    1-wire总线的基本原理

    1-wire总线的基本原理:1-wire总线是Maxim 全资子公司,Dallas 的一项专有技术与目前多数标准串行数据通信方式,如SPI/I2C/MICROWIRE 不同它采用
    发表于 09-26 16:57 55次下载

    1-wire总线的基本原理

    1-wire总线的基本原理 1-wire总线是Maxim 全资子公司Dallas 的一项专有技术与目前多数标准串行数据通信方式如SPI/I2C/MICROWIRE
    发表于 02-05 17:58 79次下载

    1-Wire器件与8051系列单片机的软件接口

    摘 要:分析了1-Wire总线的硬件结构和通信协议,结合实际应用设计了1-Wire器件与8051系列单片机的软件接口。 关键词:1-Wire
    发表于 05-17 12:40 2111次阅读
    <b class='flag-5'>1-Wire</b><b class='flag-5'>器件</b>与8051系列单片机的软件接口

    1-Wire总线主机

    Abstract: Communication with 1-Wire slave devices requires a 1-Wire master. There are numerous ways
    发表于 10-19 17:02 53次下载

    如何使用微处理器的UART实现1-Wire®总线主机

    实现1-Wire时隙以及复位和在线检测脉冲。通过包含深度发送和接收FIFO,可以在1-Wire总线上传输几个字节值,而主处理器只需要每位几个时钟周期即可。
    的头像 发表于 05-28 16:24 4185次阅读
    如何使用微处理器的UART<b class='flag-5'>来</b>实现<b class='flag-5'>1-Wire</b>®<b class='flag-5'>总线</b>主机

    通过串行接口读写1-Wire器件

    本应用笔记介绍了1-Wire协议在新旧器件中的电气方面。一个特别的章节解释了如何为由新旧1-Wire从机组成的网络确定适当的时序参数。1-Wire母版概念部分提供了详细讨论
    的头像 发表于 02-21 17:21 1975次阅读
    <b class='flag-5'>通过</b>串行接口读写<b class='flag-5'>1-Wire</b><b class='flag-5'>器件</b>

    电阻与下拉电阻

    下拉就是接地,就相当于升压,提高驱动能力或者稳定性。
    的头像 发表于 02-23 16:20 2371次阅读

    使用UART实现1-Wire总线主控

    本应用笔记解释了如何使用微处理器的UART实现1-Wire总线主机。它包括对所需电气接口、UART配置以及UART和1-Wire信号之间的时序关系的说明。此外,它还参考了UART 1-Wire
    的头像 发表于 03-29 11:28 4263次阅读
    使用UART实现<b class='flag-5'>1-Wire</b><b class='flag-5'>总线</b>主控

    什么是电流?什么是灌电流?它们为什么能够衡量输出驱动能力呢?

    电阻是用来解决总线驱动能力不足时提供电流的,一般说法是电流。下拉
    的头像 发表于 08-22 14:20 2134次阅读