STM32G474xx HAL 用户手册
数据字段
ADC_InitTypeDef 结构体参考

ADC实例和ADC常规组的结构定义。 更多...

#include <stm32g4xx_hal_adc.h>

数据字段

uint32_t ClockPrescaler
uint32_t Resolution
uint32_t DataAlign
uint32_t GainCompensation
uint32_t ScanConvMode
uint32_t EOCSelection
FunctionalState LowPowerAutoWait
FunctionalState ContinuousConvMode
uint32_t NbrOfConversion
FunctionalState DiscontinuousConvMode
uint32_t NbrOfDiscConversion
uint32_t ExternalTrigConv
uint32_t ExternalTrigConvEdge
uint32_t SamplingMode
FunctionalState DMAContinuousRequests
uint32_t Overrun
FunctionalState OversamplingMode
ADC_OversamplingTypeDef Oversampling

详细描述

ADC实例和ADC常规组的结构定义。

注意:
此结构体的参数在2个范围内共享:
  • 整个ADC范围(影响ADC常规组和注入组):ClockPrescaler, Resolution, DataAlign, GainCompensation, ScanConvMode, EOCSelection, LowPowerAutoWait。
  • ADC常规组范围:ContinuousConvMode, NbrOfConversion, DiscontinuousConvMode, NbrOfDiscConversion, ExternalTrigConv, ExternalTrigConvEdge, DMAContinuousRequests, Overrun, OversamplingMode, Oversampling, SamplingMode。
通过函数HAL_ADC_Init()对这些参数的设置取决于ADC状态。ADC状态可以是:
  • 对于所有参数:ADC禁用
  • 对于除'LowPowerAutoWait'、'DMAContinuousRequests'和'Oversampling'之外的所有参数:ADC启用,但常规组上没有正在进行的转换。
  • 对于参数'LowPowerAutoWait'和'DMAContinuousRequests':ADC启用,但常规组和注入组上都没有正在进行的转换。如果ADC不处于修改某些参数的适当状态,则这些参数的设置将被绕过且不会报告错误(因为对于打算即时更新另一个参数(满足ADC状态条件)的预期行为来说,这可能是正常的)。

定义在文件stm32g4xx_hal_adc.h的第90行。


字段文档

选择ADC时钟源(从APB时钟派生的同步时钟,或从系统时钟或PLL派生的异步时钟(有关可用时钟列表,请参阅参考手册))和时钟预分频器。此参数可以是ADC公共 - 时钟源中的一个值。注意:ADC时钟配置对所有ADC实例是公共的。注意:如果使用注入组上的通道,ADC频率应低于AHB时钟频率/4(分辨率为12或10位时),AHB时钟频率/3(分辨率为8位时),AHB时钟频率/2(分辨率为6位时)。注意:在基于HCLK/1的同步时钟模式下,仅当系统时钟具有50%占空比的时钟周期时,才应启用该配置(必须旁路在RCC内部配置的APB预分频器,且PCLK时钟必须具有50%占空比)。详情请参阅参考手册。注意:如果使用异步时钟,则所选时钟必须在RCC顶层预先启用。注意:仅当所有ADC实例都禁用时,才能修改此参数。

定义在文件stm32g4xx_hal_adc.h的第92行。

参考自 HAL_ADC_Init()

指定对于ADC常规组,在第一次ADC转换启动触发(软件启动或外部触发)发生后,转换是单次模式(一次转换)还是连续模式执行。此参数可设置为ENABLE或DISABLE。

定义在文件stm32g4xx_hal_adc.h的第166行。

参考自 ADC_ConversionStop(), HAL_ADC_Init(), HAL_ADC_PollForConversion(), 和 HAL_ADCEx_MultiModeStart_DMA()

指定转换数据寄存器中的ADC数据对齐方式(右对齐或左对齐)。有关不同分辨率下的对齐格式,请参阅参考手册。此参数可以是ADC转换数据对齐中的一个值。

定义在文件stm32g4xx_hal_adc.h的第112行。

参考自 HAL_ADC_Init()

