|
STM32G474xx HAL 用户手册
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32g4xx_hal_opamp.h 00004 * @author MCD Application Team 00005 * @brief Header file of OPAMP HAL module. 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * Copyright (c) 2019 STMicroelectronics. 00010 * All rights reserved. 00011 * 00012 * This software is licensed under terms that can be found in the LICENSE file 00013 * in the root directory of this software component. 00014 * If no LICENSE file comes with this software, it is provided AS-IS. 00015 * 00016 ****************************************************************************** 00017 */ 00018 00019 /* Define to prevent recursive inclusion -------------------------------------*/ 00020 #ifndef STM32G4xx_HAL_OPAMP_H 00021 #define STM32G4xx_HAL_OPAMP_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 #if defined (OPAMP1) || defined (OPAMP2) || defined (OPAMP3) || defined (OPAMP4) || defined (OPAMP5) || defined (OPAMP6) 00035 00036 /** @addtogroup OPAMP 00037 * @{ 00038 */ 00039 00040 /* Exported types ------------------------------------------------------------*/ 00041 /** @defgroup OPAMP_Exported_Types OPAMP 导出的类型 00042 * @{ 00043 */ 00044 00045 /** 00046 * @brief OPAMP 初始化结构定义 00047 */ 00048 00049 typedef struct 00050 { 00051 uint32_t PowerMode; /*!< 指定功率模式 - 正常或高速。 00052 此参数必须是 @ref OPAMP_PowerMode 的值 */ 00053 00054 uint32_t Mode; /*!< 指定 OPAMP 模式 00055 此参数必须是 @ref OPAMP_Mode 的值 00056 模式可以为独立模式、跟随器模式或 PGA 模式 */ 00057 00058 uint32_t InvertingInput; /*!< 指定独立模式和 PGA 模式下的反相输入 00059 - 独立模式时:即当模式为 OPAMP_STANDALONE_MODE 时 00060 此参数必须是 @ref OPAMP_InvertingInput 的值 00061 InvertingInput 可以是 VINM0 或 VINM1 00062 - PGA 模式时:即当模式为 OPAMP_PGA_MODE 时 00063 和跟随器模式时:即当模式为 OPAMP_FOLLOWER_MODE 时 00064 此参数不适用 */ 00065 00066 uint32_t NonInvertingInput; /*!< 指定运算放大器的非反相输入: 00067 此参数必须是 @ref OPAMP_NonInvertingInput 的值 00068 NonInvertingInput 可以是 VINP0、VINP1、VINP2 或 VINP3 */ 00069 00070 FunctionalState InternalOutput; /*!< 指定从 OPAMP 到 ADC 的内部输出配置。 00071 此参数可以是 ENABLE 或 DISABLE 00072 注意:当此输出使能时,常规输出到 I/O 被禁用 */ 00073 00074 uint32_t TimerControlledMuxmode; /*!< 指定定时器控制的 Mux 模式是使能还是禁用 00075 此参数必须是 @ref OPAMP_TimerControlledMuxmode 的单一值 00076 或它们的组合,以使用不同的定时器构建更复杂的开关方案 */ 00077 00078 uint32_t InvertingInputSecondary; /*!< 指定当 TimerControlledMuxmode 使能时运算放大器的反相输入(次级) 00079 即当 TimerControlledMuxmode 为 OPAMP_TIMERCONTROLLEDMUXMODE_ENABLE 时 00080 - 独立模式时:即当模式为 OPAMP_STANDALONE_MODE 时 00081 此参数必须是 @ref OPAMP_InvertingInputSecondary 的值 00082 InvertingInputSecondary 可以是 VINM0 或 VINM1 00083 - PGA 模式时:即当模式为 OPAMP_PGA_MODE 时 00084 和跟随器模式时:即当模式为 OPAMP_FOLLOWER_MODE 时 00085 此参数必须是 @ref OPAMP_InvertingInputSecondary 的值 00086 并用于选择次级模式(PGA 或跟随器) */ 00087 00088 uint32_t NonInvertingInputSecondary; /*!< 指定当 TimerControlledMuxmode 使能时运算放大器的非反相输入(次级) 00089 即当 TimerControlledMuxmode 为 OPAMP_TIMERCONTROLLEDMUXMODE_ENABLE 时 00090 此参数必须是 @ref OPAMP_NonInvertingInputSecondary 的值 00091 NonInvertingInput 可以是 VINP0、VINP1、VINP2 或 VINP3 */ 00092 00093 /*!< 指定 PGA 模式下的反相引脚 00094 即当模式为 OPAMP_PGA_MODE 时 00095 此参数必须是 @ref OPAMP_PgaConnect 的值 00096 可以是:不连接、连接到 VINM0 00097 在后一种情况下,VINM0 可用于输入信号(负增益情况 00098 带或不带 VINPx 偏置)或用于输入偏置(正增益情况带偏置) */ 00099 00100 /*!< 指定 PGA 模式下的增益 00101 即当模式为 OPAMP_PGA_MODE 时。 00102 此参数必须是 @ref OPAMP_PgaGain 的值 00103 正增益:(2, 4, 8, 16, 32 或 64)且负增益:(-1, -3, -7, -15, -31 或 -63) */ 00104 00105 /*!< 指定校准模式 00106 此参数必须是 @ref OPAMP_UserTrimming 的值 00107 UserTrimming 可以是工厂校准或用户校准 */ 00108 00109 /*!< 指定偏置校准值(PMOS) 00110 即当 UserTrimming 为 OPAMP_TRIMMING_USER 时。 00111 此参数必须是介于 Min_Data = 1 和 Max_Data = 31 之间的数值 */ 00112 00113 /*!< 指定偏置校准值(NMOS) 00114 即当 UserTrimming 为 OPAMP_TRIMMING_USER 时。 00115 此参数必须是介于 Min_Data = 1 和 Max_Data = 31 之间的数值 */ 00116 00117 } OPAMP_InitTypeDef; 00118 00119 /** 00120 * @brief HAL 状态结构定义 00121 */ 00122 00123 00123 typedef enum 00124 { 00125 HAL_OPAMP_STATE_RESET = 0x00000000UL, /*!< OPAMP 尚未初始化 */ 00126 00127 HAL_OPAMP_STATE_READY = 0x00000001UL, /*!< OPAMP 已初始化并可使用 */ 00128 00129 HAL_OPAMP_STATE_CALIBBUSY = 0x00000002UL, /*!< OPAMP 处于自动校准模式 */ 00130 00131 HAL_OPAMP_STATE_BUSY = 0x00000004UL, /*!< OPAMP 已使能并在正常模式下运行 */ 00132 00133 HAL_OPAMP_STATE_BUSYLOCKED = 0x00000005UL, /*!< OPAMP 控制寄存器已锁定 00134 只有系统复位才能重新配置 opamp。 */ 00135 00136 } HAL_OPAMP_StateTypeDef; 00137 00138 /** 00139 * @brief OPAMP 句柄结构定义 00140 */ 00141 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 00142 typedef struct __OPAMP_HandleTypeDef 00143 #else 00144 typedef struct 00145 #endif 00146 { 00147 00147 OPAMP_TypeDef *Instance; /*!< OPAMP 实例的寄存器基地址 */ 00148 00148 OPAMP_InitTypeDef Init; /*!< OPAMP 所需参数 */ 00149 00149 HAL_StatusTypeDef Status; /*!< OPAMP 外设状态 */ 00150 00150 HAL_LockTypeDef Lock; /*!< 锁定对象 */ 00151 00151 __IO HAL_OPAMP_StateTypeDef State; /*!< OPAMP 通信状态 */ 00152 00153 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 00154 00154 void (* MspInitCallback)(struct __OPAMP_HandleTypeDef *hopamp); 00155 00155 void (* MspDeInitCallback)(struct __OPAMP_HandleTypeDef *hopamp); 00156 #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ 00157 00158 } OPAMP_HandleTypeDef; 00159 00160 /** 00161 * @brief OPAMP_TrimmingValueTypeDef 定义 00162 */ 00163 00164 00164 typedef uint32_t OPAMP_TrimmingValueTypeDef; 00165 /** 00166 * @} 00167 */ 00168 00169 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 00170 /** 00171 * @brief HAL OPAMP 回调 ID 枚举定义 00172 */