[其他ST产品] 在STM32开发中,ADC读取值不稳定原因分析

[复制链接]
25|11
stormwind123 发表于 2026-1-7 13:18 | 显示全部楼层 |阅读模式
采样时间不足
ADC转换需要一定时间,若未等待转换完成直接读取,会得到旧数据或随机值。
电源噪声干扰
数字电路如时钟、GPIO翻转产生的噪声通过电源或地线耦合到ADC参考电压,导致采样值波动。
软件优化干扰
编译器优化可能重排ADC读取指令,或缓存ADC数据寄存器值,导致读取不实时。
硬件设计缺陷
ADC输入通道未接滤波电容,或模拟/数字地未隔离,导致高频噪声进入采样通道。
Clyde011 发表于 2026-1-8 07:51 | 显示全部楼层
之前做电池电压检测,ADC 值总受射频模块干扰,后来在 ADC 通道和射频电路之间加了屏蔽罩,再优化电源滤波,干扰问题直接解决,高频场景可以试试这招~
公羊子丹 发表于 2026-1-8 07:52 | 显示全部楼层
我之前用 STM32F1 的 ADC 测电压,数值跳得厉害,后来在输入引脚并了个 104 陶瓷电容,再延长采样时间到 239.5 周期,稳定性立马提升,建议先从硬件滤波入手~
周半梅 发表于 2026-1-8 07:53 | 显示全部楼层
想问问大家,ADC 用 DMA 传输时数值不稳定,会不会是 DMA 缓存没对齐?或者通道优先级设置太低被打断了,有没有排查这方面问题的小技巧?
帛灿灿 发表于 2026-1-8 07:54 | 显示全部楼层
分享个踩坑经验:参考电压别直接用 VCC!我之前图方便接了 VCC,数字电路一工作电压就波动,后来换成独立基准源,或者用 MCU 内部的 VREF+,波动直接减半~
童雨竹 发表于 2026-1-8 07:55 | 显示全部楼层
STM32 的 ADC 校准超重要!每次上电后一定要执行 HAL_ADCEx_Calibration_Start,我之前忘了校准,数值偏差又不稳定,校准后精度明显改善,这步千万别省~
万图 发表于 2026-1-8 07:56 | 显示全部楼层
有没有朋友遇到过 ADC 读取值随温度漂移的情况?除了软件校准,硬件上能做什么?比如给基准源加温控,或者选低温漂的电容?
Wordsworth 发表于 2026-1-8 08:01 | 显示全部楼层
提醒下用 RTOS 的朋友,别在高优先级任务里频繁读 ADC!我之前让 ADC 读取和电机控制在一个任务,电机启动时 ADC 值就乱跳,后来单独开个低优先级任务,稳定多了~
Bblythe 发表于 2026-1-8 08:02 | 显示全部楼层
想请教下,模拟地和数字地是不是必须单点接地?我之前画板时直接连在一起了,ADC 值波动很大,现在想整改,有没有简单的补救方法?
Pulitzer 发表于 2026-1-8 08:03 | 显示全部楼层
我发现编译器优化等级太高也会影响 ADC!之前开 - O2 优化,ADC 读取指令被重排,数值忽高忽低,后来给 ADC 读取函数加了__attribute__((optimize ("O0"))),就正常了~
Uriah 发表于 2026-1-8 08:04 | 显示全部楼层
STM32 的 ADC 多通道采集时,通道切换有没有延时?我怀疑是切换太快导致前一个通道的信号残留,要不要在通道切换后加个空采样周期?
heisexingqisi 发表于 2026-1-8 10:45 | 显示全部楼层
ADC输入通道未接滤波电容,或模拟/数字地未隔离,导致高频噪声进入采样通道。
评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

657

主题

4233

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部
0