一文看懂单总线协议(1-wire)

单总线(1-Wire BUS)通讯协议 单总线(1-Wire BUS) 阅读详情
AI摘要

本文详细介绍了单总线协议的概念、特点及应用,并以DS18B20为例阐述了单总线协议的时序要求及器件访问步骤。

一、什么是单总线协议?

1、单总线协议概念及特点

单总线(1-wire)是美国DALLAS公司推出的外围串行扩展总线技术。与SPI、I²C串行数据通信方式不同,它采用单根信号线传输。 这种协议由一个总线主节点、或多个从节点组成系统,通过根信号线对从芯片进行数据的读取。每一个符合单总线协议的从芯片都有一个唯一的地址,包括48位的序列号、8位的家族代码和8位的CRC代码。主芯片根据64位寻址对各个芯片进行双向通信,因此其协议对时序的要求较严格,初始化、写bit或读bit都有严格的时序要求,但是位于位之间没有严格要求。

单总线的数据传输速率一般为16.3Kbit/s,最大可达142 Kbit/s,通常情况下采用100Kbit/s以下的速率传输数据。主设备I/O口可直接驱动200m范围内的从设备,经过扩展后可达1km范围。

这种传输方式信号线上既传输时钟又传输数据,而且数据传输是双向的,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点。

2、硬件结构

单总线只有一根数据线,设备(主机或从机)通过一个漏极开路或三态端口,连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设各所使用。单总线端口为漏极开路,其内部等效电路下图所示:
在这里插入图片描述

单总线电路外接一个约5K的上拉电阻,当单总线处于空闲状态时为高电平,如果总线保持低电平超过480us,总线上的所有器件将复位。另外,在寄生方式供电时,为了保证单总线器件在某些工作状态下(如温度转换期间、EEPROM写入等)具有足够的电源电流,必须在总线上提供强上拉。

3、单总线协议应用

单总线器件主要有数字温度传感器(如DS18B20)、DHT11、A/D转换器(如DS2450)、门标、身份识别器(如DS1990A)、单总线控制器(如DS1WM)等。

二、单总线协议时序(以DS18B20为例)

DS18B20 需要严格的单总线协议以确保数据的完整性。协议包括集中单总线信号类型:复位脉冲、存在脉冲、写 0、写 1、读 0 和读 1。所有这些信号,除存在脉冲外,都是由总线控制器发出的。

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

1、初始化(复位脉冲 + 存在脉冲)

复位序列:复位脉冲和存在脉冲
在初始化序列期间,总线控制器拉低总线并保持 480us 以发出(TX)一个复位脉冲,然后释放总线,进入接收状态(RX)。单总线由 5K 上拉电阻拉到高电平。当DS18B20 探测到 I/O 引脚上的上升沿后,等待 15-60us,然后发出一个由 60-240us低电平信号构成的存在脉冲。
在这里插入图片描述

2、读/写时序

(1)写时序

写时序分为写 1 时序和写 0 时序,总线控制器通过写 1 时序写逻辑 1 到
DS18B20,写 0 时序写逻辑 0 到 DS18B20。所有写时序必须最少持续 60us,包括两个写周期之间至少 1us 的恢复时间。当总线控制器把数据线从逻辑高电平拉到低电平的时候,写时序开始,如下图所示:
在这里插入图片描述
总线控制器要生产一个写时序,必须把数据线拉到低电平然后释放,在写时序开始后的 15us 释放总线。当总线被释放的时候,5K 的上拉电阻将拉高总线。总控制器要生成一个写 0 时序,必须把数据线拉到低电平并持续保持(至少 60us)。

总线控制器初始化写时序后,DS18B20 在一个 15us 到 60us 的窗口内对 I/O 线采样。如果线上是高电平,就是写 1。如果线上是低电平,就是写 0。

(2)读时序

