DS18B20时序(上)
扫描二维码
随时随地手机看文章
DS18B20的时序是其单总线(1-Wire)通信协议的核心,决定了传感器与微控制器(MCU)之间数据交互的准确性与可靠性。作为一款通过单根信号线实现双向通信的数字温度传感器,DS18B20的所有操作——从初始化到命令传输,再到数据读写——都依赖于严格定义的时序规则,任何微小的时序偏差都可能导致通信失败或数据错误。理解这些时序细节,不仅是正确驱动DS18B20的基础,也是排查通信故障的关键,其设计的严谨性体现了单总线协议在简化硬件的同时,对软件时序控制的极致要求。
初始化时序是DS18B20通信的起点,其作用是建立主机(MCU)与从机(传感器)之间的同步,并确认从机是否在线。整个过程分为主机发送复位脉冲和从机返回应答脉冲两个阶段。首先,主机通过将单总线(DQ线)拉低至少480μs来发送复位脉冲,这一持续时间必须足够长,以确保从机能够检测到复位信号并进入初始化状态。随后,主机释放总线,此时总线通过外部上拉电阻(通常为4.7kΩ)恢复至高电平,主机进入等待状态。从机在检测到总线释放后,会在15~60μs内做出响应:将DQ线拉低60~240μs,发送应答脉冲。主机需要在释放总线后的15~60μs窗口内检测总线电平,若检测到低电平,则说明从机已正确响应,初始化成功;若未检测到低电平,则可能是传感器未连接、总线短路或时序错误,需重新尝试初始化。这一时序的关键在于复位脉冲的最小时长(480μs)和应答检测的时间窗口,若复位脉冲过短,从机可能无法识别;若主机检测应答的时间过早或过晚,都会错过从机的应答信号,导致初始化失败。
初始化完成后,主机需向从机发送ROM命令(用于多节点识别)和功能命令(用于控制传感器操作),这两类命令的传输依赖于写时隙(Write Time Slot)时序。写时隙是主机向从机传输单个二进制位(0或1)的基本单位,每个写时隙的时长至少为60μs,且相邻两个写时隙之间需有至少1μs的恢复时间。写“1”时,主机先将DQ线拉低1~15μs,随后释放总线,使总线在写时隙剩余时间内保持高电平;从机在写时隙开始后的15~60μs内采样总线电平,此时检测到高电平,即识别为“1”。写“0”时,主机需将DQ线持续拉低至少60μs,确保从机在采样窗口内检测到低电平;若拉低时间不足,从机可能误判为“1”。写命令的过程本质是连续发送8个写时隙,每个时隙对应命令字节的一位(从最低位开始),因此发送一个8位命令的总时长至少为8×60μs + 7×1μs = 487μs,实际应用中为保证可靠性,通常会适当延长时隙间隔。
当主机需要读取从机返回的数据(如温度测量结果)时,需遵循读时隙(Read Time Slot)时序。读时隙由主机发起,每个读时隙的时长至少为60μs,且相邻读时隙之间需有至少1μs的恢复时间。读操作开始时,主机先将DQ线拉低1~15μs,随后释放总线,为从机输出数据做准备。从机在检测到总线释放后,会根据要发送的位值控制DQ线电平:若发送“1”,则保持总线为高电平;若发送“0”,则将总线拉低,且这一电平状态会持续15μs左右(从主机释放总线开始计算)。主机必须在释放总线后的15μs内完成采样,否则从机可能已释放总线,导致采样错误。与写命令类似,读数据时需连续发起8个读时隙,依次读取字节的每一位(从最低位开始),因此读取一个8位数据的总时长与写命令相当,且需严格控制每个采样点的时间,确保在从机输出有效的15μs窗口内完成读数。





