当前位置:首页 > 嵌入式 > 嵌入式分享

单总线通信协议:极简布线的底层逻辑

单总线(1-Wire)是 DS18B20 的核心技术,它通过一根数据线实现双向通信,通信过程严格遵循初始化、ROM 命令、功能命令的三段式时序,确保数据传输的可靠性。

初始化阶段

初始化是通信的前提,由 MCU 发送复位脉冲,DS18B20 返回应答脉冲,确认器件在线:

MCU 发送复位脉冲:将 DQ 线拉低至少 480μs,然后释放总线(上拉电阻使 DQ 线恢复高电平)。

等待应答脉冲:DS18B20 检测到复位脉冲后,延迟 15~60μs,然后将 DQ 线拉低 60~240μs 作为应答。MCU 需在释放总线后的 15~60μs 内检测 DQ 线电平,若为低则表示器件响应。

初始化失败通常源于总线短路、上拉电阻缺失或传感器损坏,实际应用中需通过多次重试机制提高可靠性。

ROM 命令阶段

当总线上连接多个 DS18B20 时,需通过 ROM 命令识别目标器件,常用命令包括:

ROM0x33):读取当前总线上唯一器件的 64 ROM 地址(仅适用于单器件场景)。

匹配 ROM0x55):后跟 64 ROM 地址,仅与该地址匹配的传感器响应后续命令(多器件通信核心命令)。

搜索 ROM0xF0):通过位碰撞检测算法,逐步确定总线上所有器件的 ROM 地址(用于未知地址的多器件枚举)。

跳过 ROM0xCC):忽略 ROM 地址,直接向总线上所有器件发送功能命令(适用于单器件或广播场景)。

例如,在多传感器组网中,MCU 先通过搜索 ROM 获取所有器件地址,再通过匹配 ROM 命令单独控制每个传感器,避免数据冲突。

功能命令阶段

ROM 命令后,MCU 发送功能命令控制传感器工作,关键命令包括:

温度转换(0x44):启动温度测量,转换时间取决于分辨率(9~12 位对应 93.75~750ms),转换期间 DQ 线可保持高电平或由 MCU 控制。

读暂存器(0xBE):读取 RAM 9 字节数据,包括温度寄存器(第 23 字节)、配置寄存器(第 4 字节)等,读取时需按字节顺序,每个字节后传感器会发送一个应答位。

写暂存器(0x4E):向 RAM 写入 3 字节数据(高温报警阈值、低温报警阈值、配置寄存器),用于设置温度报警上下限。

复制暂存器(0x48):将 RAM 中的配置信息写入 EEPROM(非易失性存储),确保断电后配置不丢失。

召回 EEPROM0xB8):将 EEPROM 中保存的配置信息恢复到 RAM,用于上电初始化。

功能命令的执行需严格遵循时序,例如写命令时,MCU 需在每个位周期(60~120μs)内将 DQ 线拉低(写 0)或保持高电平(写 1),传感器在每个位周期的中间(约 30μs)采样 DQ 线电平。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在本教程中,我们将学习如何使用 DHT21 湿度和温度传感器与 Arduino 进行配合,并将测量值显示在 OLED 显示屏上。

关键字: OLED 显示屏 DHT21 温度传感器 Arduino

温度传感器则如同分布在电池表面的 “小卫士”,紧密关注着电池的温度变化。

关键字: 温度传感器

物联网与智能控制蓬勃发展,温度传感器作为感知环境温度变化的关键元件,广泛应用于工业生产、智能家居、医疗设备等众多领域。而单片机凭借其强大的控制能力和灵活的编程特性,成为处理温度传感器数据的理想平台。下面将深入剖析单片机程...

关键字: 单片机 温度传感器

全新温度传感器具备先进功能与封装尺寸灵活性,非常适合需要精密温度测量或温度补偿的应用。

关键字: 温度传感器 可充电电池组 工业探头

2025年09月11日,比利时泰森德洛·哈姆——全球微电子工程公司Melexis宣布,受性能和应用因素(包括目标物体的大小和距离)影响,选择合适的非接触式远红外(FIR)传感器颇具挑战性。人工评估不仅复杂耗时,还可能浪费...

关键字: 温度传感器 视场

在嵌入式系统开发中,STM32系列微控制器的内部温度传感器因其低成本、高集成度特性,广泛应用于设备自检、环境监测等场景。然而,受芯片工艺差异和电源噪声影响,其原始数据存在±1.5℃的固有误差。本文从硬件配置、校准算法、软...

关键字: STM32 温度传感器
关闭