总线控制器发起读时序时,DS18B20 仅被用来传输数据给控制器。因此,总线控制器在发出读暂存器指令[BEh]或读电源模式指令[B4H]后必须立刻开始读时序,DS18B20可以提供请求信息。除此之外,总线控制器在发出发送温度转换指令[44h]或召回 EEPROM 指令[B8h]之后读时序。

所有读时序必须最少 60us,包括两个读周期间至少 1us 的恢复时间。当总线控制器把数据线从高电平拉到低电平时,读时序开始,数据线必须至少保持 1us,然后总线被释放。在总线控制器发出读时序后,DS18B20 通过拉高或拉低总线上来传输 1 或 0。当传输逻辑 0 结束后,总线将被释放,通过上拉电阻回到上升沿状态。从 DS18B20 输出的数据在读时序的下降沿出现后 15us 内有效。因此,总线控制器在读时序开始后必须停止把 I/O 脚驱动为低电平 15us,以读取I/O 脚状态。
在这里插入图片描述

三、DS18B20访问执行步骤

每一次 DS18B20 的操作都必须满足以下步骤,若是缺少步骤或是顺序混乱,器件将不会返回值。例如这样的顺序:发起 ROM 搜索指令[F0h]和报警搜索指令[ECh]之后,总线控制器必须返回步骤 1。

1、初始化

通过单总线的所有执行操作处理都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和其后由从机发出的存在脉冲。存在脉冲让总线控制器知道 DS18B20 在总线上且已准备好操作。

2、ROM操作指令

一旦总线控制器探测到一个存在脉冲,它就发出一条 ROM 指令。如果总线上挂有多只 DS18B20,这些指令将基于器件独有的 64 位 ROM 片序列码使得总线控制器选出特定要进行操作的器件。这些指令同样也可以使总线控制器识别有多少只,什么型号的器件挂在总线上,同样,它们也可以识别哪些器件已经符合报警条件。ROM 指令有 5 条,都是 8 位长度。总线控制器在发起一条 DS18B20 功能指令之前必须先发出一条 ROM 指令。ROM指令流程图如下:
在这里插入图片描述
在这里插入图片描述

(1)Search ROM [F0h] (搜索 ROM 指令)

当系统上电初始化的时候,总线控制器必须通过识别总线上所有 ROM 片序列码去得到从机的数目和型号。总线控制器通过搜索 ROM 指令多次循环搜索 ROM 编码,以确认所有从机器件。如果总线上只有一只从机,那么可以用较为简单的读取ROM 指令代替搜索 ROM 指令。在每次搜索 ROM 指令之后,总线控制器必须返回步骤 1。

(2)READ ROM [33h] (读取 ROM 指令)

只有在总线上存在单只 DS18B20 的时候才能使用这条命令。该命令允许总线控制器在不使用搜索 ROM 指令的情况下读取从机的 64 位片序列码。如果总线上有不止一只从机,当所有从机试图同时传送信号时就会发生数据冲突。

(3)MATH ROM [55h] (匹配 ROM 指令)

匹配 ROM 指令,后跟 64 位 ROM 编码序列,让总线控制器在多点总线上定位一只特定的 DS18B20。只有和 64 位 ROM 片序列码完全匹配的 DS18B20 才能响应随后的存储器操作指令;所有和 64 位 ROM 片序列码不匹配的从机都将等待复位脉冲。

(4)SKIP ROM [CCh] (忽略 ROM 指令)

这条指令允许总线控制器不用提供 64 位 ROM 编码就使用功能指令。例如,总线控制器可以先发出一条忽略 ROM 指令,然后发出温度转换指令[44h],从而完成温度转换操作。注意:当只有一只从机在总线上时,无论如何,忽略 ROM 指令之后只能跟着发出一条读取暂存器指令[BEh]。在单点总线情况下使用该命令,器件无需发回 64 位 ROM 编码,从而节省了时间。如果总线上有不止一只从机,若发出忽略 ROM 指令,由于多只从机同时传送信号,总线上就会发生数据冲突。

