DS18B20 指令集参考手册
DS18B20 指令集参考手册
DS18B20 是 Maxim Integrated(原 Dallas Semiconductor)推出的单总线(1-Wire)数字温度传感器,通过唯一的64位ROM序列号支持多点挂载。本文档汇总其全部指令。
一、通信事务序列
访问 DS18B20 必须严格遵循以下三步序列:
- 初始化:主机发送复位脉冲,从机响应存在脉冲
- ROM命令:主机发出8位ROM命令(必要时跟随数据交换)
- 功能命令:主机发出DS18B20功能命令(必要时跟随数据交换)
例外:Search ROM[F0h]和 Alarm Search [ECh] 命令执行后,主机必须返回步骤1(重新初始化)。
二、ROM命令(5条)
ROM命令用于在单总线上识别和寻址特定的 DS18B20 设备。
| 命令 | 代码 | 说明 |
|---|---|---|
| Read ROM | 33h | 读取从机的64位ROM代码。仅限总线上只有一个从机时使用,多从机时会发生数据冲突 |
| Match ROM | 55h | 匹配ROM命令,后跟64位ROM代码序列,用于在多点总线上寻址特定从机 |
| Skip ROM | CCh | 跳过ROM寻址,直接向所有从机发出功能命令。适用于单从机或需要广播命令的场景 |
| Search ROM | F0h | 搜索ROM,用于识别总线上所有从机的64位ROM代码。通过排除法逐次识别 |
| Alarm Search | ECh | 报警搜索,仅寻址那些温度超出TH/TL报警阈值的从机 |
三、功能命令(6条)
完成ROM寻址后,主机可发出以下功能命令。
3.1 温度转换命令
| 命令 | 代码 | 说明 |
|---|---|---|
| Convert T | 44h | 启动一次温度转换。转换完成后结果存入暂存器字节0和字节1 • 12位精度下最大转换时间750ms • 命令发出后主机可读时间隙获取转换状态(0=进行中,1=完成) • 寄生供电模式下必须启用强上拉 |
3.2 存储器命令
| 命令 | 代码 | 说明 |
|---|---|---|
| Read Scratchpad | BEh | 读取整个暂存器(含CRC校验字节),共9字节 • 从字节0(温度低字节)开始读取 • 主机可在任意时刻发复位终止读取 |
| Write Scratchpad | 4Eh | 向暂存器写入3字节数据:字节2(TH报警上限)、字节3(TL报警下限)、字节4(配置寄存器) • 必须一次性写入全部3字节 • 主机可在任意时刻发复位终止写入 |
| Copy Scratchpad | 48h | 将暂存器的TH、TL和配置数据复制到EEPROM,实现掉电保存 • 寄生供电模式下需在命令发出后10µs内启用强上拉,持续至少10ms • 主机可读时间隙获取复制状态(0=进行中,1=完成) |
| Recall E² | B8h | 从EEPROM恢复报警阈值和配置数据到暂存器 • 上电时自动执行,因此暂存器在供电后即有有效数据 • 主机可读时间隙获取召回状态(0=进行中,1=完成) |
3.3 电源检测命令
| 命令 | 代码 | 说明 |
|---|---|---|
| Read Power Supply | B4h | 检测从机的供电模式 • 主机发出后跟一个读时间隙 • 寄生供电从机将总线拉低,外部供电从机让总线保持高电平 |
四、典型使用流程(单从机)
以下为读取温度的典型操作序列:
步骤1: 复位(初始化)
步骤2: 发送 Skip ROM [CCh]
步骤3: 发送 Convert T [44h]
步骤4: 等待转换完成(最多750ms)
步骤5: 复位(初始化)
步骤6: 发送 Skip ROM [CCh]
步骤7: 发送 Read Scratchpad [BEh]
步骤8: 读取9字节暂存器数据(前2字节为温度值)
五、注意事项
- 上拉电阻:DQ线必须连接4.7kΩ上拉电阻以确保信号稳定
- 寄生供电:温度转换和Copy Scratchpad期间必须启用强上拉,且总线上不得有其他活动
- CRC校验:读取暂存器时建议验证第9字节CRC,确保数据完整性
- 分辨率:默认12位分辨率(精度0.0625°C),可通过配置寄存器调整为9~12位