目录
概述
1 通道选择功能介绍
2 通道选择( SQRx、 JSQRx)
2.1 通道复用
2.1.1 通道介绍
2.1.2 通道框图
2.2 转换分组
2.3 内部专用通道
3 通道预选寄存器 (ADCx_PCSEL)
3.1 功能介绍
3.2 预选通道寄存器
概述
本位主要介绍STM32H750外设之ADC通道选择,包括如何通过配置寄存器来实现通道的自由配置。并介绍了和通道选择相关寄存器的控制位的含义。
1 通道选择功能介绍
STM32H7 每个 ADC 的复用通道多达20条,它们可以通过配置寄存器的方式,实现通道的自由选择。这些寄存器包括:SQRx、 JSQRx,通道预选寄存器 (ADCx_PCSEL)。
2 通道选择( SQRx、 JSQRx)
2.1 通道复用
2.1.1 通道介绍
STM32H7 每个 ADC 的复用通道多达20条,其分别有如下这些可供选择:
1) 快速模拟输入: 6 路来自模拟焊盘和 GPIO 焊盘的快速模拟输入 (ADCx_INP/INN[0..5])
2) 慢速模拟输入 : 14 路来自 GPIO 焊盘的慢速模拟输入 (ADCx_INP/INN[6..19])
3) 5 路内部模拟输入:
– 内部温度传感器 (VSENSE) 连接到 ADC3_INP/INN18
– 内部参考电压 (VREFINT) 连接到 ADC3_INP/INN19
– VBAT 监测通道 (VBAT/4) 连接到 ADC3_INP/INN17
– DAC 内部通道 1,连接到 ADC2_INP/INN16
– DAC 内部通道 2,连接到 ADC2_INP/INN17
2.1.2 通道框图
1)ADC1通道框图
2)ADC2通道框图
3)ADC3通道框图
2.2 转换分组
可以将转换分为两组:常规转换和注入转换。
每个组包含一个转换序列,该序列可按任意顺序在任意通道上完成。
一个实例:
可按以下顺序对序列进行转换,分组方式如下:
ADCx_INP/INN3、 ADCx_INP/INN8、ADCx_INP/INN2、 ADCx_INP/INN2、ADCx_INP/INN0、 ADCx_INP/INN2、 ADCx_INP/INN2、ADCx_INP/INN15。
1)常规转换组
最多由 16 个转换构成。必须在 ADCx_SQRy 寄存器中选择转换序列的常规通道及其顺序。常规转换组中的转换总数必须写入 ADCx_SQR1 寄存器中的 L[3:0] 位。
位 3:0 L[3:0]: 常规通道序列长度 (Regular channel sequence length)
通过软件写入这些位可定义常规通道转换序列中的转换总数。
0000: 1 次转换
0001: 2 次转换
...
1111: 16 次转换
2)注入转换组
最多由 4 个转换构成。必须在 ADCx_JSQR 寄存器中选择转换序列的注入通道及其顺序。注入转换组中的转换总数必须写入 ADCx_JSQR 寄存器中的 L[1:0] 位。
位 1:0 JL[1:0]: 注入通道序列长度 (Injected channel sequence length)
通过软件写入这些位可定义注入通道转换序列中的转换总数。
00: 1 次转换
01: 2 次转换
10: 3 次转换
11: 4 次转换
配置寄存器时注意:
不得在可能常规转换时对 ADCx_SQRy 寄存器进行修改。因此,必须先写入 ADSTP=1 停止ADC 常规转换。
2.3 内部专用通道
1)温度传感器 VSENSE
温度传感器 VSENSE连接到通道 ADC3 VINP[18]。
2)内部参考电压 VREFINT
内部参考电压 VREFINT连接到 ADC3 VINP[19]。
3)VBAT
VBAT通道连接到通道 ADC3 VINP[17]。
注意点:
要对其中一条内部模拟通道进行转换,必须先对 ADCx_CCR 寄存器中的 VREFEN、VSENSEEN或 VBATEN 位进行编程,以使能相应的模拟源。
3 通道预选寄存器 (ADCx_PCSEL)
3.1 功能介绍
对于每条通过 SQRx 或 JSQRx 选择的通道,必须先对相应的 ADCx_PCSEL 位进行配置。该 ADCx_PCSEL 位控制集成到 IO 中的传输门。 ADC 输入 MUX 会根据 SQRx 和 JSQRx以非常快的速度选择 ADC 输入,而集成到 IO 中的传输门的响应速度不会像 ADC 复用器那样快。为了避免传输门对 IO 的控制出现延迟,必须预选输入通道,这些通道将在 SQRx 和JSQRx 中选择。
输入通道是根据每路 ADC 输入的 VINP[i] 选择的。如果 ADC1 要将 ADC123_INP2(VINP[2])转换为差分模式,则还需要在 ADCx_PCSEL 中选择 ADC123_INP6(VINP[6])。一些 ADC 输入连接至 ADCx 的多个 VINP[i]。这些输入会与 ADCx_PCSEL 寄存器位进行或运算。
3.2 预选通道寄存器
ADC x 通道预选寄存器 (ADCx_PCSEL)( x=1 到 3)
ADC x channel preselection register
偏移地址: 0x1C
复位值: 0x0000 0000
位 19:0 PCSELx:通道 x (VINP[i]) 预选 (Channel x (VINP[i]) pre selection)
这些位由软件写入,用于预选 IO 实例中要转换的输入通道。
0:未预选通道 x (Vinp x) 进行转换,该通道的 ADC 转换结果显示的结果不正确。
1:预选输入通道 x (Vinp x) 进行转换
注意:
仅当 ADSTART=0 且 JADSTART=0 时(这可确保当前未进行任何转换),才允许通过软件对这些位执行写操作。