| /** |
| ****************************************************************************** |
| * @file stm32l1xx_hal_opamp_ex.h |
| * @author MCD Application Team |
| * @brief Header file of OPAMP HAL Extension module. |
| ****************************************************************************** |
| * @attention |
| * |
| * Copyright (c) 2017 STMicroelectronics. |
| * All rights reserved. |
| * |
| * This software is licensed under terms that can be found in the LICENSE file |
| * in the root directory of this software component. |
| * If no LICENSE file comes with this software, it is provided AS-IS. |
| * |
| ****************************************************************************** |
| */ |
| |
| /* Define to prevent recursive inclusion -------------------------------------*/ |
| #ifndef STM32L1xx_HAL_OPAMP_EX_H |
| #define STM32L1xx_HAL_OPAMP_EX_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #if defined (STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L151xE) || defined (STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX) || defined (STM32L162xC) || defined (STM32L152xC) || defined (STM32L151xC) |
| |
| /* Includes ------------------------------------------------------------------*/ |
| #include "stm32l1xx_hal_def.h" |
| |
| /** @addtogroup STM32L1xx_HAL_Driver |
| * @{ |
| */ |
| |
| /** @addtogroup OPAMPEx |
| * @{ |
| */ |
| /* Exported types ------------------------------------------------------------*/ |
| /* Exported constants ---------------------------------------------------------*/ |
| /** @defgroup OPAMPEx_Exported_Constants OPAMPEx Exported Constants |
| * @{ |
| */ |
| #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) |
| #define OPAMP_CSR_OPAXPD_ALL \ |
| (OPAMP_CSR_OPA1PD | OPAMP_CSR_OPA2PD | OPAMP_CSR_OPA3PD) |
| |
| #define OPAMP_CSR_OPAXCAL_L_ALL \ |
| (OPAMP_CSR_OPA1CAL_L | OPAMP_CSR_OPA2CAL_L | OPAMP_CSR_OPA3CAL_L) |
| |
| #define OPAMP_CSR_OPAXCAL_H_ALL \ |
| (OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA2CAL_H | OPAMP_CSR_OPA3CAL_H) |
| |
| #define OPAMP_CSR_ALL_SWITCHES_ALL_OPAMPS \ |
| (OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1 | \ |
| OPAMP_CSR_ANAWSEL1 | \ |
| OPAMP_CSR_S3SEL2 | OPAMP_CSR_S4SEL2 | OPAMP_CSR_S5SEL2 | OPAMP_CSR_S6SEL2 | \ |
| OPAMP_CSR_ANAWSEL2 | OPAMP_CSR_S7SEL2 | \ |
| OPAMP_CSR_S3SEL3 | OPAMP_CSR_S4SEL3 | OPAMP_CSR_S5SEL3 | OPAMP_CSR_S6SEL3 | \ |
| OPAMP_CSR_ANAWSEL3 ) |
| #else |
| #define OPAMP_CSR_OPAXPD_ALL \ |
| (OPAMP_CSR_OPA1PD | OPAMP_CSR_OPA2PD) |
| |
| #define OPAMP_CSR_OPAXCAL_L_ALL \ |
| (OPAMP_CSR_OPA1CAL_L | OPAMP_CSR_OPA2CAL_L) |
| |
| #define OPAMP_CSR_OPAXCAL_H_ALL \ |
| (OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA2CAL_H) |
| |
| #define OPAMP_CSR_ALL_SWITCHES_ALL_OPAMPS \ |
| (OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1 | \ |
| OPAMP_CSR_ANAWSEL1 | \ |
| OPAMP_CSR_S3SEL2 | OPAMP_CSR_S4SEL2 | OPAMP_CSR_S5SEL2 | OPAMP_CSR_S6SEL2 | \ |
| OPAMP_CSR_ANAWSEL2 | OPAMP_CSR_S7SEL2 ) |
| #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ |
| |
| /** |
| * @} |
| */ |
| |
| /* Exported macro ------------------------------------------------------------*/ |
| |
| /** @defgroup OPAMPEx_Exported_Macro OPAMPEx Exported Macro |
| * @{ |
| */ |
| |
| #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) |
| /** |
| * @brief Enable internal analog switch SW1 to connect OPAMP3 output to ADC |
| * switch matrix (ADC channel VCOMP, channel 26) and COMP1 non-inverting input |
| * (OPAMP3 available on STM32L1 devices Cat.4 only). |
| * @retval None |
| */ |
| #define __HAL_OPAMP_OPAMP3OUT_CONNECT_ADC_COMP1() __HAL_RI_SWITCH_COMP1_SW1_CLOSE() |
| |
| /** |
| * @brief Disable internal analog switch SW1 to disconnect OPAMP3 output from |
| * ADC switch matrix (ADC channel VCOMP, channel 26) and COMP1 non-inverting |
| * input. |
| * @retval None |
| */ |
| #define __HAL_OPAMP_OPAMP3OUT_DISCONNECT_ADC_COMP1() __HAL_RI_SWITCH_COMP1_SW1_OPEN() |
| #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ |
| |
| /** |
| * @} |
| */ |
| |
| /* Private macro -------------------------------------------------------------*/ |
| |
| /** @defgroup OPAMPEx_Private_Macro OPAMPEx Private Macro |
| * @{ |
| */ |
| |
| #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) |
| /** |
| * @brief Get the OPAMP instance in decimal number for further |
| * processing needs by HAL OPAMP driver functions. |
| * @param __HANDLE__: OPAMP handle |
| * @retval "0" for OPAMP1, "1" for OPAMP2, "2" for OPAMP3 |
| */ |
| #define OPAMP_INSTANCE_DECIMAL(__HANDLE__) \ |
| ( ( ((__HANDLE__)->Instance == OPAMP1) \ |
| )? \ |
| ((uint32_t)0UL) \ |
| : \ |
| ( ( ((__HANDLE__)->Instance == OPAMP2) \ |
| )? \ |
| ((uint32_t)1UL) \ |
| : \ |
| ((uint32_t)2UL) \ |
| ) \ |
| ) |
| #else |
| /** |
| * @brief Get the OPAMP instance in decimal number for further |
| * processing needs by HAL OPAMP driver functions. |
| * @param __HANDLE__: OPAMP handle |
| * @retval "0" for OPAMP1, "1" for OPAMP2 |
| */ |
| #define OPAMP_INSTANCE_DECIMAL(__HANDLE__) \ |
| ( ( ((__HANDLE__)->Instance == OPAMP1) \ |
| )? \ |
| ((uint32_t)0UL) \ |
| : \ |
| ((uint32_t)1UL) \ |
| ) |
| #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ |
| |
| #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) |
| |
| /** |
| * @brief Check OPAMP non-inverting input in function of OPAMPx instance |
| * @param __HANDLE__: OPAMP handle |
| * @param INPUT: OPAMP non-inverting input |
| * @retval None |
| */ |
| #define IS_OPAMP_NONINVERTING_INPUT_CHECK_INSTANCE(__HANDLE__, INPUT) \ |
| ( ( ((__HANDLE__)->Instance == OPAMP1) \ |
| )? \ |
| ( \ |
| ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ |
| ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) \ |
| ) \ |
| : \ |
| ( ( ((__HANDLE__)->Instance == OPAMP2) \ |
| )? \ |
| ( \ |
| ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ |
| ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) || \ |
| ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH2) \ |
| ) \ |
| : \ |
| ( \ |
| ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ |
| ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH2) \ |
| ) \ |
| ) \ |
| ) |
| #else |
| /** |
| * @brief Check OPAMP non-inverting input in function of OPAMPx instance |
| * @param __HANDLE__: OPAMP handle |
| * @param INPUT: OPAMP non-inverting input |
| * @retval None |
| */ |
| #define IS_OPAMP_NONINVERTING_INPUT_CHECK_INSTANCE(__HANDLE__, INPUT) \ |
| ( ( ((__HANDLE__)->Instance == OPAMP1) \ |
| )? \ |
| ( \ |
| ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ |
| ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) \ |
| ) \ |
| : \ |
| ( \ |
| ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ |
| ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) || \ |
| ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH2) \ |
| ) \ |
| ) |
| #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ |
| |
| /** |
| * @} |
| */ |
| |
| /* Exported functions --------------------------------------------------------*/ |
| /** @addtogroup OPAMPEx_Exported_Functions |
| * @{ |
| */ |
| |
| /* I/O operation functions *****************************************************/ |
| /** @defgroup OPAMPEx_Exported_Functions_Group1 Extended Input and Output operation functions |
| * @{ |
| */ |
| #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) |
| HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2, OPAMP_HandleTypeDef *hopamp3); |
| #else |
| HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2); |
| #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ |
| /** |
| * @} |
| */ |
| /* Peripheral Control functions ************************************************/ |
| /** @addtogroup OPAMPEx_Exported_Functions_Group2 |
| * @{ |
| */ |
| HAL_StatusTypeDef HAL_OPAMPEx_Unlock(OPAMP_HandleTypeDef *hopamp); |
| /** |
| * @} |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| /** |
| * @} |
| */ |
| |
| #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX || STM32L162xC || STM32L152xC || STM32L151xC */ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| |
| #endif /* STM32L1xx_HAL_OPAMP_EX_H */ |
| |
| |