|
STM32G474xx HAL 用户手册
|
00f001 /** 00f002 ****************************************************************************** 00f003 * @file stm32g4xx_ hal_ adc. h 00f004 * @author MCD 应用团队 00f005 * @brief ADC HAL 模块头文件。 00f006 ****************************************************************************** 00f007 * @attention 00f008 * 00f009 * 版权所有 (c) 20f9 STMicroelectronics。 00010 * 保留所有权利。 00011 * 00012 * 本软件根据 LICENSE 文件中规定的条款获得许可 00013 * 在本软件组件的根目录中可以找到该 LICENSE 文件。 00014 * 如果本软件未附带 LICENSE 文件,则按"原样"提供。 00015 * 00016 ****************************************************************************** 00017 */ 00018 00019 /* 定义以防止递归包含 -------------------------------------*/ 00020 #ifndef STM32G4xx_ HAL_ ADC_ H 00021 #define STM32G4xx_ HAL_ ADC_ H 00022 00023 #ifdef __cplusplus 00024 extern "C" { 00025 #endif 00026 00027 /* 包含头文件 ------------------------------------------------------------------*/ 00028 #include "stm32g4xx_ hal_ def. h" 00029 00030 /* 包含底层驱动 */ 00031 #include "stm32g4xx_ ll_adc. h" 00032 00033 /** @addtogroup STM32G4xx_ HAL_ 驱动 00034 * @{ 00035 */ 00036 00037 /** @addtogroup ADC 00038 * @{ 00039 */ 00040 00041 /* 导出类型 ------------------------------------------------------------*/ 00042 /** @defgroup ADC_ 导出类型 ADC 导出类型 00043 * @{ 00044 */ 00045 00046 /** 00047 * @brief ADC 规则组过采样结构定义 00048 */ 00049 typedef struct 00050 { 00051 uint32_ t Ratio; /*!< 配置过采样比率。 00052 此参数可以是 @ref ADC_ HAL_ EC_ OVS_ RATIO 的值 */ 00054 uint32_ t RightBitShift; /*!< 配置过采样器的除法系数。 00055 此参数可以是 @ref ADC_ HAL_ EC_ OVS_ SHIFT 的值 */ 00057 uint32_ t TriggeredMode; /*!< 选择规则触发过采样模式。 00058 此参数可以是 @ref ADC_ HAL_ EC_ OVS_ DISCONT_ MODE 的值 */ 00060 uint32_ t OversamplingStopReset; /*!< 选择规则过采样模式。 00061 当注入序列中断时,过采样可以是临时停止或复位。 00062 如果规则组和注入组都启用了过采样,此 00063 参数将被丢弃并强制设置为 00064 "ADC_ REGOVERSAMPLING_ RESUMED_ MODE"(过采样缓冲区在 00065 注入序列期间被清零 00066 此参数可以是 @ref ADC_ HAL_ EC_ OVS_ SCOPE_ REG 的值 */ 00067 00068 } ADC_ OversamplingTypeDef; 00069 00070 /** 00071 * @brief ADC 实例和 ADC 规则组结构定义。 00072 * @note 此结构的参数在两个范围内共享: 00073 * - 整个 ADC 范围(影响 ADC 规则组和注入组):ClockPrescaler, Resolution, DataAlign, 00074 * GainCompensation, ScanConvMode, EOCSelection, LowPowerAutoWait. 00075 * - ADC 规则组范围:ContinuousConvMode, NbrOfConversion, DiscontinuousConvMode, NbrOfDiscConversion, 00076 * ExternalTrigConv, ExternalTrigConvEdge, DMAContinuousRequests, Overrun, OversamplingMode, Oversampling, 00077 * SamplingMode. 00078 * @note HAL_ ADC_ Init() 函数对这些参数的设置取决于 ADC 状态。 00079 * ADC 状态可以是: 00080 * - 对于所有参数:ADC 禁用 00081 * - 除了 'LowPowerAutoWait'、'DMAContinuousRequests' 和 'Oversampling' 之外的所有参数:ADC 启用 00082 * 规则组无正在进行的转换。 00083 * - 对于参数 'LowPowerAutoWait' 和 'DMAContinuousRequests':ADC 启用,规则组和注入组 00084 * 均无正在进行的转换。 00085 * 如果 ADC 不在适当的状态来修改某些参数,这些参数的设置将被绕过 00086 * 而不会报告错误(因为在预期更新另一个参数的情况下这可能是预期的行为 00087 * (满足 ADC 状态条件)实时进行)。 00088 */ 00089 00089 typedef struct 00090 { 00f091 uint32_ t ClockPrescaler; /*!< 选择 ADC 时钟源(源自 APB 时钟的同步时钟或源自 00092 系统时钟或 PLL 的异步时钟(请参阅参考手册了解 00093 可用时钟列表))和时钟预分频器。 00094 此参数可以是 @ref ADC_ HAL_ EC_ COMMON_ CLOCK_ SOURCE 的值。 00095 注意:ADC 时钟配置对所有 ADC 实例通用。 00096 注意:如果使用注入组的通道,ADC 频率应低于 00097 AHB 时钟频率 /4(12 位或 10 位分辨率), 00098 AHB 时钟频率 /3(8 位分辨率), 00f099 AHB 时钟频率 /2(6 位分辨率)。 00f100 注意:如果使用基于 HCLK/f1 的同步时钟模式,配置必须 00f101 仅在系统时钟具有 50% 占空比时启用(APB 00f102 内部预分频器必须被绕过,PCLK 时钟必须具有 00f103 50% 占空比)。请参阅参考手册了解详情。 00f104 注意:如果使用异步时钟,所选时钟必须 00f105 在 RCC 顶层预先启用。 00f106 注意:仅当所有 ADC 实例都被禁用时才能修改此参数。 */ 00f107 00f109 uint32_ t Resolution; /*!< 配置 ADC 分辨率。 00f110 此参数可以是 @ref ADC_ HAL_ EC_ RESOLUTION 的值 */ 00f112 uint32_ t DataAlign; /*!< 指定转换数据寄存器中 ADC 数据的对齐方式(右对齐或左对齐)。 00f113 有关不同分辨率的对齐格式,请参阅参考手册。 00f114 此参数可以是 @ref ADC_ HAL_ EC_ DATA_ ALIGN 的值 */ 00f116 uint32_ t GainCompensation; /*!< 指定要应用于 ADC 原始转换 00f117 数据的 ADC 增益补偿系数,基于以下公式: 00f118 DATA = DATA(raw) * (增益补偿系数) / 4096 00f119 "2.12" 位格式,无符号:2 位指数 / 12 位尾数 00f120 增益步长为 1/4096 = 0.000244 00f121 增益范围为 0.00000 到 3.999756 00f123 此参数值可以是 00f124 0 增益补偿将被禁用,系数设为 0 00f125 1 -> 0x3FFF 增益补偿将被启用,系数设为指定 00f126 值 00f127 注意:启用增益补偿时会应用于所有通道。 */ 00f128 uint32_ t ScanConvMode; /*!< 配置 ADC 规则组和注入组的顺序。 00f129 此参数可以与参数 'DiscontinuousConvMode' 关联以具有 00f130 主序列细分为连续部分。 00f132 如果禁用:转换以单次模式执行(转换一个通道,即 00f133 等级 f1 中定义的通道)。参数 'NbrOfConversion' 和 00f134 'InjectedNbrOfConversion' 将被丢弃(等效设为 1)。 00f136 如果启用:转换以序列模式执行(多个等级定义 00f137 由 'NbrOfConversion' 或 'InjectedNbrOfConversion' 以及每个 00f138 通道在顺序中的等级)。扫描方向向上:从等级 1 到 00f139 等级 'n'。 00f140 此参数可以是 @ref ADC_ Scan_ mode 的值 */ 000 00f140 uint32_ t EOCSelection; /*!< 指定哪个 EOC(转换结束)标志用于轮询和 00f142 中断的转换:单次转换结束或序列转换结束。 00f144 此参数可以是 @ref ADC_ EOCSelection 的值。 */ 000 00f144 FunctionalState LowPowerAutoWait; /*!< 选择动态低功耗自动延迟:新转换仅在 00f146 之前的转换(对于 ADC 规则组)或之前的序列(对于 ADC 注入 00f148 组)已被用户软件检索后才开始,使用函数 HAL_ ADC_ GetValue() 00f149 或 HAL_ ADCEx_ InjectedGetValue()。 00f150 此功能自动使 ADC 转换触发的频率适应 00f151 系统读取数据的速度。此外,这避免了 00f152 低频率应用的超限风险。 00f153 此参数可以设为 ENABLE 或 DISABLE。 00f154 注意:不建议与中断或 DMA 一起使用(HAL_ ADC_ Start_ IT(), 00f155 HAL_ ADC_ Start_ DMA()),因为这些模式必须立即清除 EOC 00f156 标志(由 CPU 释放 IRQ 挂起事件或由 DMA)。 00f157 自动等待会工作但时间很短,放弃其预期的 00f158 好处(CPU 或 DMA 传输高负载的特定情况除外可能 00f159 证明自动等待的使用是合理的)。 00f160 与轮询一起使用:f1. 使用 HAL_ ADC_ Start() 开始转换,f2. 之后, 00f161 当需要 ADC 转换数据时: 00f162 使用 HAL_ ADC_ PollForConversion() 确保转换完成并 00f163 HAL_ ADC_ GetValue() 检索转换结果并触发另一次 00f164 转换开始。 (如果使用 ADC 注入组,请使用 00f165 等效函数 HAL_ ADCEx_ Injected_ Start(), 00f166 HAL_ ADCEx_ InjectedGetValue(), ...)。 */ 000 00f166 FunctionalState ContinuousConvMode; /*!< 指定在第一次 ADC 转换 000 000 000
1.7.6.1