单总线协议-以DS18B20举例

一、概述

        1-wire 单总线是Maxim 全资子公司 Dallas 的一项专有技术。与目前多数标准串行数据通信方式,如SPI/I2C/MICROWIRE 不同,它采用单根信号线,既传输时钟,又传输数据,而且数据传输是双向的。它具有节省 I/O 口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。

        1-wire 单总线适用于单个主机系统,能够控制一个或多个从机设备。当只有一个从机位于总线上时,系统可按照单节点系统操作;而当多个从机位于总线上时,则系统按照多节点系统操作。

        为了较为全面地介绍单总线系统,将系统分为三个部分讨论:硬件结构、命令序列和信号方式信号类型和时序。

二、硬件结构

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

      

       单总线要求外接一个约5k 的上拉电阻;这样,单总线的闲置状态为高电平。不管什么原因,如果传输过程需要暂时挂起,且要求传输过程还能够继续的话,则总线必须处于空闲状态。位传输之间的恢复时间没有限制,只要总线在恢复期间处于空闲状态(高电平)。如果总线保持低电平超过 480us,总线上的所有器件将复位。另外在寄生方式供电时,为了保证单总线器件在某些工作状态下(如温度转换期间 EEPROM写入等)具有足够的电源电流,必须在总线上提供强上拉(如图 1所示的MOSFET )。

三、 命令序列

       典型的单总线命令序列如下 :
       第一步:初始化
       第二步:ROM命令(跟随需要交换的数据 )
       第三步:功能命令(跟随需要交换的数据)
       每次访问单总线器件,必须严格遵守这个命令序列,如果出现序列混乱,则单总线器件不会响应主机。但是,这个准则对于搜索 ROM命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步  。

    3 .1 初始化

      基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道,总线上有从机设备,且准备就绪 。复位和应答脉冲的时间详见单总线信号部分  。

    3.2 ROM命令

     在主机检测到应答脉冲后,就可以发出ROM 命令。这些命令与各个从机设备的唯一64位ROM代码相关,允许主机在单总线上连接多个从机设备时,指定操作某个从机设备。这些命令还允许主机能够检测到总线上有多少个从机设备以及其设备类型,或者有没有设备处于报警状态。从机设备可能支持 5 种ROM命令(实际情况与具体型号有关), 每种命令长度为8 位。主机在发出功能命令之前,必须送出合适的 ROM命令。ROM命令的操作流程如图2 所示。下面将简要地介绍各个ROM命令的功能,以及使用在何种情况下。

      3.2.1 搜索ROM[F0h]

        当系统初始上电时,主机必须找出总线上所有从机设备的 ROM代码,这样主机就能够判断出从机的数目和类型。主机通过重复执行搜索 ROM循环(搜索ROM命令跟随着位数据交换),以找出总线上所有的从机设备。如果总线只有一个从机设备,则可以采用读 ROM命令来替代搜索 ROM命令。关于搜索 ROM命令的详细解释,请参见附录 A。 在每次执行完搜索ROM循环后,主机必须返回至命令序列的第一步(初始化) 。

     3.2.2 读ROM[33h]( 仅适合于单节点)

     该命令仅适用于总线上只有一个从机设备。它允许主机直接读出从机的 64位ROM代码,而无须执行搜索 ROM过程。如果该命令用于多节点系统,则必然发生数据冲突,因为每个从机设备都会响应该命令。 

    3.2.3 匹配ROM[55h]

      匹配ROM命令跟随 64位ROM代码,从而允许主机访问多节点系统中某个指定的从机设备。仅当从机完全匹配 64位ROM代码时,才会响应主机随后发出的功能命令;其它
