一、ADC简介
ADC:Analog-to-Digital Converter的缩写,指模拟/数字转换器。是将连续变量的模拟信号转换为离散的数字信号的器件。
典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。
STM32有三个独立的ADC,ADC1、ADC2和ADC3。
ADC特点:
可配置12位、10位、8位或6位分辨率。
在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断。
数据对齐以保持内置数据一致性。
电源要求:全速运行时为2.4V到3.6V,慢速运行时为1.8V。
规则通道转换期间可产生DMA请求。
每个ADC都有18个通道,其中外部通道16个。
二、ADC功能框图
(1)电压输入范围
(2)输入通道
每个ADC具有18个通道,其中外部通道16个(ADCx_IN0 ~ ADCx_IN15)。
外部的16个通道在转换的时候又分为规则通道和注入通道,其中规则通道最多有16路,注入通道最多有4路。
规则通道:顾名思意,规则通道就是很规矩的意思,我们平时一般使用的就是这个通道。
注入通道:注入,可以理解为插入,插队的意思,是一种不安分的通道。它是一种在规则通道转换的时候强行插入要转换的一种
这点跟中断程序很像,都是不安分的主。所以,注入通道只有在规则通道存在时才会出现。
(3)转换顺序
1》规则通道
2》注入通道
(4)触发源
软件触发:ADC_CR2 :ADON/SWST ART/JSWSTART。
外部事件触发:内部定时器/外部IO 选择:ADC_CR2 :EXTSEL[2:0]和 JEXTSEL[2:0] 激活:ADC_CR2 :EXTEN 和 JEXTEN。
(5)转换时间
转换时间Tconv = 采样时间 + 12个周期数(12位)。
ADC_CLK:ADC模拟电路时钟,由PCLK2(84MHz)经过2/4/6/8分频得到,最大值为36MHz。
采样时间:ADC 需要若干个 ADC_CLK 周期完成对输入的模拟量进行采样,采样的周期数可通过ADC 采样时间寄存器
ADC_SMPR1 和 ADC_SMPR2 中的 SMP[2:0]位设置, ADC_SMPR2控制的是通道 0~9, ADC_SMPR1 控制的是通道 10~17。每个通道
可以分别用不同的时间采样。其中采样周期最小是 3 个,即如果我们要达到最快的采样,那么应该设置采样周期为 3 个周期,这里说的周
期就是 1/ADC_CLK。
每种分辨率的最小转换时间为:(若经过4分频,则ADC_CLK = 21MHz)
12位:3 + 12 = 15个ADC_CLK周期 =15/21us = 0.71us
10位:3 + 10 = 13个ADC_CLK周期 = 13/21us = 0.62us
8位: 3 + 8 = 11个ADC_CLK周期 = 11/21us = 0.52us
6位: 3 + 6 = 9个ADC_CLK周期 = 9/21us = 0.42us
(6)转换方式
1》单次转换模式
2》连续转换模式
3》扫描模式
(7)数据寄存器
ADC 转换后的数据根据转换组的不同,规则组的数据放在规则数据寄存器ADC_DR内,注入组的数据放在注入数据寄存器JDRx
内。如果是使用双重或者三重模式那规矩组的数据是存放在通用规则寄存器 ADC_CDR 内的。
1》规则数据寄存器(ADC_DR)
16位有效,用于存放规则通道转换完的数据。
只有一个规则数据寄存器,多通道采集需要使用中断或DMA。
2》注入数据寄存器(ADC_JDRx,x=1..4)
16位有效,用于存放注入通道转换完的数据。
由4个注入数据寄存器。
3》通用规则寄存器(ADC_CDR)
32位有效,双重或三重ADC使用。
只有一个通过规则寄存器,必须配合DMA使用。
(8)电压转换
1、 电压输入范围为:0~3.3V
2、分辨率为12位
3、最小精度为:3.3/2^12
4、设数字量为X,则有模拟量 Y = (3.3 / 2^12)*X
三、ADC工作模式
(1)独立模式
只有一个ADC工作,可以是ADC1/2/3。
可以单通道,可以多通道。
转换后的数据放在规则数据寄存器ADC_DR中,可以采用中断或者DMA接收数据。
只用当一个点完成后,才会进行下一个点。
(2)双重规则同步模式
规则指的是只适用于规则通道,注入通道不行。
同步指的是两个/三个ADC同时采集多个通道,比如示波器的双通道同时采集。
不要在同步模式时采集同一个通道。
转换后的数据放在规则数据寄存器ADC_DR中,必须采用DMA接收数据。
(3)多重交替模式
交替模式只能用于规则组,通常只有一个通道,在一个ADC转换的时候,另一个ADC又开始采集,这样可以提高