STM32的ADC采样DMA方式通道间有干扰,怎么破?
时间:2022-11-17 19:00:00
前段时间,我用了STM32F103C8T6做了一个多路电压采样的小东西,用了ADC的多通道DMA传输方式。但在使用过程中发现了一个问题,即网上所说的渠道之间存在干扰。
原理图如下:
这两个是旋钮式电位器,分别通过一个1K接收单片机的电阻AD在管脚上,通过数字管实时显示采样获得的电压值。
ADC管脚是PA5和PA6,它们两个既属于ADC1也属于ADC我把它配置好了STM32的ADC通道5和通道6。
使用过程中的现象是,当两个电位器不移动,数字管显示两个电压值时,值基本固定,没有问题。当快速选择一个旋钮以剧烈地改变相应通道的电压时,另一个电压值会受到影响,并随之变大或变小。虽然变化不大,但确实存在。
而且这种干扰不是瞬间的,也就是说,即使另一个电压停止变化,受影响的前一个电压仍然存在。
在网上搜索,大致知道问题的原因。知道原因后,再想办法解决。
首先,单片机内部有两个AD转换器,ADC1和ADC2。每个AD转换器最多有16个通道。我在这里用ADC通道5和通道6。
第二,工作在DMA通道5和通道6在模式下自动快速切换。AD转换器结构如下:
图片有点模糊。如果你在网上找到它,请凑合着看。多个通道通过模拟多路开关自动切换。这导致上一个通道的电压值在切换时干扰下一个通道。切换速度越快,影响越大,切换间隔越长,影响越小。
所以,看到这里,懂的人基本都懂。解决这个问题有几种方法:
1.如果精度要求不高,采样周期越大越好。当然还是会有干扰,但是会更低。
2.分别配置通道5和通道6ADC1和ADC上面,完全隔离。
3、DMA一次只配置一个通道,比如先让通道5采集500ms,让通道6收集5000ms,同时前100ms不需要丢失数据。
4.前几天在网上看到另一个想法,大致意思是AD管脚并联1000nf我没有尝试过左右电容器。试过的童鞋可以说~
感谢大家关注这些想法!
数据共享
55162734学习交流群
实例教程分享:传感器)">( ADC读取光传感器)