[007]嵌入式学习:模数转换器

您所在的位置:网站首页 嵌入式AD [007]嵌入式学习:模数转换器

[007]嵌入式学习:模数转换器

#[007]嵌入式学习:模数转换器| 来源: 网络整理| 查看: 265

目录

【本文为百问网&韦东山【物联网智能家居实战训练营】学习笔记系列】

引言

模数转换器(ADC)是嵌入式开发中重要的常见外设。MCU通过它感知外界环境变化,进行对应处理,实现各种功能。

1 ADC的理论知识

自然界的信号几乎都是模拟信号,为了方便计算机存储、处理,需要将模拟信号(连续信号)转换为数字信号(离散信号),将模拟信号转换为数字信号的器件就叫模数转换器(Analogto-Digital Converter,ADC)。

ADC按原理可分为:

并行比较型 A/D 转换器(FLASH ADC)逐次比较型 A/D 转换器(SAR ADC)双积分式 A/D 转换器(Double Integral ADC)。

A/D转换过程通常为4步:采样、保持、量化和编码。A/D转换过程如图1 所示。

图1  A/D 转换过程

采样是对模拟信号周期性地抽取样值,使模拟信号转化为时间上离散的脉冲信号。采样频率(fs)越高,采样值越接近模拟信号。为确保采样后的信号能够还原模拟信号,采样频率应满足香农-奈奎斯特(Shannon & Nyquist)采样定律,即有

f_{s}\geqslant 2f_{Imax}

式中,f_{s}为采样频率,f_{Imax}为模拟信号的最高截止频率。

 ADC主要有三个性能指标:分辨率、转换时间和转换精度。

分辨率:又称为转换精度,指ADC能分辨的最小电压,通常使用二进制有效位表示,反应ADC 对输入模拟量微小变化的分辨能力。当最大输入电压一定时,位数越多,分辨率越高。例如一个12位的ADC,参考电压为3.3V,则其能分辨的最小电压为:3.3/212 = 0.8𝑚V转换时间:其倒数为转换速率,指ADC从控制信号到来开始,到输出端得到稳定的数字信号所经历的时间。转换时间通常与ADC类型有关,双积分型ADC的转换时间一般为几十毫秒,属于低速ADC; 逐次逼近型ADC的转换时间一般为几十微妙,属于中速ADC;并联比较型ADC的转换时间一般为几十纳秒,属于高速ADC。转换精度:指ADC输出的数字量所表示的模拟值与实际输入的模拟量之间的偏差,通常为1个或半个最小数字量的模拟变化量,表示为1LSB或1/2LSB。 2 STM32的ADC

STM32F10x系列内部有三个12位逐次逼近型ADC,拥有多达18个通道,可测量16个外部模拟输入源和2 个内部信号源的A/D转换。每个通道的A/D转换可采用单次、连续、扫描或间断模式执行。ADC的的转换结果为12位的二进制数,可按左对齐或右对齐存储在16位数据寄存器中。ADC具有模拟看门狗特性,允许应用程序检测输入电压是否超过用户自定义的阈值上限或下限。

2.1 ADC内部结构

如图2 所示,STM32的ADC组成可分为七部分。

(1)ADC参考电压引脚

VDDA和VSSA为专门为模拟电路设计的独立电源,用于过滤和屏蔽来自PCB上的毛刺和干扰。ADC为提高转换精确度,使用VDDA和VSSA供电。 VREF+和VREF-为ADC基准参考电压(Voltage Reference),将输入的待测量电压与基准参考电压比较,从而得知测量电压的大小。基准参考电压的准确度,直接影响测量结果,在高要求场合,通常使用独立的电压基准芯片提供参考电压。

一 般情况下,将VREF+与VDDA连接,VREF-与VSSA连接,得到3.3V的参考电压。如果想测量更高电压,比如5V电压。可以使用输入范围较大的ADC外置ADC芯片,通过\textup{I}^{2}\textup{C}等接口将测量结果返回给MCU。也可以使用简单的电阻分压,分压到3.3V以下,将采集的电压再按比例换算,得到实际电压。

(2)ADC输入引脚

ADCx_IN0~ADCx_IN15为ADC的输入信号通道,每个输入通道连接一个GPIO引脚。需要GPIO设置为 对应模拟输入的复用模式。

(3)ADC通道

STM32的ADC有16个模拟输入通道,可分为两组模式进行使用和规划。

