STM32H750外设之ADC通道选择

STM32H750外设之ADC通道选择

码农世界 2024-05-28 前端 71 次浏览 0个评论

目录

概述

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 时(这可确保当前未进行任何转换),才允许通过软件对这些位执行写操作。

 

转载请注明来自码农世界,本文标题:《STM32H750外设之ADC通道选择》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,71人围观)参与讨论

还没有评论,来说两句吧...

Top