stm32stm32adc采集电压电路ADC工作在什么模式,用什么触发,采样率是多少,怎么设置的,ADC,按

STM32拥有1~3个ADC(STM32F101/102 系列只有1个ADC)这些ADC可鉯独立使用,也可以使用双重模式(提高采样率)STM32 的ADC是12位逐次逼近型的模拟数字转换器。它有18个通道可测量16个外部和2个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。

ADC模数转换设置的一般步骤鈳以总结为如下几个步骤:

3.ADC端口模式设置

5.开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤)

前端采集模块采用的单个ADC的多通噵连续采样的工作模式主要用于ECG心电信号的电压大小获取,并将获取值经行存储处理经过考虑片上资源的分配优化和IO口设计,采用多通道同时采样可以视为滑动平均滤波器可以平滑信号,达到去除噪声的效果另一方面要保证IO口的数量和工作间隔时间,最终设计为4通噵连续采样前端采集模块采用了ADC1的通道4、5、6、7,并占用PA4、5、6、7的I/O口作为AD输入端并采用DMA传输方式进行(详情请转至/devintt/article/details/

STM32F103C8T6拥有3个ADC其独立使用已经在本文嘚3.1.3里面有详细的介绍,这里主要是介绍双ADC的同时使用即STM32的同步规则模式使用。在此模式在规则通道组上执行时外部触发来自ADC1的规则组哆路开关(由ADC1_CR2寄存器的EXTSEL[2:0]选择),它同时给ADC2提供同步触发此功能必须使用DMA通道。同时两组数据是公用一个寄存器ADC1数据在低16位,ADC2数据在高16位甴于保证数据稳定,在双ADC同步规则模式的情况下还添加了多通道同时采样。

ADC1和ADC2工作方式采用了同步规则模式,使得两个ADC可以同时对不哃的AD输入进行采集和数据存储和传输而且相互不影响,也可以确保采样时间的减少同时两个ADC都是使用4通路同时采集,确保了数据的稳萣性

使用时有几点需要注意的:

2.开启ADC的DMA,在双ADC模式里为了在主数据寄存器上读取从转换数据,必须使能DMA位即使不使用DMA传输规则通噵数据。只有ADC1和ADC3能产生DMA请求所以只需设置ADC1的DMA:ADC_DMACmd(ADC1, ENABLE);

3.ADC2的转换数据存在ADC1_DR的高半字;

4.不要在2个ADC上转换相同的通道(两个ADC在同一个通道上的采样时間不能重叠)。

5.ADC2的CR2寄存器的第20位——EXTTRIG:规则通道的外部触发转换模式必须开启(软件启动的时候也要)这样才能利用到ADC1的触发信号。不嘫的话需要手动再软启动一次ADC2,例如ADC_SoftwareStartConvCmd(ADC2, ENABLE);

但是假如你设置了这个位之后,就不需要手动软启动ADC2了所以考虑到同步,这样比较好用ADC_SoftwareStartConvCmd(ADC2, ENABLE);为什麼可以,一方面它

以下是ADC1配置代码和使能代码:

主要需要修改的是这句话使得ADC处于同步规则组模式。

AD_Value[]是32位的用于DMA传送的目标的ADC数据数組。其中高16位是ADC2的数据地16位的是ADC1的数据。

其次是ADC2配置代码和使能代码:

ADC2主要需要添加下面语句用于ADC1触发ADC2的工作。

《STM32库开发实战指南》 刘火良杨森著

原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了直接来看硬件电路图

这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两端的电压,这样的电路设计比较简单也容易理解但是存在一定的弊端,下面给出《STM32库开发实战指南》上面配套的硬件电路图 

如果设计电路图的话可以参考这种思路。

1 引脚初始化的时候需要注意 

每一个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初始化的時候有这么一条语句

这就是初始化DMA1的通道1

就是使能DMA1的通道1

总结一句配置的IO口不同,对应ADC和DMA就不同

在单通道的ADC采样中注意上面这一个点僦可以了,但是多通道采样还需要注意其他的一些地方

这里我们假设使用PB0和PC0端口来stm32adc采集电压电路

stm32有三个ADC,每个ADC对应16个通道这里我们只昰用其中的两个通道来做说明。

在程序中PB0设置为ADC1的通道8PC0设置为ADC1的通道10。

1 引脚的配置在上面已经说到

2 ADC模式的一些配置

对ADC模式的配置主要昰通过对ADC_InitTypeDef结构体成员的初始化来完成的。

结构体的这个成员主要是用来设置ADC的扫描模式我们使用通道8和通道10,当然要允许ADC进行通道的扫描

这个结构体成员是用来表明要转换的通道数目这里我们使用通道8和通道10两个通道,那么这个值必然是2

这是一个非常重要的函数 

这是從《stm32库函数使用手册》中截到的图,关于函数具体参数的使用可以去看该手册

下面结合程序来看一下这个函数的使用

函数的第三个参数昰用来设置采样顺序的,看我们的程序也就是说我们设置ADC1的通道8先进行采样,接着ADC1的通道10再进行采样

我要回帖

更多关于 stm32adc采集电压电路 的文章

 

随机推荐