STM32H562----------ADC外设详解
1、ADC 简介
STM32H5xx 系列有 2 个 ADC,都可以独立工作,其中 ADC1 和 ADC2 还可以组成双模式(提高采样率)。每个 ADC
最多可以有 20 个复用通道。这些 ADC 外设与 AHB 总线相连。
STM32H5xx 的 ADC 模块主要有如下几个特性:
1、可配置 12 位、10 位、8 位、6 位分辨率,ADC 的转换时间与 AHB 总线时钟频率无关,分辨率越低转换时间越短。
2、每路 ADC 支持多达 20 个采集通道,其中 18 个外部通道,2 个内部通道。18 路外部通道中有 6 路快速通道和 12
路慢速通道。
3、ADC 的结果可左对齐/右对齐的方式存储在 16 位数据寄存器中
4、ADC 具有四条专用的内部通道,一路用于内部温度传感器、一路用于内部参考电压,一路用于监控外部 VBAT 的电
源引脚、一道用于监控内部 VDDCORE 电源。
5、支持过采样,过采样比 2~256x 可调,每个 ADC 支持三路模拟看门狗
6、支持单独输入和差分输入(可按通道进行编程),ADC 输入电压范围 VREF-≤VIN≤VREF+。一般把 VSSA 和 VREF-接地,把
V<sub>REF+</sub>和 V<sub>DDA</sub> 接到 3.3V,所以一般得到 ADC 输入电压范围是:0~3.3V。
7、最多 4 条注入转换序列,16 条常规转换序列。
2、ADC 功能描述
ADC 功能框图如下:
2.1、VREF+参考电压
2.2、ADC Clocks
ADC 模块的时钟如上图 2 的双时钟域结构,ADC 输入时钟可以在两个不同的时钟源之间选择。ADC
时钟独立于 AHB 总线时钟。
1、adc_ker_ck_input 是一个特定的时钟源与 AHB 时钟独立且异步。若要选择此时钟必须将 ADC_CCR
寄存器的 CKMODE[1:0] 位设置为 00。
2、adc_hclk 时钟经过 AHB 时钟分频得到,可配置分频因子 1/2/4。若选择此时钟,ADC_CCR 寄存器
的 CKMODE[1:0] 位不能为 00。
选择 adc_ker_ck_input 的优点是无论选择何种 AHB 时钟方案,都可以实现最大 ADC 时钟频率。ADC
时钟最终可按如下比例划分: 1/2/4/6/8/12/16/32/64/128/256。根据 ADC_CCR 寄存器中的 PRESC[3:0]
位配置分频。
选择 adc_hclk 时钟的优点是可绕过时钟域的重新同步。
2.3、输入通道
每路 ADC 总共有 20 个输入通道,STM32H5 的 ADC 支持单端和差分转换,由寄存器 ADC_DIFSEL
控制,该寄存器默认是 0(单端模式),配置为 1(则为差分模式)。因 STM32H5 支持差分输入,所以
有 ADC_INP[19:0] 和 ADC_INN[19:0] 两组通道。其中 INP 是差分正向输入,INN 是差分反向输入。
ADC_INP[0:5] 和 ADC_INN[0:5] 是快速模拟输入,ADC_INP[6:19] 和 ADC_INN[6:19] 是慢速模拟输入。
若使用单端输入,则只有 ADC_INP[19:0] 这二十个输入通道有效,ADC_INN[19:0] 内部自动接 VSSA。
ADC 连接的 4 路内部模拟输入,如下表所示:
VSENSE:内部温度传感器通道
VREFINT:内部参考电压通道
VBAT/4:外部 VBAT 电源通道
VDDCORE:监控内部 VDDCORE 电源
2.4、转换序列
ADC 可将转换分两组:常规转换组和注入转换组。对于常规转换组最多允许 16 个通道进行转换。注入转换最多
允许 4 个通道进行转换。注入转换可打断常规转换组的转换,获得优先转换的权力。如下示意图:
对于常规转换组的转换顺序由寄存器 ADCx_SQRy(y = 1~4) 中设置,以 ADC_SQR1 寄存器为例介绍如下图:
L[3:0]:设置常规转换组要转换的通道数。
SQR1[4:0]:设置第一个转换的通道(0~19)
SQR2[4:0]:设置第二个转换的通道(0~19)
SQR3[4:0]:设置第三个转换的通道(0~19)
SQR4[4:0]:设置第四个转换的通道(0~19)
按照 ADC_SQR1 寄存器一样设置 ADC_SQR2、ADC_SQR3、ADC_SQR4;
对于注入转换组的转换顺序由 JSQR 寄存器配置。如下图:
JL[1:0]:设置注入转换组要转换的通道数。
JSQ1[4:0]:设置第一个转换的通道 (0~19)
JSQ2[4:0]:设置第二个转换的通道 (0~19)
JSQ3[4:0]:设置第三个转换的通道 (0~19)
JSQ4[4:0]:设置第四个转换的通道 (0~19)
2.5、触发源
ADC 的触发转换有两种:软件触发或外部事件触发(硬件)
软件触发:常规通道由 ADCx_CR 寄存器的 ADSTART 位触发,注入通