设备将处于等待复位脉冲状态。 

    3.2.4 跳越ROM[CCh] (仅适合于单节点)

      主机能够采用该命令同时访问总线上的所有从机设备,而无须发出任何ROM 代码信息。例如,主机通过在发出跳越 ROM命令后跟随转换温度命令[44h] ,就可以同时命令总线上所有的 DS18B20 开始转换温度,这样大大节省了主机的时间。值得注意,如果跳越 ROM命令跟随的是读暂存器[BEh] 的命令(包括其它读操作命令)则该命令只能应用于单节点系统,否则将由于多个节点都响应该命令而引起数据冲突  。

    3.2.5 报警搜索[ECh]( 仅少数1-wire 器件支持)

      除那些设置了报警标志的从机响应外,该命令的工作方式完全等同于搜索 ROM命令。该命令允许主机设备判断那些从机设备发生了报警(如最近的测量温度过高或过低等 )。同搜索ROM命令一样,在完成报警搜索循环后,主机必须返回至命令序列的第一步  。

    3 3  功能命令(以DS18B20 为例)

    在主机发出 ROM命令,以访问某个指定的 DS18B20 接着就可以发出 DS18B20, 支持的某个功能命令。这些命令允许主机写入或读出 DS18B20 暂存器,启动温度转换以及判断从机的供电方式。 DS18B20 的功能命令总结于表1中,并在图3 流程图中作了说明 

表1 DS18B20 功能命令集

       1、在温度转换和复制暂存器数据至 EEPROM期间,主机必须在单总线上允许强上拉。并且在此期间,总线上不能进行其它数据传输 ;
       2、通过发出复位脉冲,主机能够在任何时候中断数据传输;
       3、在复位脉冲发出前,必须写入全部的三个字节 。

 

四、信号方式

      所有的单总线器件要求采用严格的通信协议, 以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、 应答脉冲、 写0、写1、 读0和读1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号。并且发送所有的命令和数据都是字节的低位在前,这一点与多数串行通信格式不同(多数为字节的高位在前)。

    4.1初始化序列:复位和应答脉冲

      单总线上的所有通信都是以初始化序列开始,包括:主机发出的复位脉冲及从机的应答脉冲 ,如图4 所示。

     当从机发出响应主机的应答脉冲时,即向主机表明它处于总线上,且工作准备就绪。在主机初始化过程,主机通过拉低单总线至少 480us, 以产生(Tx) 复位脉冲。接着,主机释放总线,并进入接收模式(Rx)。 当总线被释放后,5k上拉电阻将单总线拉高。在单总线器件检测到上升沿后,延时 15-60us,接着通过拉低总线 60-240 us, 以产生应答脉冲 。

   4.2  读/写时隙

     在写时隙期间,主机向单总线器件写入数据;而在读时隙期间,主机读入来自从机的数据。在每一个时隙,总线只能传输一位数据。 

    4.2.1  写时隙

         存在两种写时隙:"写1" 和"写0" 。主机采用写 1 时隙向从机写入 1,而采用写 0 时隙向从机写入 0。 所有写时隙至少需要 60 us,且在两次独立的写时隙之间至少需要 1u s 的恢复时间。两种写时隙均起始于主机拉低总线(图5 所示)。 产生写 1 时隙的方式:主机在拉低总线后 ,接着必须在 15u s 之内释放总线,由5k 上拉电阻将总线拉至高电平; 而产生写0 时隙的方式:在主机拉低总线后,只需在整个时隙期间保持低电平即可( 至少60 us)。

        在写时隙起始后 15-60 us 期间,单总线器件采样总线电平状态。如果在此期间采样为高电平,则逻辑1 被写入该器件;如果为0 ,则写入逻辑0  。

      4.2.2  读时隙

      单总线器件仅在主机发出读时隙时,才向主机传输数, 所以, 在主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。所有读时隙至少需要 60us, 且在两次独立的读时隙之间至少需要 1us的恢复时间,每个读时隙都由主机发起, 至少拉低总线 1us (图5 所示)。在主机发起读时隙之后,单总线器件才开始在总线上发送 0 或1。 若从机发送1,则保持总线为高电平;若发送 0, 则拉低总线 。当发送 0 时,从机在该时隙结束后释放总线 。由上拉电阻将总线拉回至空闲高电平状态。从机发出的数据在起始时隙之后,保持有效时间 15us ,因而,主机在读时隙期间必须释放总线 ,并且在时隙起始后的 15 us 之内采样总线状态。

附录A ROM搜索实例

      ROM搜索过程只是一个简单的三步循环程序:读一位、读该位的补码 、写入一个期望的数据位。总线主机在 ROM的每一位上都重复这样的三步循环程序。 当完成某个器件后,主机就能够知晓该器件的 ROM信息。剩下的设备数量及其 ROM代码通过相同的过即可获得。

      下面的ROM搜索过程实例假设四个不同的器件被连接至同一条总线上,它们的 ROM代码如下所示:
         ROM1    00110101…
         ROM2    10101010…
         ROM3    11110101…
         ROM4    00010001…
       具体搜索过程如下:
1 、主机发出复位脉冲,启动初始化序列。从机设备发出响应的应答脉冲;
2 、接着主机在总线上发出ROM搜索命令 ;
3 、 主机从总线上准备读入一个数据位,这时,每个响应设备分别将 ROM代码的第一位输出到单总线上。ROM1 和ROM4 输出 0 至总线,而ROM2 和ROM3 输出 1 至总线。线上的输出结果将是所有器件的逻辑”与“ ,所以,主机从总线上读到的将是 0 。接着, 主机开始读另一位,即每个器件分别输出 ROM代码中第一位的补码,此时,ROM1 ROM4 输出 1至总线,而ROM2 和ROM3 输出 0 至总线 。这样,主机读到的该位补码还是 0 。主机由此判定,总线上有些器件的ROM代码第一位为0, 有些则为1;

     两次读到的数据位具有以下含义:

     00  在该位处存在设备冲突;
     01  在该位处所有器件为0;
     10  在该位处所有器件为1;
     11  单总线不存在任何设备;
4、  主机写入 0,从而禁止了 ROM2 和ROM3 响应余下的搜索命令 ,仅在总线上留下了 ROM1和ROM4; 
5 、主机再执行两次读操作 ,依次收到 0 和1,这表明 ROM1 和ROM4 在ROM代码的第二位都是0  ;
6 、接着主机写入0,在总线上继续保持ROM1 和ROM4 ;
7 、主机又执行两次读操作,收到两个 0, 表明所连接的设备的 ROM代码在第三位既有 0,也有1;
8 、主机再次写入 0 ,从而禁止了 ROM1 响应余下的搜索命令,仅在总线上留下了 ROM2;
9 、主机读完 ROM4 余下的 ROM数据位。这样就完成了第一次搜索,并找到了位于总线上的第一个设备;
10、重复执行第1 至第7 步,开始新一轮的ROM搜索命令;
11、 主机写入1 ,使ROM4 离线,仅在总线上留下ROM1;
12 、主机读完 ROM1 余下的 ROM数据,这样就完成了第二次的 ROM搜索,找到了第二个ROM代码 ;
13 、重复执行第1 至第3 步开始新一轮的ROM搜索命令
14、主机写入 1 这次禁止了 ROM1 和ROM4 响应余下的搜索命令 仅在总线上留下了 ROM2和ROM3 ;
15 、主机又执行两次读操作时隙读到两个0 ;
16、 主机写入0 ,这样禁止了ROM3 ,而留下了ROM2;

17 、主机读完 ROM2 余下的 ROM数据,这样就完成了第三次的 ROM搜索,找到了第三个ROM代码;
18、 重复执行第13至第15步,开始新一轮的ROM搜索命令;
19 、主机写入1 这次禁止了ROM2 而留下了ROM3;
20 、主机读完 ROM3 余下的 ROM数据,这样就完成了第四次的 ROM搜索,找到了第四个ROM代码;
说明 :

每次搜索 ROM操作,主机只能找到某一个单总线器件的 ROM代码,所需要的最短时间为:

      960 us+(8+3 64)  61 us=13.16ms ;

所以主机能够在1秒之内读出75个单总线的ROM 代码。