(5)ALARM SEARCH [ECH] (报警搜索指令)

这条命令的流程和搜索 ROM 指令相同,然而,只有满足报警条件的从机才对该命令作出响应。只有在最近一次测温后遇到符合报警条件的情,DS18B20 才会响应这条命令。在每次报警搜索指令周期之后,总线控制器必须返回步骤 1。

3、DS18B20功能指令

在总线控制器发给欲连接的DS18B20一条ROM命令后,跟着可以发送一条DS18B20功能指令。这些命令允许总线控制器读写 DS18B20 的暂存器,发起温度转换和识别电源模式。功能指令流程图如下:
在这里插入图片描述
在这里插入图片描述

(1)CONVERT T [44h] (温度转换指令)

这条命令用以启动一次温度转换。温度转换指令被执行,产生的温度转换结果数据以 2 个字节的形式被存储在高速暂存器中,而后 DS18B20 保持等待状态。如果寄生电源模式下发出该命令后,在温度转换期间(tconv),必须在 10us(最多),内给单总线一个强上拉,见 DS18B20 供电节。如果DS18B20 以外部电源供电,总线控制器在发出该命令后跟着发出读时序,DS18B20 如处于转换中,将在总线上返回 0,若温度转换完成,则返回 1。

(2)WRITE SCRATCHPAD [4Eh] (写暂存器指令)

这条命令向 DS18B20 的暂存器写入数据,开始位置在 TH 寄存器(暂存器的第 2个字节),接下来写入 TL 寄存器(暂存器的第 3 个字节),最后写入配置寄存器(暂存器的第 4 个字节)。数据以最低有效位开始传送。上述三个字节的写入必须发生在总线控制器发出复位命令前,否则会中止写入。

(3)READ SCRATCHPAD [BEh] (读暂存器指令)

这条命令读取暂存器的内容。读取将从字节 0 开始,一只进行下去,知道第 9 字节(字节 8,CRC)读完,如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。

(4)COPY SCRATCHPAD [48h] (拷贝暂存器指令)

这条命令把 TH,TL 和配置寄存器(第 2、3、4 字节)的内容拷贝到 EEPROM 中。如果使用寄生电源总线控制器必须在发出这条命令的 10us 内启动强上拉并最少保持 10ms。

(5)RECALL E2 [B8H] (召回 EEPROM 指令)

这条命令把报警触发器的值(TH 和 TL)以及配置数据从 EEPROM 拷回暂存器。总线控制器在发出该命令后读时序,DS18B20 会输出拷回标识:0 标识正在拷回,1标识拷回结束。这种拷回操作在 DS18B20 上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。

(6)READ POWER SUPPLY [B4h] (读电源模式指令)

总线控制器在这条命令发给 DS18B20 后发出读时序,若是寄生电源模式,DS18B20将拉低总线,若是外部电源模式,DS18B20 将会把总线拉高。

注意:
1.对于寄生电源模式下的 DS18B20,在温度转换和拷贝数据到 EEPROM 期间,必须给单总线一个强上拉。总线上在这段时间内不能有其它活动。
2.总线控制器在任何时刻都可以通过发出复位信号中止数据传输。

