1 /** 2 ****************************************************************************** 3 * @file stm32l1xx_hal_opamp_ex.h 4 * @author MCD Application Team 5 * @version V1.2.0 6 * @date 01-July-2016 7 * @brief Header file of OPAMP HAL Extension module. 8 ****************************************************************************** 9 * @attention 10 * 11 * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> 12 * 13 * Redistribution and use in source and binary forms, with or without modification, 14 * are permitted provided that the following conditions are met: 15 * 1. Redistributions of source code must retain the above copyright notice, 16 * this list of conditions and the following disclaimer. 17 * 2. Redistributions in binary form must reproduce the above copyright notice, 18 * this list of conditions and the following disclaimer in the documentation 19 * and/or other materials provided with the distribution. 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors 21 * may be used to endorse or promote products derived from this software 22 * without specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 * 35 ****************************************************************************** 36 */ 37 38 /* Define to prevent recursive inclusion -------------------------------------*/ 39 #ifndef __STM32L1xx_HAL_OPAMP_EX_H 40 #define __STM32L1xx_HAL_OPAMP_EX_H 41 42 #ifdef __cplusplus 43 extern "C" { 44 #endif 45 46 #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) 47 48 /* Includes ------------------------------------------------------------------*/ 49 #include "stm32l1xx_hal_def.h" 50 51 /** @addtogroup STM32L1xx_HAL_Driver 52 * @{ 53 */ 54 55 /** @addtogroup OPAMPEx 56 * @{ 57 */ 58 /* Exported types ------------------------------------------------------------*/ 59 /* Exported constants ---------------------------------------------------------*/ 60 /** @defgroup OPAMPEx_Exported_Constants OPAMPEx Exported Constants 61 * @{ 62 */ 63 #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) 64 #define OPAMP_CSR_OPAXPD_ALL \ 65 (OPAMP_CSR_OPA1PD | OPAMP_CSR_OPA2PD | OPAMP_CSR_OPA3PD) 66 67 #define OPAMP_CSR_OPAXCAL_L_ALL \ 68 (OPAMP_CSR_OPA1CAL_L | OPAMP_CSR_OPA2CAL_L | OPAMP_CSR_OPA3CAL_L) 69 70 #define OPAMP_CSR_OPAXCAL_H_ALL \ 71 (OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA2CAL_H | OPAMP_CSR_OPA3CAL_H) 72 73 #define OPAMP_CSR_ALL_SWITCHES_ALL_OPAMPS \ 74 (OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1 | \ 75 OPAMP_CSR_ANAWSEL1 | \ 76 OPAMP_CSR_S3SEL2 | OPAMP_CSR_S4SEL2 | OPAMP_CSR_S5SEL2 | OPAMP_CSR_S6SEL2 | \ 77 OPAMP_CSR_ANAWSEL2 | OPAMP_CSR_S7SEL2 | \ 78 OPAMP_CSR_S3SEL3 | OPAMP_CSR_S4SEL3 | OPAMP_CSR_S5SEL3 | OPAMP_CSR_S6SEL3 | \ 79 OPAMP_CSR_ANAWSEL3 ) 80 #else 81 #define OPAMP_CSR_OPAXPD_ALL \ 82 (OPAMP_CSR_OPA1PD | OPAMP_CSR_OPA2PD) 83 84 #define OPAMP_CSR_OPAXCAL_L_ALL \ 85 (OPAMP_CSR_OPA1CAL_L | OPAMP_CSR_OPA2CAL_L) 86 87 #define OPAMP_CSR_OPAXCAL_H_ALL \ 88 (OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA2CAL_H) 89 90 #define OPAMP_CSR_ALL_SWITCHES_ALL_OPAMPS \ 91 (OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1 | \ 92 OPAMP_CSR_ANAWSEL1 | \ 93 OPAMP_CSR_S3SEL2 | OPAMP_CSR_S4SEL2 | OPAMP_CSR_S5SEL2 | OPAMP_CSR_S6SEL2 | \ 94 OPAMP_CSR_ANAWSEL2 | OPAMP_CSR_S7SEL2 ) 95 #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ 96 97 /** 98 * @} 99 */ 100 101 /* Exported macro ------------------------------------------------------------*/ 102 103 /** @defgroup OPAMPEx_Exported_Macro OPAMPEx Exported Macro 104 * @{ 105 */ 106 107 #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) 108 /** 109 * @brief Enable internal analog switch SW1 to connect OPAMP3 ouput to ADC 110 * switch matrix (ADC channel VCOMP, channel 26) and COMP1 non-inverting input 111 * (OPAMP3 available on STM32L1 devices Cat.4 only). 112 * @retval None 113 */ 114 #define __HAL_OPAMP_OPAMP3OUT_CONNECT_ADC_COMP1() __HAL_RI_SWITCH_COMP1_SW1_CLOSE() 115 116 /** 117 * @brief Disable internal analog switch SW1 to disconnect OPAMP3 ouput from 118 * ADC switch matrix (ADC channel VCOMP, channel 26) and COMP1 non-inverting 119 * input. 120 * @retval None 121 */ 122 #define __HAL_OPAMP_OPAMP3OUT_DISCONNECT_ADC_COMP1() __HAL_RI_SWITCH_COMP1_SW1_OPEN() 123 #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ 124 125 /** 126 * @} 127 */ 128 129 /* Private macro -------------------------------------------------------------*/ 130 131 /** @defgroup OPAMPEx_Private_Macro OPAMPEx Private Macro 132 * @{ 133 */ 134 135 #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) 136 /** 137 * @brief Get the OPAMP instance in decimal number for further 138 * processing needs by HAL OPAMP driver functions. 139 * @param __HANDLE__: OPAMP handle 140 * @retval "0" for OPAMP1, "1" for OPAMP2, "2" for OPAMP3 141 */ 142 #define OPAMP_INSTANCE_DECIMAL(__HANDLE__) \ 143 ( ( ((__HANDLE__)->Instance == OPAMP1) \ 144 )? \ 145 ((uint32_t)0) \ 146 : \ 147 ( ( ((__HANDLE__)->Instance == OPAMP2) \ 148 )? \ 149 ((uint32_t)1) \ 150 : \ 151 ((uint32_t)2) \ 152 ) \ 153 ) 154 #else 155 /** 156 * @brief Get the OPAMP instance in decimal number for further 157 * processing needs by HAL OPAMP driver functions. 158 * @param __HANDLE__: OPAMP handle 159 * @retval "0" for OPAMP1, "1" for OPAMP2 160 */ 161 #define OPAMP_INSTANCE_DECIMAL(__HANDLE__) \ 162 ( ( ((__HANDLE__)->Instance == OPAMP1) \ 163 )? \ 164 ((uint32_t)0) \ 165 : \ 166 ((uint32_t)1) \ 167 ) 168 #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ 169 170 #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) 171 172 /** 173 * @brief Check OPAMP non-inverting input in function of OPAMPx instance 174 * @param __HANDLE__: OPAMP handle 175 * @param INPUT: OPAMP non-inverting input 176 * @retval None 177 */ 178 #define IS_OPAMP_NONINVERTING_INPUT_CHECK_INSTANCE(__HANDLE__, INPUT) \ 179 ( ( ((__HANDLE__)->Instance == OPAMP1) \ 180 )? \ 181 ( \ 182 ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ 183 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) \ 184 ) \ 185 : \ 186 ( ( ((__HANDLE__)->Instance == OPAMP2) \ 187 )? \ 188 ( \ 189 ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ 190 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) || \ 191 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH2) \ 192 ) \ 193 : \ 194 ( \ 195 ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ 196 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH2) \ 197 ) \ 198 ) \ 199 ) 200 #else 201 /** 202 * @brief Check OPAMP non-inverting input in function of OPAMPx instance 203 * @param __HANDLE__: OPAMP handle 204 * @param INPUT: OPAMP non-inverting input 205 * @retval None 206 */ 207 #define IS_OPAMP_NONINVERTING_INPUT_CHECK_INSTANCE(__HANDLE__, INPUT) \ 208 ( ( ((__HANDLE__)->Instance == OPAMP1) \ 209 )? \ 210 ( \ 211 ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ 212 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) \ 213 ) \ 214 : \ 215 ( \ 216 ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \ 217 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) || \ 218 ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH2) \ 219 ) \ 220 ) 221 #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ 222 223 /** 224 * @} 225 */ 226 227 /* Exported functions --------------------------------------------------------*/ 228 /** @addtogroup OPAMPEx_Exported_Functions 229 * @{ 230 */ 231 232 /* I/O operation functions *****************************************************/ 233 /** @defgroup OPAMPEx_Exported_Functions_Group1 Extended Input and Output operation functions 234 * @{ 235 */ 236 #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD) 237 HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2, OPAMP_HandleTypeDef *hopamp3); 238 #else 239 HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2); 240 #endif /* STM32L151xD || STM32L152xD || STM32L162xD */ 241 /** 242 * @} 243 */ 244 /* Peripheral Control functions ************************************************/ 245 /** @addtogroup OPAMPEx_Exported_Functions_Group2 246 * @{ 247 */ 248 HAL_StatusTypeDef HAL_OPAMPEx_Unlock(OPAMP_HandleTypeDef *hopamp); 249 /** 250 * @} 251 */ 252 253 /** 254 * @} 255 */ 256 257 /** 258 * @} 259 */ 260 261 /** 262 * @} 263 */ 264 265 #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX || STM32L162xC || STM32L152xC || STM32L151xC */ 266 267 #ifdef __cplusplus 268 } 269 #endif 270 271 272 #endif /* __STM32L1xx_HAL_OPAMP_EX_H */ 273 274 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 275