DHT11时序(上)
扫描二维码
随时随地手机看文章
DHT11的时序是其单总线(1-Wire)通信协议的核心支撑,所有温湿度数据的交互都依赖于主机(微控制器MCU)与传感器之间严格的电平切换节奏和时长约定。作为一款无独立时钟线的数字传感器,DHT11的时序设计既简化了硬件接线,又对软件层面的电平控制精度提出了明确要求——任何超出允许范围的时长偏差,都会导致通信失败或数据误读。理解其时序细节,不仅是正确驱动传感器的前提,更是排查通信故障的关键,其整体逻辑可分为“主机启动信号”“传感器应答信号”“数据传输信号”三个核心阶段,各阶段的时序参数环环相扣,共同构成完整的通信流程。
在进入具体时序阶段前,需明确DHT11的总线基础状态:单总线(DATA引脚)通过4.7kΩ~10kΩ的外部上拉电阻连接至电源,空闲状态下始终保持高电平。这一设计确保了总线电平的稳定恢复,也为时序判断提供了基准——所有有效信号的触发,均以偏离高电平的电平跳变为起点。同时,传感器上电后需经历约1秒的稳定期,在此期间内部电路完成初始化与校准数据加载,若未等待稳定即发起通信,时序逻辑会因传感器未就绪而紊乱,导致启动信号无法被识别。
主机发送启动信号是通信的起点,其核心目的是通过强制总线电平变化,告知传感器“即将进行数据交互”。具体时序流程为:主机首先将DATA引脚配置为输出模式,主动将总线拉低并保持至少18ms(实际应用中通常设计为20ms,以预留冗余量)。这一时长必须严格遵守——若拉低时间不足18ms,传感器内部的检测电路无法确认启动指令,会继续保持休眠状态,不产生任何应答;若时长过长(如超过50ms),虽不会导致传感器故障,但会增加通信延迟,影响数据更新效率。拉低时长满足要求后,主机释放总线(将DATA引脚切换为输入模式),此时总线在外部上拉电阻的作用下,从低电平逐渐恢复为高电平,这一电平跳变成为传感器检测启动信号结束的标志。
传感器的应答信号是对主机启动指令的回应,其时序设计用于确认“传感器已就绪,可传输数据”。传感器检测到总线从低电平恢复为高电平后,会在20μs~40μs内启动应答:首先主动将DATA引脚拉低,保持约80μs(允许±20μs的误差),随后释放总线,让其在10μs内恢复高电平并保持约80μs。这两段连续的“低电平-高电平”组合,构成了完整的应答信号。主机需在释放总线后的40μs内持续监测总线电平——若先检测到低电平(对应传感器拉低阶段),再检测到高电平(对应传感器释放阶段),则判定应答成功,通信可进入数据传输阶段;若未检测到完整的应答电平变化,或仅检测到单一电平,則说明传感器未就绪、总线短路或启动信号时序错误,需重新发起通信。
数据传输时序是DHT11时序中最核心的部分,40位温湿度数据(湿度整数、湿度小数、温度整数、温度小数、校验和)的传输,完全依赖于脉冲宽度编码的时序规则。每个数据位的传输均以“低电平起始+高电平编码”的形式实现,主机通过测量高电平的持续时长,来区分逻辑“0”和逻辑“1”。具体来说,传输逻辑“0”时,传感器先将DATA引脚拉低约26μs~28μs,随后释放总线,让其恢复高电平并保持约26μs~28μs,整个位周期约54μs;传输逻辑“1”时,低电平起始阶段的时长与逻辑“0”一致(26μs~28μs),但高电平保持时长延长至116μs~118μs,整个位周期约144μs。这一设计的关键在于“起始低电平时长固定”,主机可通过检测低电平的结束沿作为计时起点,再通过定时器精确测量后续高电平的持续时间——若时长落在20μs~30μs区间,则判定为逻辑“0”;若落在110μs~120μs区间,则判定为逻辑“1”。