【通信协议】单总线协议详解——以DHT11为例 单总线概述 1、单总线的介绍 (1)、单总线也称为1—Wirebus,它是由美国DALLAS(达尔斯)公司推出的外围串行扩展总线。单总线系统中配置的各种器件,由DALLAS公司提供的专用芯片实现。 (2)、每个芯片都有64位ROM,厂家对每一芯片都用激光烧写编码,其中存有16位十进制编码序列号,它是器件的地址编码,以确保它挂在总线上后可被唯一地确定。除了器件的地址编码外,芯片内还包含收发控制和电源存储电路。这些芯片的耗电量都很小(空闲时为几微瓦,工作时为几毫瓦... 阅读详情

相关推荐

详解通信协议之单总线、UART、RS232、RS485通信协议

本文介绍的单总线、uart、RS232、RS485通信协议的规则和有缺点

qq_41818650的博客 5903

单总线协议

单总线(1-wire)是美国DALLAS(达尔斯)公司推出的外围串行扩展总线技术。与SPI、I²C串行数据通信方式不同,它采用单根信号线传输。这种协议由一个总线主节点、一个或多个从节点组成系统,通过根信号线对从芯片进行数据的读取。每一个符合单总线协议的从芯片都有一个唯一的地址,包括48位的序列号、8位的家族代码和8位的CRC代码。主芯片根据64位寻址对各个芯片进行双向通信,因此其协议对时序的要求较严格,初始化、写bit或读bit都有严格的时序要求,但是位于位之间没有严格要求。

weixin_46061266的博客 3011

one wire 1-Wire 单总线协议解析 - 简单易懂协议详解

123

代码打工人的博客 2万+

单片机的单总线协议

单片机的单总线协议

weixin_63791423的博客 2985

解析单总线协议(1-wire)

一、单总线协议(1-wire) 1.定义:主机和从机通过1根线进行通信,在一条总线上可挂接的从器件数量几乎不受限制。 2.特点:这是由达拉斯半导体公司推出的一项通信技术。它采用单根信号线,既可传输时钟,又能传输数据,而且数据传输是双向的。 3.优点:单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等。 二、单总线通信过程 1.初始化 初始化过程 = 复位脉冲 + 从机应

我的博客 7万+

通信协议 之 1-wire 单总线

1-Wire单总线协议是Dallas公司开发的一种简单通信协议,采用单根信号线实现双向数据传输。其最大特点是通过单GPIO接口即可实现通信,具有硬件资源少、成本低、便于扩展等优势。协议工作时序严格,包含复位脉冲、应答脉冲、读写时序等关键环节。以DS18B20温度传感器为例,通信过程包括初始化、ROM命令(如搜索、匹配、跳过ROM等)和功能命令三个阶段。该协议支持多设备挂载,通过64位ROM代码识别设备,适用于51/32等微控制器环境,尤其适合温度采集等简单数据通信场景。

zx18831955136的博客 1846

1-Wire(单总线)通信协议详解------DS18B20温度传感器驱动-------附代码详解

1.单总线(1-Wire BUS)是由Dallas公司开发的一种通用数据总线DQ3.异步(没有时钟线)、半双工(接收和发送不能同时进行)4.单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线。

qq_67808371的博客 7967

第九章、1-Wire单总线

1-Wire单总线技术是一种由Dallas公司开发的高效通信协议,采用单根信号线同时实现供电和数据传输(半双工通信)。该协议支持16.3Kbit/s至142Kbit/s的传输速率,典型应用包括DS18B20温度传感器、DHT11温湿度传感器等设备。通信过程包括初始化、ROM命令和功能命令三个阶段,采用严格的时序控制(如复位脉冲、写/读时序)。DS18B20作为典型单总线器件,具有-55~+125℃测量范围,支持9~12位可调分辨率,通过64位唯一ROM地址实现多点组网。文中详细给出了STM32驱动DS18B

a2123827797的博客 1298

【通信协议】1-Wire 单总线

一、1-Wire相关介绍 1-Wire由 美国Dallas(达拉斯) 公司推出 采用单根信号线,既传输时钟又传输数据,而且数据传输是双向的 单总线的数据传输速率一般为16.3Kbit/s,最大可达142 Kbit/s,通常情况下采用100Kbit/s以下的速率传输数据 1-Wire线端口为漏极开路构或三态门的端口,因此一般需要加上拉电阻Rp,通常选用5K~10KΩ 1-Wire数据传输的次序为从...

淹死的鱼 2万+

单总线协议(1—wire)

一、单总线协议(1-wire) 1.定义:主机和从机通过1根线进行通信,在一条总线上可挂接的从器件数量几乎不受限制。 2.特点:这是由达拉斯半导体公司推出的一项通信技术。它采用单根信号线,既可传输时钟,又能传输数据,而且数据传输是双向的。 3.优点:单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等。 二、单总线通信过程 1.初始化 初始化过程

qq_35535992的博客 3404

STM32 单总线1-wire

概述        1-wire总线是一个具有单总线主机和一个或者多个从机的系统,一般在任何情况下单总线设备(如18B20)都是从机设备,主机一般是一颗MCU。它采用单根信号线,既可传输时钟,又能传输数据,而且数据传输是双向的。 1、初始化(复位和应答)        主机通过拉低单总线480 ~ 960 us产生复位脉冲,然后释放总线,进入接收模式。主机释放总线时,会产生低电平跳变为高电平...

lly_3485390095的博客 7083

1-Wire单总线

1 wire

zhen 4112

单总线协议解析(1-wire)

一、单总线协议(1-wire) 1.定义:主机和从机通过1根线进行通信,在一条总线上可挂接的从器件数量几乎不受限制。 2.特点:这是由达拉斯半导体公司推出的一项通信技术。它采用单根信号线,既可传输时钟,又能传输数据,而且数据传输是双向的。 3.优点:单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等。 二、单总线通信过程 1.初始化 初始化过程 = 复位脉冲 + 从机应答脉冲。 主机通过拉低单总线480 ~ 960 us产生复位脉冲,然后释放总线,进入接收模式。主机释放总线时,

sinat_26528193的专栏 3246

FPGA - 单总线协议(one-wire)

单总线(one-wire)是美国 DALLAS 公司推出的外围串行扩展总线技术,与 SPI、I2C 等串行数据通信方式不同,它采用单根信号线,既传输时钟又传输数据,而且数据传输是双向的。它具有节省 I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。单总线英文名 1-Wire,传输速率一般是 15.3Kbit/s,最大可达 142Kbit/s,通常采用 100Kbit/s 以下的速率传输数据。

博客 7242

one wire(单总线)FPGA代码篇

初始化阶段:主机发送一个复位信号,将总线上的所有设备复位。数据传输阶段:主机发送一个时钟信号,从机根据主机的时钟信号逐位发送数据。主机可以接收从机发送的数据,也可以向从机发送数据。结束阶段:主机发送一个停止信号,结束通信过程。在One-Wire协议中,主机和从机通过DQ线进行通信。主机向DQ线发送时钟信号,从机根据时钟信号将数据写入DQ线。主机读取DQ线上的电压变化,从而获取从机发送的数据。由于DQ线上只有一条信号线,因此需要采用特殊的操作来区分数据位和应答位。

weixin_66634995的博客 5280

ArcGIS将以大西洋居中的世界地图以中国居中显示

ArcGIS将以大西洋居中的世界地图以中国居中显示 并进行经纬度格网的调整输出

jiekeheiguanglan的博客 5705

经典的1-Wire单总线原理及应用

关注+星标公众号,不错过精彩内容编排| strongerHuang微信公众号 |嵌入式专栏在嵌入式底层通信中,像485总线、I2C总线等都是比较常见的通信总线。今天给大家分享一种相对...

strongerHuang 5505

从BUCK-BOOST到反激:一个‘拆电感’的视角,轻松理解多路输出交叉调整

本文从BUCK-BOOST电路到反激变换器的演变入手,通过‘拆解电感’的独特视角解析多路输出交叉调整机制。深入探讨了反激电路的能量暂存方式、传递路径变化及电压关系,并结合具体参数对比揭示其特性。针对多路输出中的电压平衡问题,提供了绕组排布优化、元器件选型等实战技巧,帮助工程师有效提升电源系统的稳定性与效率。

weixin_33738578的博客 437
上一篇: 【FPGA】SCCB通信协议
下一篇: 【FPGA】FPGA实现UART串口通信回环
白码王子小张
博客等级 码龄7年 6665粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值