|
一 单通道采样
《STM32库开发实战指南》 刘火良,杨森著 / Y2 A* A% F. b, w6 w/ R8 i7 W 原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了,直接来看硬件电路图
+ L3 `+ X, ]$ C7 {0 h; x9 Q 这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两端的电压,这样的电路设计比较简单也容易理解,但是存在一定的弊端,下面给出《STM32库开发实战指南》上面配套的硬件电路图
, G/ Z( b6 ?# \8 B. ^9 x5 c 如果设计电路图的话,可以参考这种思路。
我的收获 # C; o2 F' H8 c- M4 ]3 N c6 }1 ]7 `9 a# x 每一个ADC通道都对应一个GPIO引脚,看图中的ADC123_IN10,表示这个引脚(PC0)可以配置为ADC1的通道10,或者是ADC2的通道10,或者是ADC3的通道10,这个地方非常重要,涉及到后面ADC初始化时函数的调用。 比如当我们使能ADC时,我们调用的函数是
如果我们使用的是ADC1,那么上面函数的写法就应该是
相应的如果是ADC2,那么上面函数的写法就是
另外需要注意的是,我们这里的ADC使用了DMA,所以如果你使用的是ADC1,那么对应的DMA就应该是DMA1的通道1
如果使用的是ADC2或者是ADC3就需要自己去查找手册,看看对应的是哪个DMA的那个通道。 在后面上传的程序中可以看到DMA初始化的时候有这么一条语句
6 }8 L5 t4 M% y 这就是初始化DMA1的通道1 相应的
# H3 V F0 [, B, M% V4 e 就是使能DMA1的通道1 ( v" H' L! U1 Q; b3 t; E 总结一句,配置的IO口不同,对应ADC和DMA就不同。 在单通道的ADC采样中,注意上面这一个点就可以了,但是多通道采样还需要注意其他的一些地方
二 多通道采样
- t* D/ H9 z% L; j7 s3 X 还是看上面的电路图
这里我们假设使用PB0和PC0端口来采集电压。
stm32有三个ADC,每个ADC对应16个通道,这里我们只是用其中的两个通道来做说明。 4 V; z( V2 q: k 在程序中PB0设置为ADC1的通道8,PC0设置为ADC1的通道10。 , d. y8 K C3 u H 需要注意的几个点: 1 l2 N: N+ |% e8 s' U1 x. J4 K 1 引脚的配置,在上面已经说到 9 E6 H3 p# A* z% f 2 ADC模式的一些配置
对ADC模式的配置主要是通过对ADC_InitTypeDef结构体成员的初始化来完成的。
; m q5 ]1 j" P 结构体的这个成员主要是用来设置ADC的扫描模式,我们使用通道8和通道10,当然要允许ADC进行通道的扫描
% ?+ K1 h5 [+ k# A9 v ) S& T7 `- A/ w& Y7 r7 l* Q& {, ] 这个结构体成员是用来表明要转换的通道数目,这里我们使用通道8和通道10两个通道,那么这个值必然是2。
这是一个非常重要的函数 - B, G5 l( Z5 q0 [0 F9 ~% N1 w 这是从《stm32库函数使用手册》中截到的图,关于函数具体参数的使用可以去看该手册。
下面结合程序来看一下这个函数的使用 ( W$ H# D2 z2 @ 7 u/ ?$ H# P2 _+ B7 m, U! m 函数的第三个参数是用来设置采样顺序的,看我们的程序,也就是说我们设置ADC1的通道8先进行采样,接着ADC1的通道10再进行采样。 ' f3 A/ t6 A$ X0 W% K |
| 感谢分享!!! |
| 好文。 |
微信公众号
手机版