目录
概述
1 外部触发转换和触发极性
1.1 外部触发条件
1.2 忽略硬件触发条件
1.3 触发框图
1.4 常规通道的外部触发
1.5 注入通道的外部触发
2 注入通道管理
2.1 触发注入模式
2.2 自动注入模式
2.3 注入转换延迟
概述
本文主要介绍STM32H750外设ADC之外部触发和注入管理的相关内容。ADC模块可通过外部触发转换,它的触发极性( EXTSEL、 EXTEN、 JEXTSEL、 JEXTEN)可以通过相关的寄存器来设置参数。
1 外部触发转换和触发极性
1.1 外部触发条件
可通过软件或外部事件(例如定时器捕获、输入引脚)触发转换或转换序列。触发外部事件能够以所选极性转换条件:
1)EXTEN[1:0] 不等于“0b00
位 11:10 EXTEN[1:0]:常规通道的外部触发使能和极性选择 (External trigger enable and polarity selection forregular channels)
通过软件将这些位置 1 和清零可选择外部触发极性和使能常规组的触发。
00:禁止硬件触发检测(可通过软件启动转换)
01:在上升沿执行硬件触发检测
10:在下降沿执行硬件触发检测
11:在上升沿和下降沿都执行硬件触发检测注:
仅当 ADSTART=0 时(这可确保当前未进行任何常规转换),才允许通过软件对这些位执行写操作
2)JEXTEN[1:0] 不等于“0b00
位 8:7 JEXTEN[1:0]:注入通道的外部触发使能和极性选择 (External Trigger Enable and Polarity Selection for injected channels)
通过软件将这些位置 1 和清零可选择外部触发极性和使能注入组的触发。
00:如果 JQDIS=0(队列使能),同时禁止硬件和软件触发检测
00:如果 JQDIS=1(队列禁止),禁止硬件触发检测(可通过软件启动转换)
01:在上升沿执行硬件触发检测
10:在下降沿执行硬件触发检测
11:在上升沿和下降沿都执行硬件触发检测
注:ADC 使能后 (ADEN=1),允许随时通过软件写入这些位。如果 JQM=1 且上下文队列为空,则会在内部禁止注入序列的软件和硬件触发
3) EXTEN[1:0] 和 JEXTEN[1:0] 值与触发极性之间的对应关系。
1.2 忽略硬件触发条件
在转换进行时发生的硬件触发会被忽略。
1) 如果位 ADSTART=0,则会忽略发生的任何常规硬件触发。
位 2 ADSTART: ADC 开始常规转换 (ADC start of regular conversion)
此位由软件置 1,用于开始 ADC 的常规通道转换。根据配置位 EXTEN 的值,可以立即开始转换(软件触发配置),也可以在发生常规硬件触发事件后开始转换(硬件触发配置)。
该位通过硬件清零:
– 在单次转换模式下(CONT=0、 DISCEN=0),如果选择了软件触发 (EXTEN=0x0):出现常规转换序列结束 (EOS) 标志时清零。
– 在不连续转换模式下(CONT=0、 DISCEN=1),如果选择了软件触发 (EXTEN=0x0):出现转换结束(EOC) 标志时清零。
– 在所有其他情况下:执行完 ADSTP 命令后,由硬件将 ADSTP 位清零的同时清零。
0:当前未进行 ADC 常规转换。
1:写入 1 可开始常规转换。读取值为 1 表示 ADC 正在运行,最终会转换常规通道。注:
仅当 ADEN=1 且 ADDIS=0 时(ADC 已使能,并且没有任何待处理的禁止 ADC 的请求),才允许通过软件将 ADSTART 置 1。在自动注入模式下 (JAUTO=1),通过将ADSTART 位置 1 开始常规转换和自动注入转换( JADSTART 必须保持清零)
2)如果位 JADSTART=0,则会忽略发生的任何注入硬件触发。
位 3 JADSTART: ADC 开始注入转换 (ADC start of injected conversion)
此位由软件置 1,用于开始 ADC 的注入通道转换。根据配置位 JEXTEN 的值,可以立即开始转换(软件触发配置),也可以在发生注入硬件触发事件后开始转换(硬件触发配置)。该位通过硬件清零:– 在单次转换模式下,如果选择了软件触发 (JEXTSEL=0x0):出现注入转换序列结束(JEOS) 标志时清零。
– 在所有情况下:执行完 JADSTP 命令后,由硬件将 JADSTP 位清零的同时清零。
0:当前未进行 ADC 注入转换。
1:写入 1 可开始注入转换。读取值为 1 表示 ADC 正在运行,最终会转换注入通道。
注:仅当 ADEN=1 且 ADDIS=0 时(ADC 已使能,并且没有任何待处理的禁止 ADC 的请求),才允许通过软件将 JADSTART 置 1。在自动注入模式下 (JAUTO=1),通过将 ADSTART 位置 1 开始常规转换和自动注入转换( JADSTART 必须保持清零)
1.3 触发框图
触发由主 ADC 和从 ADC 共享
1.4 常规通道的外部触发
ADC x 配置寄存器 (ADCx_CFGR)( x=1 到 3)
ADC x configuration register
偏移地址: 0x0C
复位值: 0x8000 0000位 9:5 EXTSEL[4:0]:常规组的外部触发选择 (External trigger selection for regular group)
这些位可选择用于触发常规组转换的外部事件。
00000:事件 0
00001:事件 1
00010:事件 2
00011:事件 3
00100:事件 4
00101:事件 5
00110:事件 6
00111:事件 7
...
11111:事件 31
注:仅当 ADSTART=0 时(这可确保当前未进行任何常规转换),才允许通过软件对这些位执行写操作。
ADC1、 ADC2 和 ADC3 - 常规通道的外部触发
1.5 注入通道的外部触发
ADC1、 ADC2 和 ADC3 - 注入通道的外部触发
2 注入通道管理
2.1 触发注入模式
要使用触发注入,必须将 ADCx_CFGR 寄存器中的 JAUTO 位清零。
位 25 JAUTO: 注入组自动转换 (Automatic injected group conversion)
通过软件将该位置 1 和清零可在常规组转换后分别使能/禁止注入组自动转换。
0:禁止注入组自动转换
1:使能注入组自动转换
注:仅当 ADSTART=0 且 JADSTART=0 时(这可确保当前未进行常规转换、也未进行注入转换),才允许通过软件对此位执行写操作。
如果使能了双重模式( ADCx_CCR 寄存器的 DAMDF 位不等于零),则从 ADC 的 JAUTO 位不再可写,其内容与主 ADC 的 JAUTO 位相等。
1. 通过外部触发或将 ADCx_CR 寄存器中的 ADSTART 位置 1 来启动常规通道组转换。
2. 如果在常规通道组转换期间出现外部注入触发或者 ADCx_CR 寄存器中的 JADSTART位置 1,则当前的转换会复位,并会启动注入通道序列切换(所有注入通道都会转换一次)。
3. 然后,常规通道组的常规转换会从上次中断的常规转换处恢复。
4. 如果在注入转换期间出现常规事件,注入转换不会中断,但在注入序列结束时会执行常规序列。
注意:
使用触发注入时,必须确保触发事件之间的间隔长于注入序列。例如,如果序列长度为 20 个
ADC 时钟周期(即,采样时间为 1.5 个时钟周期的两次转换),则触发事件的最小间隔不能小于 21 个 ADC 时钟周期。
2.2 自动注入模式
如果将 ADCx_CFGR 寄存器中的 JAUTO 位置 1,则注入组中的通道会在常规组通道之后自动转换。这可用于转换最多由 20 个转换构成的序列,这些转换在 ADCx_SQRy 和 ADCx_JSQR寄存器中编程。
在该模式下,必须将 ADCx_CR 寄存器中的 ADSTART 位置 1 以开始常规转换,然后再进行注入转换( JADSTART 必须保持清零)。将 ADSTP 位置 1 会中止常规转换和注入转换(不得使用 JADSTP 位)。
在此模式下,必须禁止注入通道上的外部触发。
如果 CONT 位和 JAUTO 位均已置 1,则在转换常规通道之后会继续转换注入通道。
位 13 CONT:常规转换的单次/连续转换模式 (Single / continuous conversion mode for regular conversions)
此位由软件置 1 和清零。该位置 1 时,常规转换将持续进行,直到该位清零。
0:单次转换模式
1:连续转换模式
注意点:不能同时使能不连续模式和连续模式:禁止同时将 DISCEN 和 CONT 位置 1。仅当 ADSTART=0 时(这可确保当前未进行任何常规转换),才允许通过软件对此位执行写操作。如果使能了双重模式( ADCx_CCR 寄存器的 DAMDF 位不等于零),则从 ADC 的 CONT 位不再可写,其内容与主 ADC 的 CONT 位相等。
注意点:
不能同时使用自动注入和不连续采样模式。如果在 JAUTO 模式下使用 DMA 导出常规定序器的数据,需要将其设定为循环模式(将DMA_CCRx 寄存器中的 CIRC 位置 1)。如果 CIRC 位复位(单发模式), JAUTO 序列将在出现 DMA 传输完成事件时停止。
2.3 注入转换延迟