1. 什么是1-Wire总线?
1-Wire总线(单总线)是达拉斯半导体公司(现为Maxim Integrated)开发的一种异步半双工串行通信协议。它最大的特点就是仅用一根数据线(加上地线)就能实现双向通信,这种极简的设计让它成为嵌入式系统中连接低速外设的理想选择。
我第一次接触1-Wire总线是在一个温控项目中使用DS18B20温度传感器。当时看到只需要接一根线就能读取温度数据,简直不敢相信自己的眼睛。这种设计不仅节省了宝贵的IO口资源,还大幅简化了布线复杂度。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 1-Wire总线的工作原理
2.1 物理层实现
1-Wire总线的物理连接非常简单:
- 单根数据线(通常标记为DQ)
- 公共地线(GND)
- 可选的外部电源(3.0V-5.5V)
数据线上必须接一个4.7kΩ的上拉电阻,这是整个系统的关键。上拉电阻将总线保持在空闲时的高电平状态,当任何设备(包括主机)需要发送低电平时,会主动将总线拉低。
注意:上拉电阻的阻值很关键,太大可能导致上升沿过慢,太小则可能无法提供足够的驱动电流。
2.2 通信时序
1-Wire通信基于严格的时序控制,所有通信都由主机发起。每个bit的传输都通过特定的时间槽(time slot)完成:
-
复位脉冲:主机拉低总线480μs以上,然后释放。从机检测到这个脉冲后会等待15-60μs后发出存在脉冲(拉低总线60-240μs)。
-
写0:主机拉低总线60-120μs,然后保持低电平直到时隙结束。
-
写1:主机拉低总线1-15μs,然后释放总线,由上拉电阻将总线拉高。
-
读操作:主机拉低总线1-15μs后释放,然后在15μs内采样总线状态。从机会在主机拉低后的15μs内将总线拉低(发送0)或保持高电平(发送1)。
2.3 寄生供电模式
这是1-Wire最神奇的特性之一。在寄生供电模式下,器件完全不需要外部电源,直接从数据线上"偷电":
- 当总线为高电平时,器件内部的储能电容充电
- 当总线为低电平时,电容放电维持器件工作
这种设计使得系统可以仅用两根线(DQ和GND)就能工作,非常适合空间受限的应用场景。不过要注意,在寄生供电模式下,总线的高电平时间必须足够长(至少给电容充电),否则可能导致
