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 的具体应用将在其他文章中详细叙述。

相关推荐
霖霖71411 分钟前
基本功能实现
单片机·嵌入式硬件
Shaun_青璇12 分钟前
stm32 点亮LED
stm32·单片机·嵌入式硬件·mcu·物联网
7yewh24 分钟前
嵌入式硬件实战基础篇(三)-四层板PCB设计-步进电机驱动(TMC2208/TMC2209)
驱动开发·嵌入式硬件·mcu·物联网·硬件架构·硬件工程·pcb工艺
辞丶1761 小时前
STM32基于HALL库的串口以及DMA(串口总篇)
stm32·单片机·嵌入式硬件
相醉为友2 小时前
003 STM32基础、架构以及资料介绍——常识
stm32·单片机·嵌入式硬件
HZU_Puzzle2 小时前
【6】STM32·FreeRTOS·列表和列表项
stm32·单片机·嵌入式硬件
弥途4 小时前
半导体、晶体管、集成电路、芯片、CPU、单片机、单片机最小系统、单片机开发板-概念串联辨析
单片机
Whappy0014 小时前
5.STM32之通信接口《精讲》之USART通信---实验串口接收程序
stm32·单片机·嵌入式硬件
Whappy0015 小时前
4.STM32之通信接口《精讲》之IIC通信---软件实现IIC《深入浅出》面试必备!
stm32·单片机·嵌入式硬件
文弱书生6566 小时前
TIM输入捕获
stm32·单片机·嵌入式硬件