一、ADC 简介
ADC 即模拟数字转换器,英文详称 Analog-to-digital converter,可以将外部的模拟信号转换为数字信号。
STM32F4xx 系列芯片拥有 3 个 ADC,这些 ADC 可以独立使用,其中 ADC1 和 ADC2 还可以组成双重模式(提高采样率)。STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。ADC1 有 16 个外部通道和 3 个内部通道,而 ADC2和 ADC3 只有有 16 个外部通道。ADC1 的外部通道是通道 17、通道 18 和通道 19,分别连接到内部温度传感器、内部Vrefint和Vbat。 ADC 中的各个通道的A/D 转换可以单次、连续、扫描或间断模式执行。ADC 的结果可以以左对齐或者右对齐存储在16 位数据寄存器中。ADC 具有模拟看门狗的特性,允许应用检测输入电压是否超过了用户自定义的阈值上限或下限。
STM32F407 的 ADC 主要特性我们可以总结为以下几条:
1、可配置 12 位、10 位、8 位或 6 位分辨率;
2、转换结束、注入转换结束和发生模拟看门狗事件时产生中断
3、单次和连续转换模式
4、自校准
5、带内嵌数据一致性的数据对齐
6、采样间隔可以按通道分别编程
7、规则转换和注入转换均有外部触发选项
8、间断模式
9、双重模式(带 2 个或以上 ADC 的器件)
10、ADC 转换时间:最大转换速率为 2.4MHz,转换时间为 0.41us
11、ADC 供电要求:2.4V 到 3.6V
12、ADC 输入范围:V REF – ≤V IN ≤V REF+
13、规则通道转换期间有 DMA 请求产生
二、ADC 的配置流程
(1)输入 电压
(2)输入通道
(3)转换顺序
当任意 ADCx 多个通道以任意顺序进行一系列转换就诞生了成组转换,这里就有两种成组转换类型:规则组和注入组。规则组允许最多 16 个输入通道进行转换,而注入组允许最多 4 个输入通道进行转换
规则组(规则通道)
规则组,按字面理解,“规则”就是按照一定的顺序,相当于正常运行的程序
注入组(注入通道)
注入组,按字面理解,“注入”就是打破原来的状态,相当于中断。当程序执行的时候,中
断是可以打断程序的执行。同这个类似,注入组转换可以打断规则组的转换。假如在规则组转
换过程中,注入组启动,那么注入组被转换完成之后,规则组才得以继续转换
通过设置寄存器里面不同的值,来配置不同通道的转换顺序以及转换的总通道数量
(4)触发源
ADC 的触发转换有两种方法:分别是通过软件或外部事件(也就是硬件)触发转换。
软件触发转换的方法。方法是:通过写 ADC_CR2 寄存器的 ADON 这个位来控制,写 1 就开始转换,写 0 就停止转换,这个控制 ADC 转换的方式非常简单。
外部事件触发转换的方法,有定时器和输入引脚触发等等
(5)转换时间
T CONV = 采样时间 + 12 个周期
(6)数据寄存器
ADC 转换完成后的数据输出寄存器。
(7)中断
规则和注入组转换结束时能产生中断,当模拟看门狗状态位被设置时也能产生中断。