指定ADC常规组的转换序列是以完整序列还是非连续序列(主序列细分为连续部分)的方式执行。仅当使能了序列器(参数'ScanConvMode')时才使用非连续模式。如果序列器被禁用,则忽略此参数。仅当禁用连续模式时,才能使能非连续模式。如果启用了连续模式,则忽略此参数设置。此参数可设置为ENABLE或DISABLE。注意:在此STM32系列上,ADC常规组的非连续级数增量固定为逐级递增。

定义在文件stm32g4xx_hal_adc.h的第189行。

参考自 HAL_ADC_Init(), 和 HAL_ADCEx_InjectedConfigChannel()

指定DMA请求是以单次模式(达到转换次数时DMA传输停止)还是连续模式(DMA传输无限制,无论转换次数如何)执行。此参数可设置为ENABLE或DISABLE。注意:在连续模式下,DMA必须配置为循环模式。否则,当达到DMA缓冲区最大指针时,将触发溢出。

定义在文件stm32g4xx_hal_adc.h的第219行。

参考自 HAL_ADC_Init(), HAL_ADCEx_MultiModeConfigChannel(), 和 HAL_ADCEx_MultiModeStart_DMA()

指定通过轮询和中断进行转换时使用的EOC(转换结束)标志:单次转换结束标志或序列转换结束标志。此参数可以是ADC序列器单次转换结束或序列转换结束中的一个值。

定义在文件stm32g4xx_hal_adc.h的第140行。

参考自 HAL_ADC_Init(), HAL_ADC_IRQHandler(), HAL_ADC_PollForConversion(), HAL_ADC_Start_IT(), HAL_ADCEx_InjectedPollForConversion(), 和 HAL_ADCEx_InjectedStart_IT()

选择用于触发ADC常规组转换开始的外部事件源。如果设置为ADC_SOFTWARE_START,则禁用外部触发并使用软件触发代替。此参数可以是ADC常规组触发源中的一个值。注意:外部触发源对所有ADC实例是公共的。

定义在文件stm32g4xx_hal_adc.h的第205行。

参考自 HAL_ADC_Init()

选择用于触发ADC常规组转换开始的外部事件边沿。如果触发源设置为ADC_SOFTWARE_START,则忽略此参数。此参数可以是ADC常规组触发边沿(选择外部触发时)中的一个值。

定义在文件stm32g4xx_hal_adc.h的第212行。

参考自 HAL_ADC_Init(), 和 HAL_ADCEx_MultiModeStart_DMA()

指定要应用于ADC原始转换数据的ADC增益补偿系数,基于以下公式:DATA = DATA(原始) * (增益补偿系数) / 4096 "2.12" 位格式,无符号:2位指数 / 12位尾数 增益步长为 1/4096 = 0.000244 增益范围为 0.0000 到 3.999756 此参数值可以为 0 增益补偿将被禁用,系数设置为 0 1 -> 0x3FFF 增益补偿将被启用,系数设置为指定值 注意:启用增益补偿后,将应用于所有通道。

定义在文件stm32g4xx_hal_adc.h的第116行。

参考自 HAL_ADC_Init()

选择动态低功耗自动延迟:仅当用户软件使用函数HAL_ADC_GetValue()HAL_ADCEx_InjectedGetValue()检索到前一次转换(对于ADC常规组)或前一次序列(对于ADC注入组)的结果时,才启动新的转换。此功能自动将ADC转换触发的频率调整到读取数据的系统速度。此外,这可以避免低频应用中的溢出风险。此参数可设置为ENABLE或DISABLE。注意:不建议与中断或DMA一起使用(HAL_ADC_Start_IT()HAL_ADC_Start_DMA()),因为这些模式必须立即清除EOC标志(由CPU释放IRQ挂起事件或由DMA)。自动等待会工作,但时间非常短,无法发挥其预期优势(除非CPU或DMA传输负载非常高,可能需要使用自动等待)。确实使用轮询:1. 使用HAL_ADC_Start()开始转换,2. 稍后,当需要ADC转换数据时:使用HAL_ADC_PollForConversion()确保转换完成,并使用