<think>好的,用户让我介绍一下DS18B20的原理。我需要先回忆一下这个温度传感器的基本信息。首先,DS18B20是Dallas Semiconductor(现在被Maxim Integrated收购)生产的一款数字温度传感器,它使用1-Wire总线协议进行通信。用户可能想了解它的工作原理、特点、应用场景以及如何使用的。 首先,我应该介绍它的基本特性,比如数字输出、单总线接口、高精度等。然后,需要详细说明其内部结构,可能包括温度传感器、非易失性存储器和接口逻辑。接下来,要解释温度测量的原理,比如如何将温度转换为数字信号,以及分辨率的问题。分辨率部分可能需要提到9到12位的不同配置,对应的精度差异。 然后,1-Wire协议是关键部分,需要解释这个协议的特点,比如单线通信、寄生供电模式,以及如何通过独特的ROM ID进行多点组网。这里可能需要提到每个DS18B20有唯一的64位地址,便于多设备连接。此外,寄生供电模式的优势和应用场景也需要说明,比如在电源受限的情况下如何工作。 应用场景方面,DS18B20常用于工业控制、环境监测、家用电器等,这部分可以举例说明,比如恒温器、冷链运输中的温度监控。同时,用户可能关心如何实际使用它,比如连接方式、微控制器的接口,是否需要上拉电阻,以及读取温度数据的步骤,比如初始化、ROM命令、功能命令、数据转换和读取。 可能还需要提到一些注意事项,比如长距离传输时的信号衰减问题,或者多个设备并联时的寻址方法。用户如果是电子爱好者或者工程师,可能更关心具体的应用案例和常见问题解决方法。 另外,我需要确保使用中文,并且结构清晰,分点说明。需要避免过于专业的术语,或者适当解释术语,比如解释什么是1-Wire协议,以及寄生供电的具体含义。同时,按照用户的要求,行内公式用$...$,独立公式用$$...$$,但在这个问题中可能不太涉及复杂的数学公式,但如果有温度转换的公式可能需要使用LaTeX格式。 最后,检查是否有遗漏的重要信息,比如温度范围(-55°C到+125°C),精度参数(±0.5°C在-10°C到+85°C),供电电压范围(3V至5.5V),以及封装形式(TO-92、SOIC等)。这些参数对于用户选择和使用传感器都很重要。 总结,回答的结构应该是先概述DS18B20的基本信息,然后分部分详细讲解工作原理、1-Wire协议、应用场景和使用注意事项,确保逻辑清晰,语言通俗易懂,同时涵盖用户可能关心的技术细节。</think>DS18B20是一款由Maxim Integrated(原Dallas Semiconductor)生产的**数字温度传感器**,采用**1-Wire总线协议**通信。其核心原理和特性如下: --- ### 一、核心原理 1. **温度测量原理** DS18B20内部通过**高精度Δ-Σ模数转换器**将温度转换为数字信号。传感器核心是一个与温度成比例的振荡器,其频率受温度影响,通过计数器测量频率差实现温度计算。 温度分辨率可配置为 **9~12位**(默认12位),对应精度分别为 **$0.5°C$、$0.25°C$、$0.125°C$、$0.0625°C$**。 2. **数字输出** 直接输出温度数字信号,无需外部ADC。温度值以**16位二进制补码**形式存储,格式为: $$ \text{温度值} = \frac{\text{读取的16位数据}}{16} \, (°C) $$ 3. **内部结构** - **温度传感器**:核心测量单元 - **64位ROM**:存储全球唯一ID,支持多设备并联 - **非易失性存储器**:保存用户设置(如报警阈值、分辨率) - **1-Wire接口**:单线双向通信 --- ### 二、1-Wire协议特性 1. **单线通信** 仅需**1根数据线**即可完成供电(寄生模式)和数据传输,节省布线。 - **寄生供电模式**:通过数据线偷电,无需额外电源(需强上拉电阻) - **标准供电模式**:单独连接VDD引脚(3.0~5.5V) 2. **多点组网能力** 每个DS18B20有唯一的**64位ROM编码**(含8位家族码`0x28`),允许单总线上挂载多个设备。 --- ### 三、典型应用场景 1. **工业控制**:生产线温度监控 2. **环境监测**:气象站、农业大棚 3. **家用电器**:恒温器、热水器 4. **冷链运输**:冷藏车温度记录 --- ### 四、使用步骤(以单片机为例) 1. **硬件连接** - 数据线接单片机GPIO,加**4.7kΩ上拉电阻** - VDD可选择接电源(标准模式)或接地(寄生模式) 2. **软件流程** ```plaintext 初始化总线 → 发送ROM命令(寻址设备) → 发送功能命令(启动温度转换) → 等待转换完成 → 读取温度数据 ``` --- ### 五、注意事项 - **长距离传输**:建议总线长度<100米,过长需降低波特率或增加驱动 - **多设备冲突**:需通过ROM ID逐个访问 - **转换时间**:12位分辨率时需最大750ms,需等待完成后再读取 DS18B20凭借**单总线、高精度、易组网**的特点,成为低成本温度检测方案的理想选择。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值