stm32之ADC
将模拟量转换为数字量的过程称为模式(A/D)转换,完成这一转换的期间成为模数转换器(简称ADC);将数字量转换为模拟量的过程为数模(D/A)转换,完成这一转换的器件称为数模转换器(简称DAC).
模拟信号的采集与处理:
数据采集系统由模拟信号采集、A/D转换、数字信号处理三大部分组成:
A/D转换的原理:
A/D转换中通常要完成采样保持和量化编码两方面。所以AD转换是需要转换时间的,一般AD转换的时间在uS级别;(量化编码所需要的时间决定采样保存的时间),如下图:
将采样后得到的样点幅值转换为数字量即为量化,编码的过程。量化编码过程是模/数转换的核心。所谓量化编码,就是以一定的量化单位,把数值上连续的模拟量而时间上的离散的模拟信号通过量化装置转变为树枝上离散的阶跃两的过程。常见的量化编码技术:计数式、双积分转换,逐次逼近式转换,并联式转换;
AD转换器的主要参数:
1、分辨率 2、相对精度 3、转换速度;
有16个多路通道。可以把转换分成两组:规则的和注入的。在任意多个通道上以任意顺序进行的一系列转换构成成组转换。例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。
规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。规则组中转换的总数写入ADC_SQR1寄存器的L[3:0]位中。
注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。注入组里的转换总数目写入ADC_JSQR寄存器的L[1:0]位中。
如果ADC_SQRx或ADC_JSQR寄存器在转换期间被更改,当前的转换被清除,一个新的启动脉冲将发送到ADC以转换新选择的组;
转换模式:
1、单次转换模式,对一个端口转换一次 2、连续转换模式:对一个端口连续转换;
3、扫描模式:对多个端口连续转换 4、中断模式;
ADC使用:
转换模式详解:
如何使用规则通道的单次转换模式:
单次转换模式里,ADC只执行一次转换。这个模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动也可以通过外部触发启动(适用于规则通道和注入通道)。这时CONT位为0;
一旦选择通道的转换完成:
如果一个规则通道被转换:
--转换数据被存储在16位ADC_DR寄存器中;
--EOC(转换结束)标志被设置;
--如果设置了EOCIE,则产生中断;
如果一个注入通道被转换:
--转换数据被储存在16的ADC_DRJ1寄存器中;
--JEOC(注入转换结束)标志位被设置;
--如果设置了JEOCIE位,则产生中断;
然后ADC停止;
适用范围:
单通道单次转换:
对一个通道进行一次转换,然后ADC停止;
应用举例:启动系统功能之前测量电压;
多通道单次转换:
对多个通道进行逐个的独立转换,然后ADC停止;
可对多大16个通道的转换配置不同采样时间和顺序;
无需中途停止ADC来配置下一个通道的采样时间;
节省CPU负载;
应用举例:启动系统之前测量多个参数;
单通道连续转换:
对一个规则通道进行连续转换
通常可用于后台,无需要CPU干涉的连续转换;
配合DMA的循环模式,进一步减少CPU负载;
应用举例:检测电池电压。测量并调节炉温;
多通道连续转换:
对多个通道进行连续的独立转换;
可对多达16个通道的转换配置不同的采样时间和顺序;
应用举例:
多电池充电器检测多个电压和温度信息;
ADC相关寄存器:
ADC_CR1:ADC控制寄存器,关键位:扫描位、JEOCIE(允许中断位)、模式选择、EOC(允许中断)、看门狗检测哪路AD的选择;
ADC_CR2:关键位:打开ADC、设置是否连续转换、AD校准、数据格式左\右对齐、触发事件、
ADC_SMPR1/ADC_SMPR2:采样事件寄存器:
设置采样时间等、
时间计算:
对于每个转换的通道,采样时间建议尽量长一点,以获得较高的准确度。但这样会降低ADC的转换速率。ADC的转换时间可以由下公式计算:
Tconv=采样时间+12.5个周期;
其中:
Tconv是总转换时间,采样时间是根据每个通道的SMP位的设置来决定的;
例如:当ADCCLK=14Mhz的时候,并设置了1.5个周期为采样时间,则得到的Tconv=14个周期=1us;(这是最快速度)
ADC_SQR1~3:
定义了多少组进行AD转换(一个通道为一组)
ADC_DR/ADC_JDRx:ADC数据寄存器;
ADC_SR:ADC状态寄存器;
//待续......