1 /** 2 ****************************************************************************** 3 * @file stm32l1xx_hal_opamp_ex.h 4 * @author MCD Application Team 5 * @brief Header file of OPAMP HAL Extension module. 6 ****************************************************************************** 7 * @attention 8 * 9 * <h2><center>© Copyright (c) 2017 STMicroelectronics. 10 * All rights reserved.</center></h2> 11 * 12 * This software component is licensed by ST under BSD 3-Clause license, 13 * the "License"; You may not use this file except in compliance with the 14 * License. You may obtain a copy of the License at: 15 * opensource.org/licenses/BSD-3-Clause 16 * 17 ****************************************************************************** 18 */ 19 20 /* Define to prevent recursive inclusion -------------------------------------*/ 21 #ifndef STM32L1xx_HAL_OPAMP_EX_H 22 #define STM32L1xx_HAL_OPAMP_EX_H 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif 27 28 #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) 29 30 /* Includes ------------------------------------------------------------------*/ 31 #include "stm32l1xx_hal_def.h" 32 33 /** @addtogroup STM32L1xx_HAL_Driver 34 * @{ 35 */ 36 37 /** @addtogroup OPAMPEx 38 * @{ 39 */ 40 /* Exported types ------------------------------------------------------------*/ 41 /* Exported constants ---------------------------------------------------------*/ 42 /** @defgroup OPAMPEx_Exported_Constants OPAMPEx Exported Constants 43 * @{ 44 */ 45 #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) 46 #define OPAMP_CSR_OPAXPD_ALL \ 47 (OPAMP_CSR_OPA1PD | OPAMP_CSR_OPA2PD | OPAMP_CSR_OPA3PD) 48 49 #define OPAMP_CSR_OPAXCAL_L_ALL \ 50 (OPAMP_CSR_OPA1CAL_L | OPAMP_CSR_OPA2CAL_L | OPAMP_CSR_OPA3CAL_L) 51 52 #define OPAMP_CSR_OPAXCAL_H_ALL \ 53 (OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA2CAL_H | OPAMP_CSR_OPA3CAL_H) 54 55 #define OPAMP_CSR_ALL_SWITCHES_ALL_OPAMPS \ 56 (OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1 | \ 57 OPAMP_CSR_ANAWSEL1 | \ 58 OPAMP_CSR_S3SEL2 | OPAMP_CSR_S4SEL2 | OPAMP_CSR_S5SEL2 | OPAMP_CSR_S6SEL2 | \ 59 OPAMP_CSR_ANAWSEL2 | OPAMP_CSR_S7SEL2 | \ 60 OPAMP_CSR_S3SEL3 | OPAMP_CSR_S4SEL3 | OPAMP_CSR_S5SEL3 | OPAMP_CSR_S6SEL3 | \ 61 OPAMP_CSR_ANAWSEL3 ) 62 #else 63 #define OPAMP_CSR_OPAXPD_ALL \ 64 (OPAMP_CSR_OPA1PD | OPAMP_CSR_OPA2PD) 65 66 #define OPAMP_CSR_OPAXCAL_L_ALL \ 67 (OPAMP_CSR_OPA1CAL_L | OPAMP_CSR_OPA2CAL_L) 68 69 #define OPAMP_CSR_OPAXCAL_H_ALL \ 70 (OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA2CAL_H) 71 72 #define OPAMP_CSR_ALL_SWITCHES_ALL_OPAMPS \ 73 (OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1 | \ 74 OPAMP_CSR_ANAWSEL1 | \ 75 OPAMP_CSR_S3SEL2 | OPAMP_CSR_S4SEL2 | OPAMP_CSR_S5SEL2 | OPAMP_CSR_S6SEL2 | \ 76 OPAMP_CSR_ANAWSEL2 | OPAMP_CSR_S7SEL2 ) 77 #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ 78 79 /** 80 * @} 81 */ 82 83 /* Exported macro ------------------------------------------------------------*/ 84 85 /** @defgroup OPAMPEx_Exported_Macro OPAMPEx Exported Macro 86 * @{ 87 */ 88 89 #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) 90 /** 91 * @brief Enable internal analog switch SW1 to connect OPAMP3 ouput to ADC 92 * switch matrix (ADC channel VCOMP, channel 26) and COMP1 non-inverting input 93 * (OPAMP3 available on STM32L1 devices Cat.4 only). 94 * @retval None 95 */ 96 #define __HAL_OPAMP_OPAMP3OUT_CONNECT_ADC_COMP1() __HAL_RI_SWITCH_COMP1_SW1_CLOSE() 97 98 /** 99 * @brief Disable internal analog switch SW1 to disconnect OPAMP3 ouput from 100 * ADC switch matrix (ADC channel VCOMP, channel 26) and COMP1 non-inverting 101 * input. 102 * @retval None 103 */ 104 #define __HAL_OPAMP_OPAMP3OUT_DISCONNECT_ADC_COMP1() __HAL_RI_SWITCH_COMP1_SW1_OPEN() 105 #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ 106 107 /** 108 * @} 109 */ 110 111 /* Private macro -------------------------------------------------------------*/ 112 113 /** @defgroup OPAMPEx_Private_Macro OPAMPEx Private Macro 114 * @{ 115 */ 116 117 #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) 118 /** 119 * @brief Get the OPAMP instance in decimal number for further 120 * processing needs by HAL OPAMP driver functions. 121 * @param __HANDLE__: OPAMP handle 122 * @retval "0" for OPAMP1, "1" for OPAMP2, "2" for OPAMP3 123 */ 124 #define OPAMP_INSTANCE_DECIMAL(__HANDLE__) \ 125 ( ( ((__HANDLE__)->Instance == OPAMP1) \ 126 )? \ 127 ((uint32_t)0UL) \ 128 : \ 129 ( ( ((__HANDLE__)->Instance == OPAMP2) \ 130 )? \ 131 ((uint32_t)1UL) \ 132 : \ 133 ((uint32_t)2UL) \ 134 ) \ 135 ) 136 #else 137 /** 138 * @brief Get the OPAMP instance in decimal number for further 139 * processing needs by HAL OPAMP driver functions. 140 * @param __HANDLE__: OPAMP handle 141 * @retval "0" for OPAMP1, "1" for OPAMP2 142 */ 143 #define OPAMP_INSTANCE_DECIMAL(__HANDLE__) \ 144 ( ( ((__HANDLE__)->Instance == OPAMP1) \ 145 )? \ 146 ((uint32_t)0UL) \ 147 : \ 148 ((uint32_t)1UL) \ 149 ) 150 #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ 151 152 #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) 153 154 /** 155 * @brief Check OPAMP non-inverting input in function of OPAMPx instance 156 * @param __HANDLE__: OPAMP handle 157 * @param INPUT: OPAMP non-inverting input 158 * @retval None 159 */ 160 #define IS_OPAMP_NONINVERTING_INPUT_CHECK_INSTANCE(__HANDLE__, INPUT) \ 161 ( ( ((__HANDLE__)->Instance == OPAMP1) \ 162 )? \ 163 ( \ 164 ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ 165 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) \ 166 ) \ 167 : \ 168 ( ( ((__HANDLE__)->Instance == OPAMP2) \ 169 )? \ 170 ( \ 171 ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ 172 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) || \ 173 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH2) \ 174 ) \ 175 : \ 176 ( \ 177 ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ 178 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH2) \ 179 ) \ 180 ) \ 181 ) 182 #else 183 /** 184 * @brief Check OPAMP non-inverting input in function of OPAMPx instance 185 * @param __HANDLE__: OPAMP handle 186 * @param INPUT: OPAMP non-inverting input 187 * @retval None 188 */ 189 #define IS_OPAMP_NONINVERTING_INPUT_CHECK_INSTANCE(__HANDLE__, INPUT) \ 190 ( ( ((__HANDLE__)->Instance == OPAMP1) \ 191 )? \ 192 ( \ 193 ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ 194 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) \ 195 ) \ 196 : \ 197 ( \ 198 ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ 199 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) || \ 200 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH2) \ 201 ) \ 202 ) 203 #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ 204 205 /** 206 * @} 207 */ 208 209 /* Exported functions --------------------------------------------------------*/ 210 /** @addtogroup OPAMPEx_Exported_Functions 211 * @{ 212 */ 213 214 /* I/O operation functions *****************************************************/ 215 /** @defgroup OPAMPEx_Exported_Functions_Group1 Extended Input and Output operation functions 216 * @{ 217 */ 218 #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) 219 HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2, OPAMP_HandleTypeDef *hopamp3); 220 #else 221 HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2); 222 #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ 223 /** 224 * @} 225 */ 226 /* Peripheral Control functions ************************************************/ 227 /** @addtogroup OPAMPEx_Exported_Functions_Group2 228 * @{ 229 */ 230 HAL_StatusTypeDef HAL_OPAMPEx_Unlock(OPAMP_HandleTypeDef *hopamp); 231 /** 232 * @} 233 */ 234 235 /** 236 * @} 237 */ 238 239 /** 240 * @} 241 */ 242 243 /** 244 * @} 245 */ 246 247 #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX || STM32L162xC || STM32L152xC || STM32L151xC */ 248 249 #ifdef __cplusplus 250 } 251 #endif 252 253 254 #endif /* STM32L1xx_HAL_OPAMP_EX_H */ 255 256 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 257