
问题: 该问题由某客户提出,发生在 STM32F103VBT6 器件上。据其工程师讲述:在其产品设计中,使用了 STM32 的 ADC 扫描按键。在软件调试时,发现对于小于 200mV 的输入信号,ADC 转换出的结果匀为 零。ADC 的参考电压为 3.3V,根据公式计算:[size=1em]不应该是零。调研: 检查 STM32 的各路电源,包括 VDD、VDDA、VBAT,匀为 3.3V,未见异常。检查各路接地,包括 VSS、VSSA,与电源地接通良好。检查 Vref+,发现该信号与 VDDA 之间有电阻。检查 Vref-,发现该 信号与地之间有电阻。检查原理图,确认,Vref+与 VDDA 之间有一 10K 电阻,Vref-与地之间有一 10K 电阻。修改 PCB,将两个 10K 电阻换成零欧电阻,重新运行软件测试,转换结果正确。结论: ADC 的参考信号设计错误。Vref+与参考电源之间有较高的阴抗,Vref-与 VSSA 之间有较高的阻抗, 导致 ADC 的参考值产生偏移。处理: Vref+与 VDDA 之间改用零欧电阻连接,Vref-与 VSSA 之间改用零欧电阻连接。建议: 数据手册中给出的 Vref 输入电流的典型值为 160uA。这一电流在 50Ω 电阻上的压降为 。当参考电压为 3.3V 时,1 个 LSB 的转换值对应的输入电压值为[size=1em]按以上计算结果,这种情况下,电阻带来的参考电压的偏移,相当于 10 个 LSB 的转换值,已经和数据手册中给出的 ADC 的最大误差相差无几。所以,当需要在 Vref 前设置滤波器的设计中,由滤波器产生的参考电压的偏移是要加以考虑的。 通常,LC 滤波器较 RC 滤波器更适合这方面的应用。 |