规则通道组:最多支持16个通道,在该组的ADC通道,根据序列寄存器SQRx(x=1~3)的配置顺序,依次转换。如表1所示,SQR3控制通道顺序1~6,SQR2控制通道顺序7~12,SQR1控制 通道顺序13~16。

表1 规则通道序列寄存器

注入通道组:最多支持4个通道,在该组的ADC通道,根据注入序列寄存器JSQR的配置顺序,抢先 规则通道的ADC转换。如表 27.1.3 所示,JSQR控制通道顺序1~4。

表2 注入通道序列寄存器

(4)ADC触发

A/D转换需要触发信号才能开始工作,触发信号的产生方式通常有两钟。

软件触发:由软件编程控制,使能触发启动位;外部触发:规则通道组的外部触发源可以是定时器TIM1_CH1~TIM1_CH3、外部中断线EXTI_11等, 通过EXTSEL[2:0]选择触发源,ADC_CR2的EXTRIG位激活;注入通道组的外部触发源可以可以是 定时器TIM1_CH4、外部中断线EXTI_15等,通过JEXTSEL[2:0]选择触发源,ADC_CR2的JEXTTRIG 位激活。

(5)ADC中断

ADC在每个通道转换结束后,可产生相应的中断请求。若ADC_CR1寄存器的EOCIE位被置1,注入通道 或规则通道转换结束后,将产生EOC中断;若ADC_CR1寄存器的JEOCIE位被置1,注入通道转换结束后, 将产生JEOC中断;若ADC_CR1寄存器的AWDIE位被置1,超出阈值或低于阈值,将产生AWD中断。

(6)ADC数据

ADC在转换结束后,将数据存入相应的数据寄存器。规则通道组中的转换结果,存放在16位的ADC_DR 规则通道数据寄存器中,该寄存器只有一个,因此转换完成后应立即读取出来,以免被覆盖。或者开启DMA模式,将数据直接保存到指定地址的内存里。注入通道组中的转换结果,存放在16位的 ADC_JDRx注入通道数据寄存器中,该寄存器有四个,对应每一个转换通道,不存在覆盖问题。

ADC转换的结果是一个12位的二进制数,而寄存器是16位的,因此涉及到数据对齐问题。ADC对齐方式有左对齐和右对齐两种,通常使用右对齐方式。

(7)ADC时钟

ADC时钟ADCCLK由APB2(PLCK2)经ADC预分频器分频得到,分频值 可设置为2n(1≤n≤4)。APB2总线时钟通常为72MHz,根据《参考手册》可知,ADC最大工作频率为14MHz, 因此通常设置分频值为6,ADCCLK为12MHz。 A/D转换在采样时信号需要保持一段时间,采样时间越长,转换结果越稳定,但转换速率也就越慢。 STM32的ADC每个通道的采样时间都可以进行设置,可设置为采样周期的1.5倍、7.5倍、13.5倍、28.5倍、 41.5倍、55.5倍、71.5倍或239.5倍。

2.2 ADC的转换模式

ADC有四种转换模式:单次模式、连续模式、扫描模式和间断模式。

单次模式:ADC只执行一次转换;连续模式:当前ADC转换结束后,立即进入下一个转换;扫描模式:用来扫描一组通道。通道可以来自规则通道组,也可来自注入通道组。开启扫描模式后, ADC将自动扫描该组所有通道,如此时转换模式设置为单次转换,则扫描本组所有通道后,ADC 自动停止;若将转换模式设置为连续模式,则在扫描本组所有通道后,再从第一个通道开始扫描;间断模式:用来间歇转换一组通道。通道可以来自规则通道组,也可来自注入通道组。假设该组包 含0、1、2、3、5、6、7、8,共8个通道,而设置转换通道数为3,则第一次触发,转换0、1、2通 道;第二次触发,转换3、5、6通道;第三次触发,转换7、8通道,并产生EOC中断。 3 ADC试验的软件设计思路

当采用103MINI开发板进行ADC实验时,通过使用ADC采集按键的电压,体验ADC的功能效果。 软件设计思路如下:

1) 初始化ADC属性相关参数:数据对齐方式、工作模式、触发源等;

2) 初始化ADC涉及的硬件相关参数:相关时钟、引脚、DMA、中断等;

3) 编写ADC转换完成中断处理函数,通知ADC转换完成;

4) 主函数编写控制逻辑:通过按键,启动ADC采集,ADC后的数据通过DMA直接存放到指定内存地址。

4 结语

本文对模数转换器(ADC)的原理、结构和使用进行了介绍。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3