一句话: OUT1 这个名字让人以为"输出的是温度"。翻手册才发现——它是误差放大器输出,反映的是温度差,不是绝对温度。真正的温度就绪信号是另一个叫 TMPGD 的引脚。代码注释跟着引脚名写了错了一年。
适合谁读:对着数据手册写驱动、被引脚缩写坑过的嵌入式开发者。
OUT1 真的不是温度
温控芯片有个引脚叫 OUT1。听名字——"输出 1",输出什么东西?接在热敏电阻电路后面,应该是"温度值输出"。
代码注释里写了"OUT1 = 实际温度"。错了一年。
翻数据手册的框图:OUT1 是内部误差放大器 A1 的输出。放大器两个输入端——一个是温度设定点的电压,一个是热敏电阻桥的反馈电压。OUT1 输出的是两者的差值放大结果。
OUT1 不是温度,是"设定温度与实际温度的差距"。差距为零 = 温度正好。差距不为零 = 还在追。用 OUT1 来判断"温度到了没有"是可以的(差距趋近零就是到了),但不能把它当温度绝对值读数。
TMPGD 才是温度就绪信号
同一个芯片还有个引脚叫 TMPGD(Temperature Good)。数据手册写得很清楚——当 OUT1 电压进入设定点附近的窗口时,TMPGD 输出高电平。
用 TMPGD 判断"温控到位了没"比用 ADC 读 VTEC 波动再判稳更直接——一个 GPIO 读电平就行。代码里绕了一大圈用 VTEC 滑动窗口判稳,结果芯片自己就提供了硬件就绪信号。
为什么容易踩
引脚名是简写,不是描述。OUT1 = Output 1——"输出 1",不知道输出什么。TMPGD = Temperature Good——连起来读才知道是"温度就绪"。
看手册时习惯:
找引脚定义 → "OUT1 = 误差放大器输出" → 觉得"放大器跟我没关系" → 跳过 翻到通信协议 → 开始写驱动跳过的那个"放大器输出",就是调试时抓破头找的"温度信号"。旁边那个叫 TMPGD 的引脚,就是搞了几十行代码实现的"判稳逻辑"本可以用硬件替代的。
经验
引脚名是提示,不是说明书。OUT1、OUT2、AUX、STAT——这些名字看不出功能。翻到手册里的功能框图,找到这脚连在哪个模块上,才能知道它真正的作用。
代码注释里写了"XXX = 实际温度"的断言,定时回去查手册验证一次。注释和手册不一致时,手册是对的。
有用的话点个收藏,下次调试直接用。有问题欢迎评论区交流,看到了都会回。