|
STM32G474xx HAL用户手册
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32g4xx_hal_opamp_ex.c 00004 * @author MCD Application Team 00005 * @brief Extended OPAMP HAL module driver. 00006 * 00007 * This file provides firmware functions to manage the following 00008 * functionalities of the operational amplifiers peripheral: 00009 * + Extended Initialization and de-initialization functions 00010 * + Extended Peripheral Control functions 00011 * 00012 @verbatim 00013 ****************************************************************************** 00014 * @attention 00015 * 00016 * Copyright (c) 2019 STMicroelectronics. 00017 * All rights reserved. 00018 * 00019 * This software is licensed under terms that can be found in the LICENSE file 00020 * in the root directory of this software component. 00021 * If no LICENSE file comes with this software, it is provided AS-IS. 00023 * 00024 ****************************************************************************** 00025 */ 00026 /* Includes ------------------------------------------------------------------*/ 00027 #include "stm32g4xx_hal.h" 00028 00029 /** @addtogroup STM32G4xx_HAL_Driver 00030 * @{ 00031 */ 00032 #if defined (OPAMP1) || defined (OPAMP2) || defined (OPAMP3) || defined (OPAMP4) || defined (OPAMP5) || defined (OPAMP6) 00033 #ifdef HAL_OPAMP_MODULE_ENABLED 00034 00035 /** @defgroup OPAMPEx OPAMPEx 00036 * @brief OPAMP Extended HAL module driver 00037 * @{ 00038 */ 00039 00040 /* Private typedef -----------------------------------------------------------*/ 00041 /* Private define ------------------------------------------------------------*/ 00042 /* Private macro -------------------------------------------------------------*/ 00043 /* Private variables ---------------------------------------------------------*/ 00044 /* Private function prototypes -----------------------------------------------*/ 00045 /* Exported functions --------------------------------------------------------*/ 00046 00047 /** @defgroup OPAMPEx_Exported_Functions OPAMP Extended Exported Functions 00048 * @{ 00049 */ 00050 00051 /** @defgroup OPAMPEx_Exported_Functions_Group1 Extended Input and Output operation functions 00053 * @brief Extended Self calibration functions 00054 * 00055 @verbatim 00056 =============================================================================== 00057 ##### Extended IO operation functions ##### 00058 =============================================================================== 00059 [..] 00060 (+) OPAMP Self calibration. 00061 00062 @endverbatim 00063 * @{ 00064 */ 00065 00066 /** 00067 * @brief Run the self calibration of up to 6 OPAMPs in parallel. 00068 * @note Calibration is performed in the mode specified in OPAMP init 00069 * structure (mode normal or high-speed). 00070 * @param hopamp1 handle 00071 * @param hopamp2 handle 00072 * @param hopamp3 handle 00073 * @param hopamp4 handle (1) 00074 * @param hopamp5 handle (1) 00075 * @param hopamp6 handle (1) 00076 * (1) Parameter not present on STM32GBK1CB/STM32G411xB/STM32G411xC/STM32G431xx/STM32G441xx/STM32G471xx devices. 00077 * @retval HAL status 00078 * @note Updated offset trimming values (PMOS & NMOS), user trimming is enabled 00079 * @note Calibration runs about 25 ms. 00080 */ 00081 #if defined(STM32G473xx) || defined(STM32G474xx) || defined(STM32G483xx) || defined(STM32G484xx) 00082 HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2, 00083 OPAMP_HandleTypeDef *hopamp3, OPAMP_HandleTypeDef *hopamp4, 00084 OPAMP_HandleTypeDef *hopamp5, OPAMP_HandleTypeDef *hopamp6) 00085 #elif defined(STM32GBK1CB) || defined(STM32G431xx) || defined(STM32G441xx) || defined(STM32G471xx) 00089 HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2, 00090 OPAMP_HandleTypeDef *hopamp3) 00091 #elif defined(STM32G491xx) || defined(STM32G4A1xx) 00092 HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2, 00093 OPAMP_HandleTypeDef *hopamp3, OPAMP_HandleTypeDef *hopamp6) 00094 #elif defined(STM32G411xB) || defined(STM32G411xC) 00095 HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1) 00096 #endif /* STM32G473xx || STM32G474xx || STM32G483xx || STM32G484xx */ 00097 { 00098 uint32_t trimmingvaluen1; 00099 uint32_t trimmingvaluep1; 00100 #if defined(STM32GBK1CB) || defined(STM32G431xx) || defined(STM32G441xx) || defined(STM32G471xx) || \ 00101 defined(STM32G473xx) || defined(STM32G474xx) || defined(STM32G483xx) || defined(STM32G484xx) || \ 00102 defined(STM32G491xx) || defined(STM32G4A1xx) 00103 uint32_t trimmingvaluen2; 00104 uint32_t trimmingvaluep2; 00105 uint32_t trimmingvaluen3; 00106 uint32_t trimmingvaluep3; 00107 #endif /* STM32GBK1CB || STM32G431xx || STM32G441xx || STM32G471xx || STM32G473xx || STM32G474xx || \ 00108 STM32G483xx || STM32G484xx || STM32G491xx || STM32G4A1xx */ 00109 #if defined(STM32G473xx) || defined(STM32G474xx) || defined(STM32G483xx) || defined(STM32G484xx) 00110 uint32_t trimmingvaluen4; 00111 uint32_t trimmingvaluep4; 00112 uint32_t trimmingvaluen5; 00113 uint32_t trimmingvaluep5; 00114 uint32_t trimmingvaluen6; 00115 uint32_t trimmingvaluep6; 00116 #elif defined(STM32G491xx) || defined(STM32G4A1xx) 00117 uint32_t trimmingvaluen6; 00118 uint32_t trimmingvaluep6; 00119 #endif /* STM32G473xx || STM32G474xx || STM32G483xx || STM32G484xx */ 00120 00121 uint32_t delta; 00122 00123 if ((hopamp1 == NULL) 00124 #if defined(STM32GBK1CB) || defined(STM32G431xx) || defined(STM32G441xx) || defined(STM32G471xx) || \ 00125 defined(STM32G473xx) || defined(STM32G474xx) || defined(STM32G483xx) || defined(STM32G484xx) || \ 00126 defined(STM32G491xx) || defined(STM32G4A1xx) 00127 || (hopamp2 == NULL) || (hopamp3 == NULL) 00128 #endif /* STM32GBK1CB || STM32G431xx || STM32G441xx || STM32G471xx || STM32G473xx || STM32G474xx || \ 00128 STM32G483xx || STM32G484xx || STM32G491xx || STM32G4A1xx */ 00129 #if defined(STM32G473xx) || defined(STM32G474xx) || defined(STM32G483xx) || defined(STM32G484xx) 00130 || (hopamp4 == NULL) || (hopamp5 == NULL) || (hopamp6 == NULL) 00131 #elif defined(STM32G491xx) || defined(STM32G4A1xx) 00132 || (hopamp6 == NULL) 00133 #endif /* STM32G473xx || STM32G474xx || STM32G483xx || STM32G483xx || STM32G484xx */ 00134 ) 00135 { 00136 return HAL_ERROR; 00137 } 00137 else if (hopamp1->State != HAL_OPAMP_STATE_READY) 00138 { 00139 return HAL_ERROR; 00140 } 00141 #if defined(STM32GBK1CB) || defined(STM32G431xx) || defined(STM32G441xx) || defined(STM32G471xx) || \ 00142 defined(STM32G473xx) || defined(STM32G474xx) || defined(STM32G483xx) || defined(STM32G484xx) || \ 00143 defined(STM32G491xx) || defined(STM32G4A1xx) 00144 else if (hopamp2->State != HAL_OPAMP_STATE_READY) 00145 { 00146 return HAL_ERROR; 00147 } 00148 else if (hopamp3->State != HAL_OPAMP_STATE_READY) 00149 { 00150 return HAL_ERROR; 00151 } 00152 #endif /* STM32GBK1CB || STM32G431xx || STM32G441xx || STM32G471xx || STM32G473xx || STM32G474xx || \ 00154 STM32G483xx || STM32G484xx || STM32G491xx || STM32G4A1xx */ 00155 #if defined(STM32G473xx) || defined(STM32G474xx) || defined(STM32G483xx) || defined(STM32G484xx) 00156 else if (hopamp4->State != HAL_OPAMP_STATE_READY) 00157 { 00158 return HAL_ERROR; 00159 } 00160 else if (hopamp5->State != HAL_OPAMP_STATE_READY) 00160 { 00161 return HAL_ERROR; 00163 } 00164 else if (hopamp6->State != HAL_OPAMP_STATE_READY) 00165 { 00166 return HAL_ERROR; 00167 } 00168 #elif defined(STM32G491xx) || defined(STM32G4A1xx) 00169 else if (hopamp6->State != HAL_OPAMP_STATE_READY) 00170 { 00171 return HAL_ERROR; 00172 } 00173 #endif /* STM32G473xx || STM32G474xx || STM32G483xx || STM32G484xx */ 00174 else 00175 { 00176 00177 /* Check the parameter */ 00178 assert_param(IS_OPAMP_ALL_INSTANCE(hopamp1->Instance)); 00179 #if defined(STM32GBK1CB) || defined(