ADC 这类器件在整机 BOM 里通常只占几块钱的成本,但它一旦工作不正常,整个控制环路、采集链路、甚至保护逻辑都会跟着出问题。STMicroelectronics 的 ADC120IPT 是一颗 12 位逐次逼近型 ADC,采样率 1M,单端输入,SPI 接口,封装 16-TSSOP。参数上看它不算激进,属于中规中矩的通用型数据采集前端,但恰恰是这种"看起来简单"的料,在实际项目里栽跟头的人不在少数。本文从几个我在调试中遇到过的真实故障现象出发,说说排查思路。
一、采样值漂移:先别怀疑ADC,查参考电压和电源纹波
故障现象很典型:板子上电后,ADC 采到的数值在室温下静态输入时仍有 ±3~5 个 LSB 的跳动,用万用表测输入电压是稳定的,但 SPI 读出来的码值就是稳不住。
先说结论:这种场景下,八成问题不在 ADC120IPT 本身,而在它的参考电压和模拟电源上。
这颗料没有内部基准,你必须外部提供参考电压。参考电压的噪声会直接折算到转换结果里——对 12 位 ADC 来说,1 LSB 对应满量程的 1/4096,如果参考电压是 3.3V,那么 1 LSB ≈ 0.8mV。也就是说,参考电压上只要有 1mV 的纹波,输出码值就会跳 1~2 个 LSB。实测下来,很多板子的参考电压纹波能到 5mV 以上,这还是在示波器带宽限制 20MHz 的情况下测的。
排查方法:
1. 用示波器 AC 耦合看 VDDA 和参考电压引脚的纹波,注意探头要靠近引脚根部,探针地线要短——探头地线夹子形成的环路在 10MHz 以上会拾取大量辐射噪声,看到的东西不是你板子真实的情况。 2. 检查退耦电容。ADC120IPT 的电源建议 0.1μF + 10μF 组合,0.1μF 用 X7R 材质的 0402 封装,10μF 用 X5R 或 X7R。如果你板上只放了一个 1μF 的电容,那纹波压不住是正常的。 3. 测量 SPI 时钟引脚在转换期间是否有串扰到模拟输入或参考电压。这个比较隐蔽,但实际项目里很常见。
解决思路:参考电压输出串一个 RC 低通,R 取 10Ω、C 取 4.7μF,截止频率约 3.4kHz,对抑制高频噪声足够了。如果你的参考源本身噪声太大(比如用普通 LDO 直接供),换成低噪声基准源的改善会比换 ADC 明显得多。
| 参数名 | 数值 | 工程意义说明 |
|---|---|---|
| Number of Bits(分辨率) | 12 | 1 LSB = 满量程/4096,3.3V 基准下约 0.8mV |
| Sampling Rate(采样率) | 1M SPS | 对应单通道最快采样周期 1μs,适合多数传感器和电机控制电流采样 |
| Input Type(输入类型) | Single Ended | 单端输入相对差分输入共模抑制能力弱,输入地与 ADC 地之间的压差会直接引入误差 |
| Data Interface(数据接口) | SPI | 需注意时钟极性 CPOL/CPHA 配置,从机的 SDO 输出时序有限速 |
| Architecture(架构) | SAR | 逐次逼近型,采样瞬间对输入源有电流冲击,前端运放输出阻抗过高会导致建立误差 |
| Voltage - Supply, Analog(模拟电源) | 2.7V ~ 3.6V | 与数字电源同范围,实际项目建议模拟电源用 LC 滤波从数字 3.3V 分支得到 |
| Operating Temperature(工作温度) | -40°C ~ 125°C | 满足汽车 Grade 1 和多数工业场景,但 125°C 下采样误差会增大,需查 datasheet 的温漂曲线 |
| Package / Case(封装) | 16-TSSOP | 引脚间距 0.65mm,手工焊接难度中等,回流焊推荐峰值温度 245°C ± 5°C |
关键参数解读:采样率 1M 对 SAR 架构来说属于中等偏上水平,意味着内部 CDAC 的建立时间只有约 1μs 的 1/2(即 500ns 左右)。如果你的输入源阻抗超过 1kΩ,加上采样电容(典型几 pF)的 RC 时间常数,在最高采样率下会出现建立不完全的情况——这是导致采样值偏小的常见原因。另外,工作温度范围到 125°C 是这颗料的一个亮点,同类 12 位 1M ADC 不少只做到 105°C,在靠近发动机舱或加热模块的场景下,这个参数决定了你能否用在产品里。
二、SPI 读回来全是 0x00 或 0xFF:时序问题的典型症状
这个故障在调试初期最常见。示波器抓 SPI 四根线(SCLK、MOSI、MISO、CS),波形看着都正常,但单片机读回的数据要么全零要么全 1,偶尔有一两个字节正确。
不要急着怀疑芯片坏了。ASC120IPT 的 SPI 是从机模式,它对时钟极性和相位有明确要求,不少工程师栽在 CPOL/CPHA 配置上——配反了,数据在错误的边沿被采样,读出来的自然是一片乱码或定值。
排查步骤:
1. 确认 SCLK 空闲电平。ADC120IPT 要求 SCLK 空闲时保持低电平(CPOL=0),数据在 SCLK 上升沿锁存(CPHA=1)还是下降沿锁存(CPHA=0)需要对照 datasheet 时序图确认——我记不清具体是哪个模式了,查一下手头的规格书 PDF,这个细节不能靠猜。 2. 检查 CS 信号的有效时间和 SCKL 之间的建立/保持关系。有些单片机 SPI 外设的 CS 释放时序默认配置不当,导致 CS 拉高后 SDO 还在驱动最后的 bit。 3. 用逻辑分析仪抓完整一次转换周期的波形,包含 CS 拉低→8/16 个时钟→CS 拉高的完整过程。不要在示波器上看——示波器对长时间波形不友好,漏看一个毛刺就找不到问题。 4. 如果单片机引脚没有上拉/下拉配置,SCLK 和 CS 在空闲时可能处于浮空状态,偶尔被噪声拉出一个脉冲,ADC 就误触发一次转换。
解决思路:SPI 时钟频率先降到 1MHz 以下试——ADC120IPT 的 SPI 最高速率手册标的 20MHz,但你实际系统里的走线长度和信号完整性不一定支持那么高。我曾经在一块布局很挤的板子上把 SPI 速率从 10MHz 降到 4MHz 就解决了一切通信问题,2 层板没有完整地平面的情况下,SCLK 的振铃会把数据线上的电平打翻。
三、输入通道串扰:MUX 的容性耦合不是玄学
ADC120IPT 内部有 MUX(多路复用器),配置是 MUX-S/H-ADC,也就是说每次转换前要先把输入选通到采样保持电路上。如果你的系统里有多个模拟输入通道,且信号源阻抗差异很大的话——比如一路是低阻抗的运放输出,另一路是高阻抗的传感器直接接入——串扰问题会非常明显。
实际故障现象:通道 0 接传感器信号(输出阻抗约 10kΩ),通道 1 接了一个 2V 的直流电平。切换到通道 0 后,采样值明显偏大,而且偏差量随着通道 1 的电压高低变化。
原因分析:SAR ADC 的采样电容在每次采样前需要充电至输入电压。当 MUX 从通道 1 切到通道 0 时,采样电容上残留的电荷需要经输入源阻抗泄放。如果通道 0 的源阻抗高(10kΩ 已经不小了),充电时间常数就大,在采样窗口内没建立到最终值——测出来的就是通道 1 和通道 0 电压的加权平均值。这不是故障,是架构原理,但选型时如果想通了就不会觉得芯片坏了。
排查方法:用示波器探头接到 ADC 输入引脚,观察切换到高阻通道时的波形——你会看到电压有一个从上一通道电压向本通道电压爬升的过程,爬升时间就是源阻抗 × 采样电容(典型几 pF到十几 pF)的乘积。
解决思路:高阻抗输入通道前面加一级运放缓冲,输出阻抗压到 100Ω 以下。如果不想加运放,就降低采样率——ADC120IPT 的采样时间在配置寄存器或时序上可能可调(查 datasheet 确认),给更长的采集时间让电容充到足够精度。另外一个办法是软件上多做几次 dummy 转换,第一次切换后丢弃结果,第二次才开始采集,这个技巧在很多量产项目里都在用。
四、高温环境下转换误差超标:留意电压漂移与板级应力
这颗料的工作温度上限是 125°C,规格上没问题。但在环温 85°C 以上时,有人遇到过 INL/DNL 超标的情况——其实问题不在 ADC 本身。
失效机理有两层逻辑。第一层,TSSOP 封装是塑料封装,不同材料的热膨胀系数差异在高温下会对芯片内部施加机械应力,这种应力会微调基准电压和比较器的失调电压。第二层,如果你板上用了普通 X5R 电容做 ADC 的电源退耦,X5R 在 85°C 时容值会掉到标称值的 20~30%——有效容值不足,电源纹波变大,转换精度随之恶化。
排查步骤:
1. 把板子放进温箱,从 25°C 到 105°C 步进 20°C,每挡稳定 30 分钟后记录 ADC 输出的变化。注意区分是参考电压漂了,还是 ADC 本体漂了——单独测一下参考电压芯片的输出。 2. 检查退耦电容的材质和容值。拆下换用 X7R 或 C0G 材质的电容再测,如果高温下误差明显变小,就是电容温漂在作祟。 3. 看 PCB 上的机械应力——ADC 附近如果有较大的螺孔或卡扣,拧紧螺丝时会不会对封装体施加了应力?我在一个项目里遇到过,靠近板边安装孔处的 ADC 在低温下误差偏大,松掉螺丝之后恢复正常。
解决思路:模拟电源和参考电压用 X7R 电容,至少 50V 耐压规格的(同容值下耐压高的温漂通常更小)。如果结构上无法避免,把 ADC 的位置移到板子边缘远离安装点的地方。还有,焊接时的冷却速率太急也会在封装内部留残余应力,所以回流焊的冷却斜率建议控制在 3°C/s 以内——这个参数你在焊接温度曲线上要盯一下,板厂那边如果不明确要求,他们常用的曲线可能不符合规范。
五、批量一致性:生产线上遇到的隐性坑
量产阶段碰到的问题和研发完全不一样。研发就一块板子,怎么都能调通,但到了产线,200 块板子里有 7~8 块采样异常,SPI 通信间歇性失败。
经验上有几个容易忽略的点,基本都踩过:
SPI 总线上拉电阻的阻值。MISO 是推挽输出,不需要上拉,但 CS 和 SCLK 建议加 10kΩ 上拉到 VDD。如果产线测试治具引线较长(超过 15cm),没加缓存的 SPI 信号容易在治具和板子之间反射,间歇性丢数据。这个故障很难复现——换一台测试机就消失了。
还有就是焊接温度。TSSOP 封装的引脚间距 0.65mm,IPC-A-610 标准里对这类细间距元件的焊接质量有明确规定——焊点填充高度、爬锡率、空洞面积,但这些在产线通常只做目检。如果回流焊峰值温度低了(低于 235°C),焊料浸润不良,引脚和焊盘之间形成冷焊点,初期测试时可能通过,但热循环几次后接触电阻增大——SPI 的信号完整性就崩了。建议在产线做一次炉温曲线实测,确认 ADC120IPT 位置的峰值温度在 240°C 到 250°C 之间,液相线以上时间 60~90 秒。
来料检验上,同一批次的芯片引脚表面状态要抽检——如果引脚氧化严重,焊接后虚焊率会明显上升。这个料是 ST 的,原厂出货的引脚镀层没问题,但市场上拆机料和翻新料混着卖的情况不少,引脚表面有细微划痕或颜色不均匀的批次要警惕。入库后如果超过 6 个月未使用,建议抽几颗做可焊性测试——潮湿环境下引脚镀层老化是真实存在的。
设计 Checklist(针对 ADC120IPT)
- 模拟电源 VDDA 用 10μF X7R + 0.1μF X7R 退耦,电容紧贴引脚放置
- 参考电压走线单独从基准源引出,禁止借用 ADC 电源走线
- 所有模拟输入通道的源阻抗控制在 1kΩ 以下,超标则加运放缓冲
- SPI 总线:CS 和 SCLK 各串一个 22Ω 电阻抑制振铃,如果走线长度超过 10cm,加一个 10kΩ 上拉
- 建议在 PCB 上将模拟地(AGND)与数字地(DGND)单点连接,连接点放在 ADC 下方或附近
- 多通道切换场景下,软件丢弃第一次转换结果,或降低采样率给采样电容留足建立时间
- 工作环境温度超过 85°C 时,优先选用 X7R 电容替换 X5R,并实测低温/高温下 ADC 输出的漂移量
- 回流焊曲线确认峰值温度 245°C ± 5°C,冷却斜率 ≤ 3°C/s
- 批量来料时拆开外包装后目检引脚有无锈蚀或弯曲,引脚共面性超标(放在平整玻璃板上晃动)的批次整批退回
ADC120IPT 这颗料本身性能是稳定的——12 位、1M、单端 SPI,规格上中规中矩,但它的表现上限完全取决于你外围电路怎么伺候。参考电压干不干净、输入阻抗低不低、SPI 时序对不对,这三个变量解决了,其余的问题基本都是布局和焊接层面的。如果按上面的顺序排查一遍还没定位到问题,建议量一下 SPI 引脚上的实际电压波形和模拟输入的直流电位,不要凭猜——数据不会骗人。