良许Linux教程网 干货合集 通信教程 | 1-Wire单总线原理及应用

通信教程 | 1-Wire单总线原理及应用

在嵌入式底层通信中,有许多常见的通信总线,如485总线和I2C总线等。除了这些流行的总线之外,还有一种常用的总线叫做1-Wire单总线。1-Wire是一种由美国DALLAS公司推出的外围串行扩展总线技术。与SPI、I²C串行数据通信方式不同,1-Wire采用单根信号线,同时传输时钟和数据,而且数据传输是双向的,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等多种优点。虽然1-Wire不像485和I2C那么流行,但在某些情况下也是一种不错的选择。

image-20231111211141913
image-20231111211141913

1-Wire器件按照串行协议进行供电和数据通信,能够以无与伦比的优势为系统增添特定功能,大大简化系统的互联电路。

1-Wire 产品特点 :

  • 通过单线接口提供器件控制及操作
  • 每个器件具有唯一的工厂光刻ID
  • 通过单总线供电(“寄生电源”)
  • 可挂接多点:单一总线可挂接多个器件
  • 提供额外的ESD保护

1-Wire原理

顾名思义,单总线即只有一根数据线,系统中的数据交换、控制都由这根线完成。

设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线,其内部等效电路如图所示:

image-20231111211131511
image-20231111211131511

单总线通常要求外接一个约为4.7kΩ的上拉电阻,这样,当总线闲置时,其状态为高电平。

主机和从机之间的通信主要通过3个步骤完成,分别为:初始化1-wire器件、识别1-wire器件和交换数据

由于它们是主从结构,只有主机呼叫从机时,从机才能应答,因此主机访问1-wire器件都必须严格遵循单总线命令序列,即初始化、ROM、命令功能命令。如果出现序列混乱,1-wire器件将不响应主机(搜索ROM命令,报警搜索命令除外)。

1-Wire时序描述

所有的单总线器件都要遵循严格的通信协议,以保证数据的完整性。

**
**

1-wire协议定义了复位脉冲、应答脉冲、写0、读0和读1时序等几种信号类型。

所有的单总线命令序列(初始化,ROM命令,功能命令)都是由这些基本的信号类型组成的。在这些信号中,除了应答脉冲外,其它均由主机发出同步信号,并且发送的所有命令和数据都是字节的低位在前。

image-20231111211146623
image-20231111211146623

其中,(a)是初始化时序,初始化时序包括主机发出的复位脉冲和从机发出的应答脉冲。

主机通过拉低单总线至少480μs产生Tx复位脉冲;然后由主机释放总线,并进入Rx接收模式。主机释放总线时,会产生一由低电平跳变为高电平的上升沿,单总线器件检测到该上升沿后,延时15~60μs,接着单总线器件通过拉低总线60~240μsμ来产生应答脉冲。主机接收到从机的以应答脉冲后,说明有单总线器件在线,然后主机就可以开始对从机进行ROM命令和功能命令操作。

图中的(b)、(c)、(d)分别是写1、写0和读时序。

在每一个时序中,总线只能传输一位数据。所有的读、写时序至少需要60μs,且每两个独立的时序之间至少需要1μs的恢复时间。

图中,读、写时序均始于主机拉低总线。在写时序中,主机将在拉低总线15μs之内释放总线,并向单总线器件写1;若主机拉低总线后能保持至少60μs的低电平,则向单总线器件写0。单总线器件仅在主机发出读时序时才向主机传输数据,所以,当主机向单总线器件发出读数据命令后,必须马上产生读时序,以便单总线器件能传输数据。

在主机发出读时序之后,单总线器件才开始在总线上发送0或1。若单总线器件发送1,则总线保持高电平,若发送0,则拉低总线。

由于单总线器件发送数据后可保持15μs有效时间,因此,主机在读时序期间必须释放总线,且须在15μs的采样总线状态,以便接收从机发送的数据。

1-Wire应用

单总线应用在很多领域,比如:单总线IC器件、存储器、温湿度传感器、逻辑器件、时钟芯片等。

学习过单片机的同学,应该大多数都用过DS18B20这个经典的温度传感器,单片机与它的连接(通信)就是通过单总线(1-Wire)实现的。

DS18B20电路图:

image-20231111211150561
image-20231111211150561

DS18B20单总线应用:

image-20231111211153642
image-20231111211153642

此外,很多器件(模组)为了适应不同需求,会兼容很多通信接口,比如I²C、 SPI、 1-wire同时支持。

除了这个经典的DS18B20之外,其实我们接触的很多器件,也是支持单总线通信的。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部