|
STM32G474xx HAL用户手册
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32g4xx_hal_adc_ex. h 00004 * @author MCD Application Team 00005 * @brief ADC HAL扩展模块的头文件。 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * Copyright (c) 2019 STMicroelectronics. 00010 * All rights reserved. 00011 * 00012 * 本软件根据LICENSE文件中找到的条款获得许可 00013 * 在本软件组件的根目录中。 00014 * 如果本软件没有随附LICENSE文件,则按"原样"提供。 00015 * 00016 ****************************************************************************** 00017 */ 00018 00019 /* Define to prevent recursive inclusion -------------------------------------*/ 00020 #ifndef STM32G4xx_HAL_ADC_EX_H 00021 #define STM32G4xx_HAL_ADC_EX_H 00022 00023 #ifdef __cplusplus 00024 extern "C" { 00025 #endif 00026 00027 /* Includes ------------------------------------------------------------------*/ 00028 #include "stm32g4xx_hal_def.h" 00029 00030 /** @addtogroup STM32G4xx_HAL_Driver 00031 * @{ 00032 */ 00033 00034 /** @addtogroup ADCEx 00035 * @{ 00036 */ 00037 00038 /* Exported types ------------------------------------------------------------*/ 00039 /** @defgroup ADCEx_Exported_Types ADC扩展导出的类型 00040 * @{ 00041 */ 00042 00043 /** 00044 * @brief ADC注入转换过采样结构定义 00045 */ 00046 typedef struct 00047 { 00048 uint32_t Ratio; /*!< 配置过采样比率。 00049 该参数可以是@ref ADC_HAL_EC_OVS_RATIO的值 */ 00050 00051 uint32_t RightBitShift; /*!< 配置过采样器的分频系数。 00052 该参数可以是@ref ADC_HAL_EC_OVS_SHIFT的值 */ 00053 } ADC_InjOversamplingTypeDef; 00054 00055 /** 00056 * @brief ADC注入组和ADC通道结构定义(属于ADC注入组的ADC通道) 00057 * @note 该结构参数在两个作用域内共享: 00058 * - 通道作用域:InjectedChannel, InjectedRank, InjectedSamplingTime , InjectedSingleDiff, 00059 * InjectedOffsetNumber, InjectedOffset, InjectedOffsetSign, InjectedOffsetSaturation 00060 * - ADC注入组作用域(影响注入组的所有通道):InjectedNbrOfConversion, 00061 * InjectedDiscontinuousConvMode, 00062 * AutoInjectedConv, QueueInjectedContext, ExternalTrigInjecConv, ExternalTrigInjecConvEdge, 00063 * InjecOversamplingMode, InjecOversampling. 00064 * @note 通过函数HAL_ADCEx_InjectedConfigChannel()设置这些参数的条件取决于ADC状态。 00065 * ADC状态可以是: 00066 * - 对于所有参数:ADC禁用(这是修改参数 00067 * 'InjectedSingleDiff'的唯一可能的ADC状态) 00068 * - 对于参数'InjectedDiscontinuousConvMode'、'QueueInjectedContext'、'InjecOversampling':ADC已启用 00069 * 但注入组没有正在进行转换。 00070 * - 对于参数'InjectedSamplingTime'、'InjectedOffset'、'InjectedOffsetNumber'、'InjectedOffsetSign'、 00071 * 'InjectedOffsetSaturation'、'AutoInjectedConv':ADC已启用,但常规组和 00072 * 注入组没有正在进行转换。 00073 * - 对于参数'InjectedChannel'、'InjectedRank'、'InjectedNbrOfConversion'、'ExternalTrigInjecConv'、 00074 * 'ExternalTrigInjecConvEdge':ADC已启用并且常规组和 00075 * 注入组正在进行转换。 00076 * 如果ADC不在适当的状态来修改某些参数,则会绕过这些参数设置 00077 * 而不报告错误(因为在飞行中更新另一个 00078 * 满足ADC状态条件的参数的情况下,这可能是预期行为)。 00079 */ 00080 typedef struct 00081 { 00082 uint32_t InjectedChannel; /*!< 指定要配置到ADC注入组的通道。 00083 该参数可以是@ref ADC_HAL_EC_Channel的值 00084 注意:根据器件和ADC实例,某些通道可能不可用 00085 在器件封装引脚上。请参阅器件数据手册以了解 00086 通道可用性。 */ 00087 00088 uint32_t InjectedRank; /*!< 指定ADC注入组排序器中的排名。 00089 该参数必须是@ref ADC_INJ_SEQ_RANKS的值。 00090 注意:要禁用通道或更改转换排序器的顺序, 00091 包含先前通道设置的排名可以被 00092 新通道设置覆盖(或调整后的转换数 00093 参数) */ 00094 00095 uint32_t InjectedSamplingTime; /*!< 要为选定通道设置的采样时间值。 00096 单位:ADC时钟周期。 00097 转换时间是采样时间和处理时间之和 00098 (12位ADC分辨率时为12.5个ADC时钟周期,10位时为10.5个周期, 00099 8位时为8.5个周期,6位时为6.5个周期)。 00100 该参数可以是@ref ADC_HAL_EC_CHANNEL_SAMPLINGTIME的值。 00101 注意:该参数适用于可同时用于 00102 常规组和/或注入组的通道。它会覆盖上一次的设置。 00103 注意:在使用内部测量通道(VrefInt等)的情况下, 00104 必须遵守采样时间约束(采样时间可以根据ADC时钟频率和采样时间 00105 设置进行调整)。请参阅器件数据手册以了解时序值。 */ 00106 00107 uint32_t InjectedSingleDiff; /*!< 单端或差分输入的选择。 00108 差分模式:在选定通道'i'(正输入)和通道'i+1'(负输入)之间进行差分测量。 00109 只有通道'i'需要配置,通道'i+1'会自动配置。 00110 该参数必须是 00111 @ref ADC_HAL_EC_CHANNEL_SINGLE_DIFF_ENDING的值。 00112 注意:该参数适用于可同时用于 00113 常规组和/或注入组的通道。它会覆盖上一次的设置。 00114 注意:请参阅参考手册以确保选定通道在 00115 差分模式下可用。 00116 注意:在差分模式下配置通道'i'时,通道 00117 'i+1'不能单独使用。 00118 注意:必须在ADC禁用时修改此参数(ADC 00119 开始转换前或ADC停止转换后)。 00120 如果ADC已启用,则会绕过此参数设置而不报错 00121 (因为在飞行中更新另一个参数的情况下,这可能是预期行为) */ 00122 00123 uint32_t InjectedOffsetNumber; /*!< 选择偏置编号。 00124 该参数可以是@ref ADC_HAL_EC_OFFSET_NB的值。 00125 注意:每个通道只能设置一个偏置。此参数 00126 会覆盖上一次的设置。 */ 00127 00128 uint32_t InjectedOffset; /*!< 定义要应用到原始转换数据的偏置。 00129 偏置值必须是正数。 00130 根据选定的ADC分辨率(12、10、8或6位),此 00131 参数必须是一个介于Min_Data = 0x000和Max_Data = 0xFFF、 00132 0x3FF、0xFF或0x3F之间的数,分别。 00133 注意:必须在常规组和注入组都没有进行转换时修改此参数 00134 (ADC禁用,或ADC已启用 00135 但没有可能启动 00136 转换的连续模式或外部触发器)。 */ 00137 00138 uint32_t InjectedOffsetSign; /*!< 定义偏置应该从原始转换数据中减去(负号)或加上 00139 (正号)。 00140 该参数可以是@ref ADCEx_OffsetSign的值。 00141 注意:必须在常规组和注入组都没有进行转换时修改此参数 00142 (ADC禁用,或ADC 00143 已启用但没有可能 00144 启动转换的连续模式或外部触发器)。 */ 00145 FunctionalState InjectedOffsetSaturation; /*!< 定义偏置在欠流或溢出时是否应该饱和。 00146 该参数值可以是ENABLE或DISABLE。 00147 注意:必须在常规组和注入组都没有进行转换时修改此参数 00148 (ADC禁用,或ADC已启用 00149 但没有可能启动 00150 转换的连续模式或外部触发器)。 */ 00151 00152 uint32_t InjectedNbrOfConversion; /*!< 指定在ADC注入组排序器内将被转换的排名数。 00153 要使用注入组排序器并转换多个排名,参数 00154 'ScanConvMode'必须启用。 00155 该参数必须在Min_Data = 1和Max_Data = 4之间。 00156 注意:此设置影响整个注入组。因此, 00157 调用HAL_ADCEx_InjectedConfigChannel()配置 00158 注入组上的通道可能会影响之前设置的 00159 其他通道的配置。 */ 00160 00161 FunctionalState InjectedDiscontinuousConvMode; /*!< 指定ADC注入组的转换序列是否在完整序列/非连续序列 00162 (主序列细分为连续部分)中执行。 00163 非连续模式仅在排序器启用时使用(参数 00164 'ScanConvMode')。如果排序器禁用,则忽略此参数。 00165 非连续模式只能在校连续模式禁用时启用。 00166 该参数可以设置为ENABLE或DISABLE。 00167 注意:必须在ADC禁用时修改此参数(ADC 00168 开始转换前或ADC停止转换后)。 00169 注意:对于注入组,非连续模式逐通道转换序列 00170 (非连续长度固定为1个排名)。 00171 注意:此设置影响整个注入组。因此, 00172 调用HAL_ADCEx_InjectedConfigChannel()来 00173 配置注入组上的通道可能会影响 00174 之前设置的其他通道的 00175 配置。 */ 00176 00177 FunctionalState AutoInjectedConv; /*!< 启用或禁用选定ADC注入组在常规组 00178 之后自动转换 00179 该参数可以设置为ENABLE或DISABLE。 00180 注意:要使用自动注入转换,非连续模式必须 00181 禁用('DiscontinuousConvMode'和 00182 'InjectedDiscontinuousConvMode'设置为DISABLE) 00183 注意:要使用自动注入转换,注入组外部 00184 触发器必须禁用('ExternalTrigInjecConv'设置为 00185 ADC_INJECTED_SOFTWARE_START) 00186 注意:如果DMA与常规组一起使用:如果DMA配置为 00187 正常模式(单次触发),则在DMA传输 00188 完成后JAUTO将停止。 00189 要保持JAUTO始终启用,DMA必须配置为 00190 循环模式。 00191 注意:此设置影响整个注入组。因此, 00192 调用HAL_ADCEx_InjectedConfigChannel()配置通道 00193 可能会影响之前设置的 00194 其他通道的配置。 */ 00195 00196 FunctionalState QueueInjectedContext; /*!< 指定是否启用上下文队列功能。 00197 该参数可以设置为ENABLE或DISABLE。 00198 如果启用上下文队列,则注入排序器和通道配置 00199 被排队到最多2个上下文。如果在队列满时 00200 设置了新的注入上下文,则通过 00201 中断触发错误,并通过 00202 函数 00203 'HAL_ADCEx_InjectedQueueOverflowCallback'通知。 00204 注意:此功能要求序列在 00205 注入转换开始前完全配置。 00206 因此,使用 00207 多次调用HAL_ADCEx_InjectedConfigChannel()来 00208 配置通道,次数等于 00209 'InjectedNbrOfConversion'参数。 00210 <