STM32G474xx HAL用户手册
stm32g4xx_hal_opamp_ex.c
转到此文件的文档。
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(