[STM32L0] ADC采样结果偶尔跳变,怀疑和DMA传输有冲突

[复制链接]
1691|64
周半梅 发表于 2025-10-5 07:14 | 显示全部楼层 |阅读模式
在做多通道ADC采样时,发现偶尔有一个通道的值会突然跳很高,然后又恢复正常。采样是用DMA循环传输的。单步调试看寄存器没问题,怀疑可能是DMA和ADC触发的时序有点错位。
Clyde011 发表于 2025-10-5 07:20 | 显示全部楼层
可以考虑用双缓冲DMA,看是不是切换瞬间数据乱了。
公羊子丹 发表于 2025-10-5 07:21 | 显示全部楼层
你是不是在采样结束回调里又修改了ADC配置?那可能打乱DMA节奏。
 楼主| 周半梅 发表于 2025-10-5 07:22 | 显示全部楼层
多通道扫描模式下如果没开连续转换,容易出这种“卡顿”。
帛灿灿 发表于 2025-10-5 07:23 | 显示全部楼层
我之前遇到过,是DMA缓存没清空,残留上一次的数据。
童雨竹 发表于 2025-10-5 07:24 | 显示全部楼层
有时候地线噪声也会造成ADC值飘高,尤其是模拟地没分开。
万图 发表于 2025-10-5 07:25 | 显示全部楼层
可以试着加点采样平均,看跳变是不是随机的。
Wordsworth 发表于 2025-10-5 07:26 | 显示全部楼层
我觉得也可能是某个通道输入阻抗太高,采样保持时间不够。
Bblythe 发表于 2025-10-5 07:27 | 显示全部楼层
要不你关掉DMA,用单次模式采几次看看,是不是还会跳。
Pulitzer 发表于 2025-10-5 07:27 | 显示全部楼层
我怀疑是DMA半传输中断没处理好,造成错位。
Uriah 发表于 2025-10-5 07:28 | 显示全部楼层
这种情况我加了个互斥锁保护ADC启动就好了。
10299823 发表于 2025-10-7 07:54 | 显示全部楼层
多通道共用一个采样保持电容,当通道切换时,前一个通道的电压可能对当前通道产生干扰,导致采样值跳变。
mollylawrence 发表于 2025-10-7 19:46 | 显示全部楼层
电源噪声与参考电压不稳定              
10299823 发表于 2025-10-7 20:21 | 显示全部楼层
若DMA配置为连续模式且ADC为连续转换,可能导致数据错位或覆盖
chenci2013 发表于 2025-10-7 22:45 | 显示全部楼层
缓冲区太小​​,DMA 持续搬运,很快覆盖
mnynt121 发表于 2025-10-8 10:14 | 显示全部楼层
改为单次转换模式,每次触发后仅转换一组通道,避免连续切换导致的干扰
sanfuzi 发表于 2025-10-8 10:59 | 显示全部楼层
采样值 ​​大多数时候是稳定的、合理的​?
linfelix 发表于 2025-10-8 11:50 | 显示全部楼层
推荐用于连续采样,但要注意缓冲区管理
mikewalpole 发表于 2025-10-8 13:17 | 显示全部楼层
在DMA传输完成中断中检查数据合理性
jkl21 发表于 2025-10-8 14:32 | 显示全部楼层
​DMA 缓冲区中的数据排列是按通道顺序依次存放的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

183

主题

6324

帖子

1

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