ADC的3个通道同时采集三个数据应如何配置

2019-08-16 23:44发布

我现在输入三个数据a,b,c到STM32芯片,用ADC的channel4,5,6来分别采集a,b,c三数据,并把这三个数据的值读取出来。
网上看到的例程不是只用一通道采集一个数据,就是多个通道采集同一个数据再取平均值。都不是我要的结果。

网上的例程中,获得这个数据的值的方法是        return ADC_GetConversionValue(ADC1);
但是如果我采集了三个不同的数据a,b,c,这个函数是无法返回ADC某个通道的值的吧?那应该怎么办呢?
谢谢~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
xiaoyan
1楼-- · 2019-08-17 05:32
 精彩回答 2  元偷偷看……
xiaoyan
2楼-- · 2019-08-17 07:49
回复【楼主位】馨馨泡沫:
---------------------------------
用DMA搬运
你采集的这三个通道就可以用三个元素的数组存放
u16 adc_val[3];
adc_val[0]   -----------------channel 4
adc_val[1]   -----------------channel 5
adc_val[2]   -----------------channel 6

ADC采用规则采样,DMA循环搬运就可以了。
馨馨泡沫
3楼-- · 2019-08-17 08:37
回复【2楼】xiaoyan:
---------------------------------
我使用了DMA,但是不太明白DMA搬运应该如何表达。比如当我不用DMA的时候,我获得这个数据用的是data= return ADC_GetConversionValue(ADC1);
那么我用DMA搬运三个数据应该是adc_val[1]=_______________呢?
还是说不必使用任何编程语句,当我设置完成后,已经自动得到了adc_val[1]的值,只需要在主函数中直接引用这三个值用到其他地方做接下来的工作就可以了呢?

谢谢~
馨馨泡沫
4楼-- · 2019-08-17 11:06
回复【2楼】xiaoyan:
---------------------------------
另外请问,我应当把ADC工作模式设置为单通道模式和单次模式对么?然后把NbrOfChannel定为3?
馨馨泡沫
5楼-- · 2019-08-17 11:42
回复【5楼】xiaoyan:
---------------------------------
知道了,非常感谢!!!
蓝色风lyl
6楼-- · 2019-08-17 12:55
 精彩回答 2  元偷偷看……

一周热门 更多>