这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » STM32的ADC采样DMA方式通道间有干扰,怎么破?

共9条 1/1 1 跳转至

STM32的ADC采样DMA方式通道间有干扰,怎么破?

高工
2022-05-28 12:20:57     打赏

前段时间,我用STM32F103C8T6做了个多路电压采样的小东西,用到了ADC的多通道DMA方式传输。但在使用的过程中发现了一个问题,也就是网上都在说的通道间存在干扰的问题。

原理图如下:


image.png


这两个是旋钮式的电位器,分别通过一个1K的电阻接到单片机的AD管脚上,采样得到的电压值通过数码管实时显示。


image.png


ADC管脚是PA5和PA6,它们两个既属于ADC1也属于ADC2,我把它配置成了STM32的ADC1的通道5和通道6。


image.png


使用过程中的现象表现为:当两个电位器都不动,数码管显示两路的电压值时,值基本是固定的,没有问题。当快速选择一个旋钮,使相应通道的电压剧烈变化时,另一路电压值会受影响,跟随变大或变小。虽然变化幅度不大,但确实存在。


而且这种干扰不是瞬间的,就是说,即便另一路电压停止变化,但前一路受影响增加或减少的电压依然存在。


网上搜了一下,大致知道了问题引发的原因。知道原因之后,再去想办法解决就好说了。


首先明白一点,该单片机内部有两个AD转换器,ADC1和ADC2。每个AD转换器最多有16个通道。我这里使用的是ADC1的通道5和通道6。


其次,工作在DMA模式下,通道5和通道6是自动、快速切换的。AD转换器结构如下:


image.png


图有点模糊,网上找的,凑合看吧。多个通道是通过模拟多路开关自动切换的。这就导致,在切换的瞬间上一个通道的电压值干扰到下一个通道。切换速度越快,影响越大,切换之间的时间间隔越久,影响越小。


所以,看到这里,懂的人基本就懂了。解决这个问题,方法大致有几个:


1、精度要求不高的话,把采样周期设置的大一些,越大越好。当然,干扰还是会有,只是会低一些。


2、把通道5和通道6分别配置到ADC1和ADC2上面,彻底隔离。


3、DMA方式一次只配置一个通道,例如先让通道5采集500ms,再让通道6采集500ms,同时前100ms的数据丢掉不用。


4、前几天在网上又看到一个思路,大致意思是在AD管脚上并联一个100nf左右的电容,这种方法我没试过,有试过的童鞋可以说说~


大致就这几个思路,打完收工!





关键词: STM32     采样     干扰    

院士
2022-05-28 23:00:34     打赏
2楼

学习


专家
2022-05-29 00:52:25     打赏
3楼

感谢分享


专家
2022-05-29 10:58:06     打赏
4楼

谢谢分享


专家
2022-05-29 13:14:03     打赏
5楼

谢谢分享


助工
2022-05-29 14:41:23     打赏
6楼

感谢分享


院士
2022-05-30 09:15:31     打赏
7楼

谢谢楼主分享的技术文章~!


专家
2022-05-30 11:05:04     打赏
8楼

谢谢分享


专家
2022-05-30 11:23:05     打赏
9楼

写的好,参考和学习


共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]