STM32H750外设之ADC开关控制功能介绍

本文详细介绍了STM32H750外设中ADC的开关控制功能,包括软件使能和禁止ADC的步骤,涉及的相关寄存器如ADCx_ISR和ADCx_CR的配置,以及使能/禁止ADC的流程图和写入控制位的限制条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

概述

1 ADC开关控制介绍

2 开关控制功能流程

2.1 软件使能ADC 的流程

2.2 软件禁止 ADC 的流程

3  相关寄存器

3.1 ADCx_ISR

3.2 ADCx_CR

4 使能/禁止ADC流程图

​5 写入 ADC 控制位时的限制


概述

本文介绍STM32H750外设之ADC开关控制功能,该功能是应用STM32H750外设之ADC功能的基础,其他寄存器的配置参数行为和开关使能息息相关。

1 ADC开关控制介绍

要正确的使用STM32H750外设之ADC,必须了解其两个重要的寄存器的参数配置,ADC x 中断和状态寄存器 (ADCx_ISR)( x=1 到 3)和ADC x 控制寄存器 (ADCx_CR)( x=1 到 3)。其用于使能或者停止ADC转换数据功能,而其他寄存器配置参数也和这两个寄存器的配置位相关。

2 开关控制功能流程

2.1 软件使能ADC 的流程

step -1: 向 ADCx_ISR 寄存器中的 ADRDY 位写入“1”,将其清零。
step -2: 将 ADEN 置 1。
step -3: 等待,直至 ADRDY=1( ADRDY 会在 ADC 启动时间后置 1)。这可以使用关联中断实现(将 ADRDYIE 置 1)。
step -4: 向 ADCx_ISR 寄存器中的 ADRDY 位写入“1”,将其清零(可选)。

2.2 软件禁止 ADC 的流程

step -1:   检查 ADSTART 和 JADSTART 是否均为 0,以确保当前未执行任何转换。如有需要,可将 ADSTP 置 1,并将 JADSTP 置 1,随后等待至 ADSTP=0 且 JADSTP=0,以停止任何正在进行的常规转换和注入转换。
step -2:   将 ADDIS 置 1。
step -3:  如果应用要求,可等待 ADEN=0,直至模拟 ADC 已有效禁止( ADEN=0 后, ADDIS 将
自动复位)。

3  相关寄存器

3.1 ADCx_ISR

ADC x 中断和状态寄存器 (ADCx_ISR)( x=1 到 3)
 位 0 ADRDY: ADC READY
ADC 使能后(位 ADEN=1)以及 ADC 达到准备好接收转换请求的状态时,会通过硬件将该位置1
通过软件写入 1 可将该位清零。
0: ADC 未准备好开始转换(或标志事件已通过软件确认并清零)
1: ADC 已准备好开始转换

3.2 ADCx_CR

ADC x 控制寄存器 (ADCx_CR)( x=1 到 3)

位 0 ADEN: ADC 使能控制 (ADC enable control)
该位由软件置 1,用于使能 ADC。 ADRDY 标志置 1 后, ADC 将立即准备好运行。如果 ADC 已禁止,则执行 ADDIS 命令后,将通过硬件对该位清零
0:禁止 ADC(OFF 状态)。
1:写入 1 来使能 ADC。

位 1 ADDIS: ADC 禁止命令 (ADC disable command)
该位由软件置 1,用于禁止 ADC( ADDIS 命令)并使其进入掉电状态( OFF 状态)。ADC 已有效禁止后,会立即通过硬件将该位清零(此时也会通过硬件将 ADEN 清零)。
0:当前未执行 ADDIS 命令。
1:写入 1 可禁止 ADC。读取值为 1 表示正在执行 ADDIS 命令。

位 2 ADSTART: ADC 开始常规转换 (ADC start of regular conversion)
此位由软件置 1,用于开始 ADC 的常规通道转换。根据配置位 EXTEN 的值,可以立即开始转换
(软件触发配置),也可以在发生常规硬件触发事件后开始转换(硬件触发配置)。

该位通过硬件清零:
1)在单次转换模式下(CONT=0、 DISCEN=0),如果选择了软件触发 (EXTEN=0x0):出现常规转换序列结束 (EOS) 标志时清零。
2)在不连续转换模式下(CONT=0、 DISCEN=1),如果选择了软件触发 (EXTEN=0x0):出现转换结束(EOC) 标志时清零。
3)在所有其他情况下:执行完 ADSTP 命令后,由硬件将 ADSTP 位清零的同时清零。

0:当前未进行 ADC 常规转换。
1:写入 1 可开始常规转换。读取值为 1 表示 ADC 正在运行,最终会转换常规通道。

位 3 JADSTART: ADC 开始注入转换 (ADC start of injected conversion)
此位由软件置 1,用于开始 ADC 的注入通道转换。根据配置位 JEXTEN 的值,可以立即开始转换(软件触发配置),也可以在发生注入硬件触发事件后开始转换(硬件触发配置)。

该位通过硬件清零:
1)在单次转换模式下,如果选择了软件触发 (JEXTSEL=0x0):出现注入转换序列结束 (JEOS) 标志时清零。
2) 在所有情况下:执行完 JADSTP 命令后,由硬件将 JADSTP 位清零的同时清零。

0:当前未进行 ADC 注入转换。
1:写入 1 可开始注入转换。读取值为 1 表示 ADC 正在运行,最终会转换注入通道

位 4 ADSTP: ADC 停止常规转换命令 (ADC stop of regular conversion command)
该位由软件置 1,用于停止和丢弃正在进行的常规转换( ADSTP 命令)。当转换已有效丢弃、并且可重新配置 ADC 常规序列和触发时,会通过硬件将该位清零。随后, ADC会准备好接收新的开始常规转换命令( ADSTART 命令)。

0:当前未执行 ADC 停止常规转换命令
1:写入 1 可停止正在进行的常规转换。读取值为 1 表示正在执行 ADSTP 命令。

位 5 JADSTP: ADC 停止注入转换命令 (ADC stop of injected conversion command)
位由软件置 1,用于停止和丢弃正在进行的注入转换( JADSTP 命令)。当转换已有效丢弃、并且可重新配置 ADC 注入序列和触发时,会通过硬件将该位清零。随后, ADC会准备好接收新的开始注入转换命令( JADSTART 命令)。

0:当前未执行 ADC 停止注入转换命令
1:写入 1 可停止正在进行的注入转换。读取值为 1 表示正在执行 ADSTP 命令。
 

4 使能/禁止ADC流程图

5 写入 ADC 控制位时的限制 

仅当 ADC 已禁止(ADEN 必须等于 0)时,软件才可通过写入 RCC 控制位的方式配置和使能ADC 时钟(请参见 RCC 部分)、 ADCx_DIFSEL 寄存器中的控制位 DIFSEL、 ADCx_CCR 寄
存器、以及 ADCx_CR 寄存器中的控制位 ADCAL 和 ADEN。

只有在 ADC 已使能、 并且没有待处理的禁止 ADC 的请求( ADEN 必须等于 1 且 ADDIS 必
须等于 0
)时,才允许软件向 ADCx_CR 寄存器的控制位 ADSTART、 JADSTART 和 ADDIS
执行写操作。

对于 ADCx_CFGR、 ADCx_SMPRy、 ADCx_TRy、 ADCx_SQRy、 ADCx_JDRy、 ADCx_OFRy和 ADCx_IER 寄存器所有其他控制位:

1)对于与常规转换配置相关的控制位,仅当 ADC 已使能 (ADEN=1) 且未进行常规转换
( ADSTART 必须等于 0)时,才允许软件对这些位执行写操作。

2)对于与注入转换配置相关的控制位,仅当 ADC 已使能 (ADEN=1) 且未进行注入转换
( JADSTART 必须等于 0)时,才允许软件对这些位执行写操作。

仅当 ADC 已使能(最终会进行转换)且没有待处理的禁止 ADC 的请求( ADSTART 或
JADSTART 必须等于 1 且 ADDIS 必须等于 0)时,软件才可以对 ADCx_CR 寄存器中的
ADSTP 或 JADSTP 控制位执行写操作。

如果 ADC 已使能 (ADEN=1),软件可随时对 ADCx_JSQR 寄存器执行写操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值