ADC采样结果偶尔跳变,怀疑和DMA传输有冲突
在做多通道ADC采样时,发现偶尔有一个通道的值会突然跳很高,然后又恢复正常。采样是用DMA循环传输的。单步调试看寄存器没问题,怀疑可能是DMA和ADC触发的时序有点错位。可以考虑用双缓冲DMA,看是不是切换瞬间数据乱了。 你是不是在采样结束回调里又修改了ADC配置?那可能打乱DMA节奏。 多通道扫描模式下如果没开连续转换,容易出这种“卡顿”。 我之前遇到过,是DMA缓存没清空,残留上一次的数据。 有时候地线噪声也会造成ADC值飘高,尤其是模拟地没分开。 可以试着加点采样平均,看跳变是不是随机的。 我觉得也可能是某个通道输入阻抗太高,采样保持时间不够。 要不你关掉DMA,用单次模式采几次看看,是不是还会跳。 我怀疑是DMA半传输中断没处理好,造成错位。 这种情况我加了个互斥锁保护ADC启动就好了。
页:
[1]