![]() |
|
|||
File indexing completed on 2025-05-11 08:23:36
0001 /** 0002 ****************************************************************************** 0003 * @file stm32h7xx_hal_opamp.h 0004 * @author MCD Application Team 0005 * @brief Header file of OPAMP HAL module. 0006 ****************************************************************************** 0007 * @attention 0008 * 0009 * Copyright (c) 2017 STMicroelectronics. 0010 * All rights reserved. 0011 * 0012 * This software is licensed under terms that can be found in the LICENSE file 0013 * in the root directory of this software component. 0014 * If no LICENSE file comes with this software, it is provided AS-IS. 0015 * 0016 ****************************************************************************** 0017 */ 0018 0019 /* Define to prevent recursive inclusion -------------------------------------*/ 0020 #ifndef STM32H7xx_HAL_OPAMP_H 0021 #define STM32H7xx_HAL_OPAMP_H 0022 0023 #ifdef __cplusplus 0024 extern "C" { 0025 #endif 0026 0027 /* Includes ------------------------------------------------------------------*/ 0028 #include "stm32h7xx_hal_def.h" 0029 0030 /** @addtogroup STM32H7xx_HAL_Driver 0031 * @{ 0032 */ 0033 0034 /** @addtogroup OPAMP 0035 * @{ 0036 */ 0037 0038 /* Exported types ------------------------------------------------------------*/ 0039 0040 /** @defgroup OPAMP_Exported_Types OPAMP Exported Types 0041 * @ingroup RTEMSBSPsARMSTM32H7 0042 * @{ 0043 */ 0044 0045 /** 0046 * @brief OPAMP Init structure definition 0047 */ 0048 0049 typedef struct 0050 { 0051 0052 uint32_t PowerMode; /*!< Specifies the power mode Normal or High Speed. 0053 This parameter must be a value of @ref OPAMP_PowerMode */ 0054 0055 uint32_t Mode; /*!< Specifies the OPAMP mode 0056 This parameter must be a value of @ref OPAMP_Mode 0057 mode is either Standalone, - Follower or PGA */ 0058 0059 uint32_t InvertingInput; /*!< Specifies the inverting input in Standalone & PGA modes 0060 - In Standalone mode i.e when mode is OPAMP_STANDALONE_MODE 0061 This parameter must be a value of @ref OPAMP_InvertingInput 0062 - In Follower mode i.e when mode is OPAMP_FOLLOWER_MODE 0063 & In PGA mode i.e when mode is OPAMP_PGA_MODE 0064 This parameter is Not Applicable */ 0065 0066 uint32_t NonInvertingInput; /*!< Specifies the non inverting input of the opamp: 0067 This parameter must be a value of @ref OPAMP_NonInvertingInput */ 0068 0069 uint32_t PgaGain; /*!< Specifies the gain in PGA mode 0070 i.e. when mode is OPAMP_PGA_MODE. 0071 This parameter must be a value of @ref OPAMP_PgaGain */ 0072 0073 uint32_t PgaConnect; /*!< Specifies the inverting pin in PGA mode 0074 i.e. when mode is OPAMP_PGA_MODE 0075 This parameter must be a value of @ref OPAMP_PgaConnect 0076 Either: not connected, connected to VINM0, connected to VINM1 0077 (VINM0 or VINM1 are typically used for external filtering) */ 0078 0079 uint32_t UserTrimming; /*!< Specifies the trimming mode 0080 This parameter must be a value of @ref OPAMP_UserTrimming 0081 UserTrimming is either factory or user trimming.*/ 0082 0083 uint32_t TrimmingValueP; /*!< Specifies the offset trimming value (PMOS) in Normal Mode 0084 i.e. when UserTrimming is OPAMP_TRIMMING_USER. 0085 This parameter must be a number between Min_Data = 0 and Max_Data = 31. 0086 16 is typical default value */ 0087 0088 uint32_t TrimmingValueN; /*!< Specifies the offset trimming value (NMOS) in Normal Mode 0089 i.e. when UserTrimming is OPAMP_TRIMMING_USER. 0090 This parameter must be a number between Min_Data = 0 and Max_Data = 31. 0091 16 is typical default value */ 0092 0093 uint32_t TrimmingValuePHighSpeed; /*!< Specifies the offset trimming value (PMOS) in High Speed Mode 0094 i.e. when UserTrimming is OPAMP_TRIMMING_USER. 0095 This parameter must be a number between Min_Data = 0 and Max_Data = 31. 0096 16 is typical default value */ 0097 0098 uint32_t TrimmingValueNHighSpeed; /*!< Specifies the offset trimming value (NMOS) in High Speed Mode 0099 i.e. when UserTrimming is OPAMP_TRIMMING_USER. 0100 This parameter must be a number between Min_Data = 0 and Max_Data = 31. 0101 16 is typical default value */ 0102 0103 }OPAMP_InitTypeDef; 0104 0105 /** 0106 * @brief HAL State structures definition 0107 */ 0108 0109 typedef enum 0110 { 0111 HAL_OPAMP_STATE_RESET = 0x00000000U, /*!< OPAMP is not yet Initialized */ 0112 0113 HAL_OPAMP_STATE_READY = 0x00000001U, /*!< OPAMP is initialized and ready for use */ 0114 HAL_OPAMP_STATE_CALIBBUSY = 0x00000002U, /*!< OPAMP is enabled in auto calibration mode */ 0115 0116 HAL_OPAMP_STATE_BUSY = 0x00000004U, /*!< OPAMP is enabled and running in normal mode */ 0117 HAL_OPAMP_STATE_BUSYLOCKED = 0x00000005U /*!< OPAMP is locked 0118 only system reset allows reconfiguring the opamp. */ 0119 0120 }HAL_OPAMP_StateTypeDef; 0121 0122 /** 0123 * @brief OPAMP Handle Structure definition 0124 */ 0125 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 0126 typedef struct __OPAMP_HandleTypeDef 0127 #else 0128 typedef struct 0129 #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ 0130 { 0131 OPAMP_TypeDef *Instance; /*!< OPAMP instance's registers base address */ 0132 OPAMP_InitTypeDef Init; /*!< OPAMP required parameters */ 0133 HAL_StatusTypeDef Status; /*!< OPAMP peripheral status */ 0134 HAL_LockTypeDef Lock; /*!< Locking object */ 0135 __IO HAL_OPAMP_StateTypeDef State; /*!< OPAMP communication state */ 0136 0137 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 0138 void (* MspInitCallback) (struct __OPAMP_HandleTypeDef *hopamp); 0139 void (* MspDeInitCallback) (struct __OPAMP_HandleTypeDef *hopamp); 0140 #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ 0141 } OPAMP_HandleTypeDef; 0142 0143 /** 0144 * @brief HAl_OPAMP_TrimmingValueTypeDef definition 0145 */ 0146 0147 typedef uint32_t HAL_OPAMP_TrimmingValueTypeDef; 0148 0149 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 0150 /** 0151 * @brief HAL OPAMP Callback ID enumeration definition 0152 */ 0153 typedef enum 0154 { 0155 HAL_OPAMP_MSPINIT_CB_ID = 0x01U, /*!< OPAMP MspInit Callback ID */ 0156 HAL_OPAMP_MSPDEINIT_CB_ID = 0x02U, /*!< OPAMP MspDeInit Callback ID */ 0157 HAL_OPAMP_ALL_CB_ID = 0x03U /*!< OPAMP All ID */ 0158 }HAL_OPAMP_CallbackIDTypeDef; 0159 0160 /** 0161 * @brief HAL OPAMP Callback pointer definition 0162 */ 0163 typedef void (*pOPAMP_CallbackTypeDef)(OPAMP_HandleTypeDef *hopamp); 0164 #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ 0165 /** 0166 * @} 0167 */ 0168 0169 /* Exported constants --------------------------------------------------------*/ 0170 /** @defgroup OPAMP_Exported_Constants OPAMP Exported Constants 0171 * @ingroup RTEMSBSPsARMSTM32H7 0172 * @{ 0173 */ 0174 0175 /** @defgroup OPAMP_Mode OPAMP Mode 0176 * @ingroup RTEMSBSPsARMSTM32H7 0177 * @{ 0178 */ 0179 #define OPAMP_STANDALONE_MODE 0x00000000U /*!< standalone mode */ 0180 #define OPAMP_PGA_MODE OPAMP_CSR_VMSEL_1 /*!< PGA mode */ 0181 #define OPAMP_FOLLOWER_MODE (OPAMP_CSR_VMSEL_1 | OPAMP_CSR_VMSEL_0) /*!< follower mode */ 0182 0183 /** 0184 * @} 0185 */ 0186 0187 /** @defgroup OPAMP_NonInvertingInput OPAMP Non Inverting Input 0188 * @ingroup RTEMSBSPsARMSTM32H7 0189 * @{ 0190 */ 0191 0192 #define OPAMP_NONINVERTINGINPUT_IO0 0x00000000U /*!< OPAMP non-inverting input connected to dedicated IO pin */ 0193 #define OPAMP_NONINVERTINGINPUT_DAC_CH OPAMP_CSR_VPSEL_0 /*!< OPAMP non-inverting input connected internally to DAC channel */ 0194 #if defined(DAC2) 0195 #define OPAMP_NONINVERTINGINPUT_DAC2_CH OPAMP_CSR_VPSEL_1 /*!< Only OPAMP2 non-inverting input connected internally to DAC2 channel */ 0196 #endif /* DAC2 */ 0197 0198 /** 0199 * @} 0200 */ 0201 0202 /** @defgroup OPAMP_InvertingInput OPAMP Inverting Input 0203 * @ingroup RTEMSBSPsARMSTM32H7 0204 * @{ 0205 */ 0206 0207 #define OPAMP_INVERTINGINPUT_IO0 0x00000000U /*!< OPAMP inverting input connected to dedicated IO pin */ 0208 #define OPAMP_INVERTINGINPUT_IO1 OPAMP_CSR_VMSEL_0 /*!< OPAMP inverting input connected to dedicated IO pin */ 0209 0210 /** 0211 * @} 0212 */ 0213 0214 /** @defgroup OPAMP_PgaConnect OPAMP Pga Connect 0215 * @ingroup RTEMSBSPsARMSTM32H7 0216 * @{ 0217 */ 0218 0219 #define OPAMP_PGA_CONNECT_INVERTINGINPUT_NO 0x00000000U /*!< In PGA mode, the inverting input is not connected */ 0220 #define OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0 OPAMP_CSR_PGGAIN_2 /*!< In PGA mode, the inverting input is connected to VINM0 */ 0221 #define OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0_BIAS OPAMP_CSR_PGGAIN_3 /*!< In PGA mode, the inverting input is connected to VINM0 or bias */ 0222 #define OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0_IO1_BIAS (OPAMP_CSR_PGGAIN_2 | OPAMP_CSR_PGGAIN_3) /*!< In PGA mode, the inverting input is connected to VINM0 or bias , VINM1 connected for filtering */ 0223 0224 0225 /** 0226 * @} 0227 */ 0228 0229 /** @defgroup OPAMP_PgaGain OPAMP Pga Gain 0230 * @ingroup RTEMSBSPsARMSTM32H7 0231 * @{ 0232 */ 0233 0234 #define OPAMP_PGA_GAIN_2_OR_MINUS_1 0x00000000U /*!< PGA gain could be 2 or -1 */ 0235 #define OPAMP_PGA_GAIN_4_OR_MINUS_3 OPAMP_CSR_PGGAIN_0 /*!< PGA gain could be 4 or -3 */ 0236 #define OPAMP_PGA_GAIN_8_OR_MINUS_7 OPAMP_CSR_PGGAIN_1 /*!< PGA gain could be 8 or -7 */ 0237 #define OPAMP_PGA_GAIN_16_OR_MINUS_15 (OPAMP_CSR_PGGAIN_0 | OPAMP_CSR_PGGAIN_1) /*!< PGA gain could be 16 or -15 */ 0238 0239 /** 0240 * @} 0241 */ 0242 0243 /** @defgroup OPAMP_PowerMode OPAMP PowerMode 0244 * @ingroup RTEMSBSPsARMSTM32H7 0245 * @{ 0246 */ 0247 #define OPAMP_POWERMODE_NORMAL 0x00000000U 0248 #define OPAMP_POWERMODE_HIGHSPEED OPAMP_CSR_OPAHSM 0249 0250 /** 0251 * @} 0252 */ 0253 0254 0255 /** @defgroup OPAMP_VREF OPAMP VREF 0256 * @ingroup RTEMSBSPsARMSTM32H7 0257 * @{ 0258 */ 0259 0260 #define OPAMP_VREF_3VDDA 0x00000000U /*!< OPAMP Vref = 3.3% VDDA */ 0261 #define OPAMP_VREF_10VDDA OPAMP_CSR_CALSEL_0 /*!< OPAMP Vref = 10% VDDA */ 0262 #define OPAMP_VREF_50VDDA OPAMP_CSR_CALSEL_1 /*!< OPAMP Vref = 50% VDDA */ 0263 #define OPAMP_VREF_90VDDA OPAMP_CSR_CALSEL /*!< OPAMP Vref = 90% VDDA */ 0264 0265 /** 0266 * @} 0267 */ 0268 0269 /** @defgroup OPAMP_UserTrimming OPAMP User Trimming 0270 * @ingroup RTEMSBSPsARMSTM32H7 0271 * @{ 0272 */ 0273 #define OPAMP_TRIMMING_FACTORY 0x00000000U /*!< Factory trimming */ 0274 #define OPAMP_TRIMMING_USER OPAMP_CSR_USERTRIM /*!< User trimming */ 0275 0276 0277 /** 0278 * @} 0279 */ 0280 0281 /** @defgroup OPAMP_FactoryTrimming OPAMP Factory Trimming 0282 * @ingroup RTEMSBSPsARMSTM32H7 0283 * @{ 0284 */ 0285 #define OPAMP_FACTORYTRIMMING_DUMMY 0xFFFFFFFFU /*!< Dummy value if trimming value could not be retrieved */ 0286 0287 #define OPAMP_FACTORYTRIMMING_N 0x00000000U /*!< Offset trimming N */ 0288 #define OPAMP_FACTORYTRIMMING_P 0x00000001U /*!< Offset trimming P */ 0289 0290 /** 0291 * @} 0292 */ 0293 0294 /** 0295 * @} 0296 */ 0297 0298 /* Private constants ---------------------------------------------------------*/ 0299 /** @defgroup OPAMP_Private_Constants OPAMP Private Constants 0300 * @ingroup RTEMSBSPsARMSTM32H7 0301 * @brief OPAMP Private constants and defines 0302 * @{ 0303 */ 0304 0305 /* NONINVERTING bit position in OTR & HSOTR */ 0306 #define OPAMP_INPUT_NONINVERTING (8U) /*!< Non inverting input */ 0307 0308 /* Offset trimming time: during calibration, minimum time needed between two */ 0309 /* steps to have 1 mV accuracy. */ 0310 /* Refer to datasheet, electrical characteristics: parameter tOFFTRIM Typ=2ms.*/ 0311 /* Unit: ms. */ 0312 #define OPAMP_TRIMMING_DELAY (2U) 0313 0314 /** 0315 * @} 0316 */ 0317 0318 /* Exported macros -----------------------------------------------------------*/ 0319 /** @defgroup OPAMP_Exported_Macros OPAMP Exported Macros 0320 * @ingroup RTEMSBSPsARMSTM32H7 0321 * @{ 0322 */ 0323 0324 /** @brief Reset OPAMP handle state. 0325 * @param __HANDLE__: OPAMP handle. 0326 * @retval None 0327 */ 0328 #define __HAL_OPAMP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_OPAMP_STATE_RESET) 0329 0330 /** 0331 * @} 0332 */ 0333 0334 /* Private macro -------------------------------------------------------------*/ 0335 0336 /** @defgroup OPAMP_Private_Macros OPAMP Private Macros 0337 * @ingroup RTEMSBSPsARMSTM32H7 0338 * @{ 0339 */ 0340 0341 #define IS_OPAMP_FUNCTIONAL_NORMALMODE(INPUT) (((INPUT) == OPAMP_STANDALONE_MODE) || \ 0342 ((INPUT) == OPAMP_PGA_MODE) || \ 0343 ((INPUT) == OPAMP_FOLLOWER_MODE)) 0344 0345 #define IS_OPAMP_INVERTING_INPUT_STANDALONE(INPUT) (((INPUT) == OPAMP_INVERTINGINPUT_IO0) || \ 0346 ((INPUT) == OPAMP_INVERTINGINPUT_IO1)) 0347 0348 #if defined(DAC2) 0349 #define IS_OPAMP_NONINVERTING_INPUT(INPUT) (((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ 0350 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH) || \ 0351 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC2_CH)) 0352 #else 0353 #define IS_OPAMP_NONINVERTING_INPUT(INPUT) (((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ 0354 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH)) 0355 #endif /* DAC2 */ 0356 0357 #define IS_OPAMP_PGACONNECT(CONNECT) (((CONNECT) == OPAMP_PGA_CONNECT_INVERTINGINPUT_NO) || \ 0358 ((CONNECT) == OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0) || \ 0359 ((CONNECT) == OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0_BIAS) || \ 0360 ((CONNECT) == OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0_IO1_BIAS)) 0361 0362 #define IS_OPAMP_PGA_GAIN(GAIN) (((GAIN) == OPAMP_PGA_GAIN_2_OR_MINUS_1) || \ 0363 ((GAIN) == OPAMP_PGA_GAIN_4_OR_MINUS_3) || \ 0364 ((GAIN) == OPAMP_PGA_GAIN_8_OR_MINUS_7) || \ 0365 ((GAIN) == OPAMP_PGA_GAIN_16_OR_MINUS_15)) 0366 0367 0368 #define IS_OPAMP_VREF(VREF) (((VREF) == OPAMP_VREF_3VDDA) || \ 0369 ((VREF) == OPAMP_VREF_10VDDA) || \ 0370 ((VREF) == OPAMP_VREF_50VDDA) || \ 0371 ((VREF) == OPAMP_VREF_90VDDA)) 0372 0373 #define IS_OPAMP_POWERMODE(TRIMMING) (((TRIMMING) == OPAMP_POWERMODE_NORMAL) || \ 0374 ((TRIMMING) == OPAMP_POWERMODE_HIGHSPEED) ) 0375 0376 0377 #define IS_OPAMP_TRIMMING(TRIMMING) (((TRIMMING) == OPAMP_TRIMMING_FACTORY) || \ 0378 ((TRIMMING) == OPAMP_TRIMMING_USER)) 0379 0380 0381 #define IS_OPAMP_TRIMMINGVALUE(TRIMMINGVALUE) ((TRIMMINGVALUE) <= 0x1FU) 0382 0383 #define IS_OPAMP_FACTORYTRIMMING(TRIMMING) (((TRIMMING) == OPAMP_FACTORYTRIMMING_N) || \ 0384 ((TRIMMING) == OPAMP_FACTORYTRIMMING_P)) 0385 0386 /** 0387 * @} 0388 */ 0389 0390 /* Include OPAMP HAL Extended module */ 0391 #include "stm32h7xx_hal_opamp_ex.h" 0392 0393 /* Exported functions --------------------------------------------------------*/ 0394 /** @addtogroup OPAMP_Exported_Functions 0395 * @{ 0396 */ 0397 0398 /** @addtogroup OPAMP_Exported_Functions_Group1 0399 * @{ 0400 */ 0401 /* Initialization/de-initialization functions **********************************/ 0402 HAL_StatusTypeDef HAL_OPAMP_Init(OPAMP_HandleTypeDef *hopamp); 0403 HAL_StatusTypeDef HAL_OPAMP_DeInit (OPAMP_HandleTypeDef *hopamp); 0404 void HAL_OPAMP_MspInit(OPAMP_HandleTypeDef *hopamp); 0405 void HAL_OPAMP_MspDeInit(OPAMP_HandleTypeDef *hopamp); 0406 /** 0407 * @} 0408 */ 0409 0410 /** @addtogroup OPAMP_Exported_Functions_Group2 0411 * @{ 0412 */ 0413 0414 /* I/O operation functions *****************************************************/ 0415 HAL_StatusTypeDef HAL_OPAMP_Start(OPAMP_HandleTypeDef *hopamp); 0416 HAL_StatusTypeDef HAL_OPAMP_Stop(OPAMP_HandleTypeDef *hopamp); 0417 HAL_StatusTypeDef HAL_OPAMP_SelfCalibrate(OPAMP_HandleTypeDef *hopamp); 0418 0419 /** 0420 * @} 0421 */ 0422 0423 /** @addtogroup OPAMP_Exported_Functions_Group3 0424 * @{ 0425 */ 0426 0427 /* Peripheral Control functions ************************************************/ 0428 #if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1) 0429 /* OPAMP callback registering/unregistering */ 0430 HAL_StatusTypeDef HAL_OPAMP_RegisterCallback (OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackId, pOPAMP_CallbackTypeDef pCallback); 0431 HAL_StatusTypeDef HAL_OPAMP_UnRegisterCallback (OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackId); 0432 #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ 0433 HAL_StatusTypeDef HAL_OPAMP_Lock(OPAMP_HandleTypeDef *hopamp); 0434 HAL_OPAMP_TrimmingValueTypeDef HAL_OPAMP_GetTrimOffset (OPAMP_HandleTypeDef *hopamp, uint32_t trimmingoffset); 0435 0436 /** 0437 * @} 0438 */ 0439 0440 /** @addtogroup OPAMP_Exported_Functions_Group4 0441 * @{ 0442 */ 0443 0444 /* Peripheral State functions **************************************************/ 0445 HAL_OPAMP_StateTypeDef HAL_OPAMP_GetState(OPAMP_HandleTypeDef *hopamp); 0446 0447 /** 0448 * @} 0449 */ 0450 0451 /** 0452 * @} 0453 */ 0454 0455 /** 0456 * @} 0457 */ 0458 0459 /** 0460 * @} 0461 */ 0462 0463 #ifdef __cplusplus 0464 } 0465 #endif 0466 0467 #endif /* STM32H7xx_HAL_OPAMP_H */ 0468
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |