STM32G474xx HAL用户手册
stm32g4xx_hal_adc_ex.h
跳转到本文件的文档。
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 <