ADC读数饱和在0.55V?SAR ADC直连高阻源的经典陷阱 📅 2026/8/5 11:04:14 一句话: DAC内部监控引脚输出阻抗15kΩ直接接16位SAR ADC采样信号越大被拉得越狠读数饱和在0.55V。根因是采样电容充不满——加个运放电压跟随器就解决标定救不了。适合谁读遇到ADC读数不准、读数饱和、怎么标定都不对的嵌入式工程师。现象小信号准大信号饱和设备里用12位电流DAC驱动激光器它的内部监控引脚MUX输出接16位SAR ADC采样电流和电压。上板实测信号真实值ADC读数参考电压1.25V0.55V被拉到一半电源轨5V0.56V严重拉低电流100mA对应0.42V0.43V差4%还行电流300mA对应1.25V0.55V饱和规律很明显信号越大被拉得越狠最后全部饱和在 0.55V 附近。反过来直读通道ADC 直接接的传感器信号灌 1.29V 读回 1.29V完全准。说明 ADC 本身没问题问题出在信号怎么进来的。原理SAR ADC 采样瞬间要吸水SAR ADC 采样的一瞬间内部采样电容要通过信号源充电——你可以把它想象成用杯子去水龙头接水。信号源输出阻抗低比如几欧 水龙头水量大瞬间接满信号源输出阻抗高比如 15kΩ 细水管接水时间固定水还没接满时间就到了这个 15kΩ 就来自 DAC 的手册监控引脚明确写着intended for use with high impedance inputs only——只适合接高阻抗输入。而 SAR ADC 采样瞬间恰恰是个低阻抗负载要抽电荷两者直接连就是细水管硬接大水杯。采样时间固定由 ADC 时钟决定源阻抗越高采样电容上充到的电压越低读数就越低。为什么小信号反而准电流 0 时监控电压约 0V——杯子里没水抽电负荷也小读数准。100mA 时 0.42V需要充的电荷少勉强充到 96%。300mA 时 1.25V需要大量电荷15kΩ 细水管在固定时间内充不满——读数被压在 0.55V。不是读数被加了偏移而是被压缩饱和——这是关键区别。为什么标定救不了很多人遇到读数偏低第一反应是标定测几个点拟合一条线把误差校准掉。但高阻源问题不是线性偏差0.42V 差 4%1.25V 直接饱和在 0.55V——这是非线性压缩。你拿这条非线性曲线去标定拟合误差会很大而且换个温度、换个信号幅度曲线又变了。物理问题只能物理解决MUX 输出和 ADC 之间加一个运放电压跟随器直接连加运放缓冲输入侧ADC 抽电荷拉低信号运放输入阻抗极高不抽电输出侧—输出阻抗毫欧级ADC 随便抽读数饱和 0.55V线性误差 0.5%软件折中多采样平均、加延时也改善有限——采样电容没充满平均多少遍都是那个低值。排查经验这次问题的定位靠的是最小工程 逐层排除先确认协议命令没问题通道能切换再确认发送代码没问题最后禁用后台轮询链路通了——才逼出硬件阻抗不匹配这个根因。三个关键判断读数不同≠读数对——MUX 能切通道不代表切到的值正确协议回显正常 ≠ 硬件输出正确——万用表才是最终裁判手册里的注释不是随便写的——only high impedance inputs这类句子是给不看它的人的警告实测对比直接连1.25V被拉到0.55V | 加运放缓冲读数线性误差0.5%有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。下一篇NaN的C语言检测——x!x的标准写法——防御性检查数据的经典坑