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

本文详细介绍了单总线协议的概念、特点及应用,并以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低电平信号构成的存在脉冲。
在这里插入图片描述

### 单总线协议概述 单总线协议是一种用于微控制器与外围器件之间通信的简单串行通信协议。它仅需一根信号线即可完成数据的双向传输,因此被称为“单总线”。这种协议广泛应用于温度传感器、湿度传感器以及其他低功耗嵌入式设备中。 #### 工作原理 单总线协议的核心在于其独特的时序控制机制。主机通过拉高或拉低总线电平来发起通信,并等待从设备响应。具体来说: - **初始化阶段**:主机将总线拉低一段时间后释放,随后检测从设备是否发出存在脉冲[^1]。 - **时间槽分配**:每个数据位的传输都严格遵循特定的时间槽定义。例如,在写操作中,主机需要保持总线处于指定状态一定时间;而在读操作中,则由从设备决定总线的状态变化[^2]。 #### 数据帧格式 单总线的数据通常以字节为单位进行交换,每一位按照低位优先的方式逐位发送。每笔交易可能包括ROM命令(如匹配地址)、功能指令以及实际有效载荷等内容[^3]。 #### 实现方式 为了支持单总线通信,硬件层面只需配置一个GPIO引脚作为输入输出切换端口即可满足需求。软件方面则涉及精确延时函数的设计,用来生成符合标准规范的各种信号波形。以下是基于C语言的一个简化版DS18B20温度采集程序片段: ```c void OneWireReset(void){ GPIO_SetLow(); // 主动下拉总线电压至零伏特 DelayUs(480); // 维持至少480us低电平周期 GPIO_SetHigh(); // 松开连接允许浮置回升 DelayUs(70); // 等待约60~75微妙观察反应情况 } uint8_t OneWireReadBit(void){ uint8_t bit; GPIO_SetLow(); DelayUs(2); GPIO_SetHigh(); DelayUs(12); if(GPIO_ReadInputDataBit()){ bit=1; }else{ bit=0; } DelayUs(50); return bit; } ``` 上述代码展示了如何利用通用目的输入/输出管脚模拟单根导线上交互流程的一部分逻辑处理细节[^4]。 #### IT领域中的典型应用场景 在信息技术环境中,单总线技术因其成本低廉且易于集成而备受青睐。比如数据中心环境监控系统里常部署大量分布式温湿度探头节点网络就是采用此类方案构建而成; 又或者是在智能家居产品开发过程中也会考虑选用具备单线接口特性的元件以便减少布线复杂度并提高可靠性. ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值