ADC 简介(STM32F407)

什么是ADC

ADC即模拟数字转换器,全称 Analog-to-digital converter,可以将外部的模拟信号转换为数字信号。

ADC功能框图

①参考电压/输入电压

ADC的输入电压范围是 VREF-- ≤ VIN ≤ VREF+,最终还是由 VREF--、VREF+、VDDA、VSSA 决定。

VDDA 和VREF+ 接 VCC3.3,而 VSSA 和 VREF- 接地,所以 ADC 的输入电压范围是 0~3.3V。

②输入通道

ADC1有16个外部通道和3个内部通道,ADC1的外部通道是通道17、通道18和通道19,分别连接到内部温度传感器、内部Vrefint和Vbat。

ADC2和ADC3只有16个外部通道。

ADC的外部通道如下表所示,

③转换顺序

当任意 ADCx 多个通道以任意顺序进行一系列转换就诞生了成组转换,这里就有两种成组转换类型:规则组和注入组。

规则组就是框图中的规则通道,注入组就是框图中的注入通道。后文中规则通道以规则组来代称,注入通道以注入组来代称。

规则组允许最多16个输入通道进行转换,而注入组允许最多4个输入通道进行转换。这里讲解一下规则组和注入组。

规则组(规则通道)

规则组,顾名思义,就是按照一定的顺序,相当于正常运行的程序,平常用到最多也是规则组。

注入组(注入通道)

注入组,顾名思义,"注入" 就是打破原来的状态,相当于中断。当程序执行的时候,中断是可以打断程序的执行。同这个类似,注入组转换可以打断规则组的转换。假如在规则组转换过程中,注入组启动,那么注入组被转换完成之后,规则组才得以继续转换。 便于理解,下图为规则组和注入组的对比图,

在了解了规则组和注入组后,现在了解一下它们两者的转换顺序。

规则序列

规则组是允许16个通道进行转换的,那么就需要安排通道转换的次序即规则序列。规则序列寄存器有3个,分别为SQR1、SQR2和SQR3。SQR3控制规则序列中的第1个到第6个转换的通道;SQR2控制规则序列中第7个到第12个转换的通道;SQR1控制规则序列中第13个到第16个转换的通道。规则序列寄存器SQRx下图所示,

注入序列

注入序列,跟规则序列差不多,都是有顺序的安排。由于注入组最大允许4个通道输入,所以这里就使用了一个寄存器JSQR。注入序列寄存器JSQR详表下所示,

④触发源

在配置好输入通道以及转换顺序后,就可以进行触发转换了。ADC的触发转换有两种方法:分别是通过软件或外部事件(也就是硬件)触发转换。

软件触发转换的方法是通过写 ADC_CR2 寄存器的 ADON 这个位来控制,写1就开始转换,写0就停止转换,这个控制ADC转换的方式非常简单。

另一种就是通过外部事件触发转换的方法,有定时器和输入引脚触发等等。这里区分规则组和注入组。方法是:通过 ADC_CR2 寄存器的 EXTSET[2:0] 选择规则组的触发源,JEXTSET[2:0] 选择注入组的触发源。通过 ADC_CR2 的 EXTTRIG 和 JEXTTRIG 这两位去激活触发源。ADC3 的触发源与 ADC1、2 的不同,这里需要注意,在框图里已经标记出来了。

⑤转换时间

STM32F407的ADC总转换时间的计算公式如下:

= 采样时间 + 12个周期

采样时间可通过 ADC_SMPR1 和 ADC_SMPR2 寄存器中的 SMP[2:0] 位编程,ADC_SMPR2 控制的是通道 0~9,ADC_SMPR1 控制的是通道 10~18。所有通道都可以通过编程来控制使用不同的采样时间,可选采样时间值如下:

公式中的 12个周期 是由 ADC 输入时钟 ADC_CLK 决定的。ADC_CLK 是由 APB2 经过分频产生,分频系数由 RCC_CFGR 寄存器中的 PPRE2[2:0] 进行设置,有 2/4/6/8/16 分频选项。 采样时间最小是3个时钟周期,这个采样时间下,我们可以得到最快的采样速度。

例如,我们采用最高的采样速率,使用采样时间为3个ADC时钟周期,那么得到:

= 3个ADC时钟周期 + 12个周期 = 15个ADC时钟周期

一般 APB2 的时钟是 84MHz,经过 ADC 分频器的4分频后,ADC 时钟频率就为21MHz。通过换算可得到:

= 15个ADC时钟周期 = (121000000)∗15 s = 0.71us

⑥数据寄存器

ADC转换完成后的数据输出寄存器。根据转换组的不同,规则组的完成转换的数据输出到ADC_DR寄存器,注入组的完成转换的数据输出到ADC_JDRx寄存器。假如是使用双重模式, 规则组的数据也是存放在ADC_DR寄存器。

⑦中断

规则和注入组转换结束时能产生中断,当模拟看门狗状态位被设置时也能产生中断。它们在ADC_SR中都有独立的中断使能位。

模拟看门狗中断

模拟看门狗中断发生条件:首先通过ADC_LTR和ADC_HTR寄存器设置低阈值和高阈值,然后开启了模拟看门狗中断后,当被ADC转换的模拟电压低于低阈值或者高于高阈值时,就会产生中断。例如我们设置高阈值是3.0V,那么模拟电压超过3.0V的时候,就会产生模拟看门狗中断,低阈值的情况类似。

DMA请求

规则组和注入组的转换结束后,除了产生中断外,还可以产生DMA请求,把转换好的数据存储在内存里面,防止读取不及时数据被覆盖。

总结

本文主要介绍了 ADC 的基本概念和其功能结构。有关 ADC 的具体应用将在其他文章中详细叙述。

相关推荐
scan15 小时前
单片机串口接收状态机STM32
stm32·单片机·串口·51·串口接收
Qingniu016 小时前
【青牛科技】应用方案 | RTC实时时钟芯片D8563和D1302
科技·单片机·嵌入式硬件·实时音视频·安防·工控·储能
Mortal_hhh7 小时前
VScode的C/C++点击转到定义,不是跳转定义而是跳转声明怎么办?(内附详细做法)
ide·vscode·stm32·编辑器
深圳市青牛科技实业有限公司7 小时前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
Mr.谢尔比8 小时前
电赛入门之软件stm32keil+cubemx
stm32·单片机·嵌入式硬件·mcu·信息与通信·信号处理
LightningJie8 小时前
STM32中ARR(自动重装寄存器)为什么要减1
stm32·单片机·嵌入式硬件
鹿屿二向箔9 小时前
STM32外设之SPI的介绍
stm32
西瓜籽@9 小时前
STM32——毕设基于单片机的多功能节能窗控制系统
stm32·单片机·课程设计
远翔调光芯片^1382879887211 小时前
远翔升压恒流芯片FP7209X与FP7209M什么区别?做以下应用市场摄影补光灯、便携灯、智能家居(调光)市场、太阳能、车灯、洗墙灯、舞台灯必看!
科技·单片机·智能家居·能源
极客小张12 小时前
基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
stm32·单片机·嵌入式硬件·mqtt·sqlite·毕业设计·智能充电桩