The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /**
AnnaBridge 171:3a7713b1edbc 2 ******************************************************************************
AnnaBridge 171:3a7713b1edbc 3 * @file stm32l1xx_ll_opamp.h
AnnaBridge 171:3a7713b1edbc 4 * @author MCD Application Team
AnnaBridge 171:3a7713b1edbc 5 * @brief Header file of OPAMP LL module.
AnnaBridge 171:3a7713b1edbc 6 ******************************************************************************
AnnaBridge 171:3a7713b1edbc 7 * @attention
AnnaBridge 171:3a7713b1edbc 8 *
AnnaBridge 171:3a7713b1edbc 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
AnnaBridge 171:3a7713b1edbc 10 *
AnnaBridge 171:3a7713b1edbc 11 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 171:3a7713b1edbc 12 * are permitted provided that the following conditions are met:
AnnaBridge 171:3a7713b1edbc 13 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 171:3a7713b1edbc 14 * this list of conditions and the following disclaimer.
AnnaBridge 171:3a7713b1edbc 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 171:3a7713b1edbc 16 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 171:3a7713b1edbc 17 * and/or other materials provided with the distribution.
AnnaBridge 171:3a7713b1edbc 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 171:3a7713b1edbc 19 * may be used to endorse or promote products derived from this software
AnnaBridge 171:3a7713b1edbc 20 * without specific prior written permission.
AnnaBridge 171:3a7713b1edbc 21 *
AnnaBridge 171:3a7713b1edbc 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 171:3a7713b1edbc 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 171:3a7713b1edbc 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 171:3a7713b1edbc 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 171:3a7713b1edbc 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 171:3a7713b1edbc 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 171:3a7713b1edbc 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 171:3a7713b1edbc 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 171:3a7713b1edbc 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 171:3a7713b1edbc 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 171:3a7713b1edbc 32 *
AnnaBridge 171:3a7713b1edbc 33 ******************************************************************************
AnnaBridge 171:3a7713b1edbc 34 */
AnnaBridge 171:3a7713b1edbc 35
AnnaBridge 171:3a7713b1edbc 36 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 171:3a7713b1edbc 37 #ifndef __STM32L1xx_LL_OPAMP_H
AnnaBridge 171:3a7713b1edbc 38 #define __STM32L1xx_LL_OPAMP_H
AnnaBridge 171:3a7713b1edbc 39
AnnaBridge 171:3a7713b1edbc 40 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 41 extern "C" {
AnnaBridge 171:3a7713b1edbc 42 #endif
AnnaBridge 171:3a7713b1edbc 43
AnnaBridge 171:3a7713b1edbc 44 /* Includes ------------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 45 #include "stm32l1xx.h"
AnnaBridge 171:3a7713b1edbc 46
AnnaBridge 171:3a7713b1edbc 47 /** @addtogroup STM32L1xx_LL_Driver
AnnaBridge 171:3a7713b1edbc 48 * @{
AnnaBridge 171:3a7713b1edbc 49 */
AnnaBridge 171:3a7713b1edbc 50
AnnaBridge 171:3a7713b1edbc 51 #if defined (OPAMP1) || defined (OPAMP2) || defined (OPAMP3)
AnnaBridge 171:3a7713b1edbc 52
AnnaBridge 171:3a7713b1edbc 53 /** @defgroup OPAMP_LL OPAMP
AnnaBridge 171:3a7713b1edbc 54 * @{
AnnaBridge 171:3a7713b1edbc 55 */
AnnaBridge 171:3a7713b1edbc 56
AnnaBridge 171:3a7713b1edbc 57 /* Private types -------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 58 /* Private variables ---------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 59
AnnaBridge 171:3a7713b1edbc 60 /* Private constants ---------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 61 /** @defgroup OPAMP_LL_Private_Constants OPAMP Private Constants
AnnaBridge 171:3a7713b1edbc 62 * @{
AnnaBridge 171:3a7713b1edbc 63 */
AnnaBridge 171:3a7713b1edbc 64
AnnaBridge 171:3a7713b1edbc 65 /* Internal mask for OPAMP power mode: */
AnnaBridge 171:3a7713b1edbc 66 /* To select into literal LL_OPAMP_POWERMODE_x the relevant bits for: */
AnnaBridge 171:3a7713b1edbc 67 /* - OPAMP power mode into control register */
AnnaBridge 171:3a7713b1edbc 68 /* - OPAMP trimming register offset */
AnnaBridge 171:3a7713b1edbc 69
AnnaBridge 171:3a7713b1edbc 70 /* Internal register offset for OPAMP trimming configuration */
AnnaBridge 171:3a7713b1edbc 71 #define OPAMP_POWERMODE_OTR_REGOFFSET (0x00000000U)
AnnaBridge 171:3a7713b1edbc 72 #define OPAMP_POWERMODE_LPOTR_REGOFFSET (0x00000001U)
AnnaBridge 171:3a7713b1edbc 73 #define OPAMP_POWERMODE_OTR_REGOFFSET_MASK (OPAMP_POWERMODE_OTR_REGOFFSET | OPAMP_POWERMODE_LPOTR_REGOFFSET)
AnnaBridge 171:3a7713b1edbc 74
AnnaBridge 171:3a7713b1edbc 75 /* Mask for OPAMP power mode into control register */
AnnaBridge 171:3a7713b1edbc 76 #define OPAMP_POWERMODE_CSR_BIT_MASK (OPAMP_CSR_OPA1LPM)
AnnaBridge 171:3a7713b1edbc 77
AnnaBridge 171:3a7713b1edbc 78 /* Internal mask for OPAMP trimming of transistors differential pair NMOS */
AnnaBridge 171:3a7713b1edbc 79 /* or PMOS. */
AnnaBridge 171:3a7713b1edbc 80 /* To select into literal LL_OPAMP_TRIMMING_x the relevant bits for: */
AnnaBridge 171:3a7713b1edbc 81 /* - OPAMP trimming selection of transistors differential pair */
AnnaBridge 171:3a7713b1edbc 82 /* - OPAMP trimming values of transistors differential pair */
AnnaBridge 171:3a7713b1edbc 83 #define OPAMP_TRIMMING_SELECT_SW_OFFSET (16U)
AnnaBridge 171:3a7713b1edbc 84 #define OPAMP_TRIMMING_SELECT_MASK ((OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA1CAL_L) << OPAMP_TRIMMING_SELECT_SW_OFFSET)
AnnaBridge 171:3a7713b1edbc 85 #define OPAMP_TRIMMING_VALUE_MASK (OPAMP_OTR_AO1_OPT_OFFSET_TRIM_HIGH | OPAMP_OTR_AO1_OPT_OFFSET_TRIM_LOW)
AnnaBridge 171:3a7713b1edbc 86
AnnaBridge 171:3a7713b1edbc 87 /**
AnnaBridge 171:3a7713b1edbc 88 * @}
AnnaBridge 171:3a7713b1edbc 89 */
AnnaBridge 171:3a7713b1edbc 90
AnnaBridge 171:3a7713b1edbc 91
AnnaBridge 171:3a7713b1edbc 92 /* Private macros ------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 93 /** @defgroup OPAMP_LL_Private_Macros OPAMP Private Macros
AnnaBridge 171:3a7713b1edbc 94 * @{
AnnaBridge 171:3a7713b1edbc 95 */
AnnaBridge 171:3a7713b1edbc 96
AnnaBridge 171:3a7713b1edbc 97 /**
AnnaBridge 171:3a7713b1edbc 98 * @brief Driver macro reserved for internal use: set a pointer to
AnnaBridge 171:3a7713b1edbc 99 * a register from a register basis from which an offset
AnnaBridge 171:3a7713b1edbc 100 * is applied.
AnnaBridge 171:3a7713b1edbc 101 * @param __REG__ Register basis from which the offset is applied.
AnnaBridge 171:3a7713b1edbc 102 * @param __REG_OFFSET__ Offset to be applied (unit: number of registers).
AnnaBridge 171:3a7713b1edbc 103 * @retval Register address
AnnaBridge 171:3a7713b1edbc 104 */
AnnaBridge 171:3a7713b1edbc 105 #define __OPAMP_PTR_REG_OFFSET(__REG__, __REG_OFFSET__) \
AnnaBridge 171:3a7713b1edbc 106 ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFSET__) << 2U))))
AnnaBridge 171:3a7713b1edbc 107
AnnaBridge 171:3a7713b1edbc 108 /**
AnnaBridge 171:3a7713b1edbc 109 * @brief Driver macro reserved for internal use: from OPAMP instance
AnnaBridge 171:3a7713b1edbc 110 * selected, return the instance number in decimal format.
AnnaBridge 171:3a7713b1edbc 111 * @param __OPAMP_INSTANCE__ OPAMP instance
AnnaBridge 171:3a7713b1edbc 112 * @retval Instance number in decimal format: value "0" for OPAMP1,
AnnaBridge 171:3a7713b1edbc 113 * value "1" for OPAMP2, value "2" for OPAMP3.
AnnaBridge 171:3a7713b1edbc 114 */
AnnaBridge 171:3a7713b1edbc 115 #define __OPAMP_INSTANCE_DECIMAL(__OPAMP_INSTANCE__) \
AnnaBridge 171:3a7713b1edbc 116 ((uint32_t)(__OPAMP_INSTANCE__) - OPAMP_BASE)
AnnaBridge 171:3a7713b1edbc 117
AnnaBridge 171:3a7713b1edbc 118 /**
AnnaBridge 171:3a7713b1edbc 119 * @brief Driver macro reserved for internal use: from OPAMP instance
AnnaBridge 171:3a7713b1edbc 120 * selected, set offset of bits into OPAMP register.
AnnaBridge 171:3a7713b1edbc 121 * @note Since all OPAMP instances are sharing the same register
AnnaBridge 171:3a7713b1edbc 122 * with 3 area of bits with an offset of 8 bits (except bits
AnnaBridge 171:3a7713b1edbc 123 * OPAxCALOUT, OPARANGE, S7SEL2), this function
AnnaBridge 171:3a7713b1edbc 124 * returns .
AnnaBridge 171:3a7713b1edbc 125 * @param __OPAMP_INSTANCE__ OPAMP instance
AnnaBridge 171:3a7713b1edbc 126 * @retval Bits offset in register 32 bits: value "0" for OPAMP1,
AnnaBridge 171:3a7713b1edbc 127 * value "8" for OPAMP2, value "16" for OPAMP3
AnnaBridge 171:3a7713b1edbc 128 */
AnnaBridge 171:3a7713b1edbc 129 #define __OPAMP_INSTANCE_BITOFFSET(__OPAMP_INSTANCE__) \
AnnaBridge 171:3a7713b1edbc 130 (((uint32_t)(__OPAMP_INSTANCE__) - OPAMP_BASE) << 3U)
AnnaBridge 171:3a7713b1edbc 131
AnnaBridge 171:3a7713b1edbc 132 /**
AnnaBridge 171:3a7713b1edbc 133 * @brief Driver macro reserved for internal use: from OPAMP instance
AnnaBridge 171:3a7713b1edbc 134 * selected, return whether it corresponds to instance OPAMP2.
AnnaBridge 171:3a7713b1edbc 135 * @param __OPAMP_INSTANCE__ OPAMP instance
AnnaBridge 171:3a7713b1edbc 136 * @retval Instance number in decimal format: value "0" for OPAMP1 or OPAMP3,
AnnaBridge 171:3a7713b1edbc 137 * value "1" for OPAMP2.
AnnaBridge 171:3a7713b1edbc 138 */
AnnaBridge 171:3a7713b1edbc 139 #define __OPAMP_IS_INSTANCE_OPAMP2(__OPAMP_INSTANCE__) \
AnnaBridge 171:3a7713b1edbc 140 (((uint32_t)(__OPAMP_INSTANCE__) - OPAMP_BASE) % 2)
AnnaBridge 171:3a7713b1edbc 141
AnnaBridge 171:3a7713b1edbc 142 /**
AnnaBridge 171:3a7713b1edbc 143 * @}
AnnaBridge 171:3a7713b1edbc 144 */
AnnaBridge 171:3a7713b1edbc 145
AnnaBridge 171:3a7713b1edbc 146
AnnaBridge 171:3a7713b1edbc 147 /* Exported types ------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 148 #if defined(USE_FULL_LL_DRIVER)
AnnaBridge 171:3a7713b1edbc 149 /** @defgroup OPAMP_LL_ES_INIT OPAMP Exported Init structure
AnnaBridge 171:3a7713b1edbc 150 * @{
AnnaBridge 171:3a7713b1edbc 151 */
AnnaBridge 171:3a7713b1edbc 152
AnnaBridge 171:3a7713b1edbc 153 /**
AnnaBridge 171:3a7713b1edbc 154 * @brief Structure definition of some features of OPAMP instance.
AnnaBridge 171:3a7713b1edbc 155 */
AnnaBridge 171:3a7713b1edbc 156 typedef struct
AnnaBridge 171:3a7713b1edbc 157 {
AnnaBridge 171:3a7713b1edbc 158 uint32_t PowerMode; /*!< Set OPAMP power mode.
AnnaBridge 171:3a7713b1edbc 159 This parameter can be a value of @ref OPAMP_LL_EC_POWERMODE
AnnaBridge 171:3a7713b1edbc 160
AnnaBridge 171:3a7713b1edbc 161 This feature can be modified afterwards using unitary function @ref LL_OPAMP_SetPowerMode(). */
AnnaBridge 171:3a7713b1edbc 162
AnnaBridge 171:3a7713b1edbc 163 uint32_t FunctionalMode; /*!< Set OPAMP functional mode by setting internal connections: OPAMP operation in standalone, follower, ...
AnnaBridge 171:3a7713b1edbc 164 This parameter can be a value of @ref OPAMP_LL_EC_FUNCTIONAL_MODE
AnnaBridge 171:3a7713b1edbc 165
AnnaBridge 171:3a7713b1edbc 166 This feature can be modified afterwards using unitary function @ref LL_OPAMP_SetFunctionalMode(). */
AnnaBridge 171:3a7713b1edbc 167
AnnaBridge 171:3a7713b1edbc 168 uint32_t InputNonInverting; /*!< Set OPAMP input non-inverting connection.
AnnaBridge 171:3a7713b1edbc 169 This parameter can be a value of @ref OPAMP_LL_EC_INPUT_NONINVERTING
AnnaBridge 171:3a7713b1edbc 170
AnnaBridge 171:3a7713b1edbc 171 This feature can be modified afterwards using unitary function @ref LL_OPAMP_SetInputNonInverting(). */
AnnaBridge 171:3a7713b1edbc 172
AnnaBridge 171:3a7713b1edbc 173 uint32_t InputInverting; /*!< Set OPAMP inverting input connection.
AnnaBridge 171:3a7713b1edbc 174 This parameter can be a value of @ref OPAMP_LL_EC_INPUT_INVERTING
AnnaBridge 171:3a7713b1edbc 175 @note OPAMP inverting input is used with OPAMP in mode standalone. Otherwise (OPAMP in mode follower), OPAMP inverting input is not used (not connected to GPIO pin), this parameter is discarded.
AnnaBridge 171:3a7713b1edbc 176
AnnaBridge 171:3a7713b1edbc 177 This feature can be modified afterwards using unitary function @ref LL_OPAMP_SetInputInverting(). */
AnnaBridge 171:3a7713b1edbc 178
AnnaBridge 171:3a7713b1edbc 179 } LL_OPAMP_InitTypeDef;
AnnaBridge 171:3a7713b1edbc 180
AnnaBridge 171:3a7713b1edbc 181 /**
AnnaBridge 171:3a7713b1edbc 182 * @}
AnnaBridge 171:3a7713b1edbc 183 */
AnnaBridge 171:3a7713b1edbc 184 #endif /* USE_FULL_LL_DRIVER */
AnnaBridge 171:3a7713b1edbc 185
AnnaBridge 171:3a7713b1edbc 186 /* Exported constants --------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 187 /** @defgroup OPAMP_LL_Exported_Constants OPAMP Exported Constants
AnnaBridge 171:3a7713b1edbc 188 * @{
AnnaBridge 171:3a7713b1edbc 189 */
AnnaBridge 171:3a7713b1edbc 190
AnnaBridge 171:3a7713b1edbc 191 /** @defgroup OPAMP_LL_EC_POWERSUPPLY_RANGE OPAMP power supply range
AnnaBridge 171:3a7713b1edbc 192 * @{
AnnaBridge 171:3a7713b1edbc 193 */
AnnaBridge 171:3a7713b1edbc 194 #define LL_OPAMP_POWERSUPPLY_RANGE_LOW (0x00000000U) /*!< Power supply range low. On STM32L1 serie: Vdda lower than 2.4V. */
AnnaBridge 171:3a7713b1edbc 195 #define LL_OPAMP_POWERSUPPLY_RANGE_HIGH (OPAMP_CSR_AOP_RANGE) /*!< Power supply range high. On STM32L1 serie: Vdda higher than 2.4V. */
AnnaBridge 171:3a7713b1edbc 196 /**
AnnaBridge 171:3a7713b1edbc 197 * @}
AnnaBridge 171:3a7713b1edbc 198 */
AnnaBridge 171:3a7713b1edbc 199
AnnaBridge 171:3a7713b1edbc 200 /** @defgroup OPAMP_LL_EC_POWERMODE OPAMP power mode
AnnaBridge 171:3a7713b1edbc 201 * @{
AnnaBridge 171:3a7713b1edbc 202 */
AnnaBridge 171:3a7713b1edbc 203 #define LL_OPAMP_POWERMODE_NORMAL (OPAMP_POWERMODE_OTR_REGOFFSET) /*!< OPAMP power mode normal */
AnnaBridge 171:3a7713b1edbc 204 #define LL_OPAMP_POWERMODE_LOWPOWER (OPAMP_POWERMODE_LPOTR_REGOFFSET | OPAMP_CSR_OPA1LPM) /*!< OPAMP power mode low-power */
AnnaBridge 171:3a7713b1edbc 205 /**
AnnaBridge 171:3a7713b1edbc 206 * @}
AnnaBridge 171:3a7713b1edbc 207 */
AnnaBridge 171:3a7713b1edbc 208
AnnaBridge 171:3a7713b1edbc 209 /** @defgroup OPAMP_LL_EC_MODE OPAMP mode calibration or functional.
AnnaBridge 171:3a7713b1edbc 210 * @{
AnnaBridge 171:3a7713b1edbc 211 */
AnnaBridge 171:3a7713b1edbc 212 #define LL_OPAMP_MODE_FUNCTIONAL (0x00000000U) /*!< OPAMP functional mode */
AnnaBridge 171:3a7713b1edbc 213 #define LL_OPAMP_MODE_CALIBRATION (OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1 | OPAMP_CSR_S7SEL2) /*!< OPAMP calibration mode (on STM32L1 serie, it corresponds to all OPAMP input internal switches opened) */
AnnaBridge 171:3a7713b1edbc 214 /**
AnnaBridge 171:3a7713b1edbc 215 * @}
AnnaBridge 171:3a7713b1edbc 216 */
AnnaBridge 171:3a7713b1edbc 217
AnnaBridge 171:3a7713b1edbc 218 /** @defgroup OPAMP_LL_EC_FUNCTIONAL_MODE OPAMP functional mode
AnnaBridge 171:3a7713b1edbc 219 * @{
AnnaBridge 171:3a7713b1edbc 220 */
AnnaBridge 171:3a7713b1edbc 221 #define LL_OPAMP_MODE_STANDALONE (0x00000000U) /*!< OPAMP functional mode, OPAMP operation in standalone (on STM32L1 serie, it corresponds to OPAMP internal switches S3 opened (switch SanB state depends on switch S4 state)) */
AnnaBridge 171:3a7713b1edbc 222 #define LL_OPAMP_MODE_FOLLOWER (OPAMP_CSR_S3SEL1) /*!< OPAMP functional mode, OPAMP operation in follower (on STM32L1 serie, it corresponds to OPAMP internal switches S3 and SanB closed) */
AnnaBridge 171:3a7713b1edbc 223 /**
AnnaBridge 171:3a7713b1edbc 224 * @}
AnnaBridge 171:3a7713b1edbc 225 */
AnnaBridge 171:3a7713b1edbc 226
AnnaBridge 171:3a7713b1edbc 227 /** @defgroup OPAMP_LL_EC_INPUT_NONINVERTING OPAMP input non-inverting
AnnaBridge 171:3a7713b1edbc 228 * @{
AnnaBridge 171:3a7713b1edbc 229 */
AnnaBridge 171:3a7713b1edbc 230 #define LL_OPAMP_INPUT_NONINVERT_IO0 (OPAMP_CSR_S5SEL1) /*!< OPAMP non inverting input connected to GPIO pin (low leakage input) */
AnnaBridge 171:3a7713b1edbc 231 #define LL_OPAMP_INPUT_NONINV_DAC1_CH1 (OPAMP_CSR_S6SEL1) /*!< OPAMP non inverting input connected to DAC1 channel1 output (specific to OPAMP instances: OPAMP1, OPAMP2) */
AnnaBridge 171:3a7713b1edbc 232 #define LL_OPAMP_INPUT_NONINV_DAC1_CH2 (OPAMP_CSR_S7SEL2) /*!< OPAMP non inverting input connected to DAC1 channel2 output (specific to OPAMP instances: OPAMP2, OPAMP3) */
AnnaBridge 171:3a7713b1edbc 233 #if defined(OPAMP3)
AnnaBridge 171:3a7713b1edbc 234 #define LL_OPAMP_INPUT_NONINV_DAC1_CH2_OPAMP3 (OPAMP_CSR_S6SEL1) /*!< OPAMP non inverting input connected to DAC1 channel2 output (specific to OPAMP instances: OPAMP3) */
AnnaBridge 171:3a7713b1edbc 235 #endif
AnnaBridge 171:3a7713b1edbc 236 /**
AnnaBridge 171:3a7713b1edbc 237 * @}
AnnaBridge 171:3a7713b1edbc 238 */
AnnaBridge 171:3a7713b1edbc 239
AnnaBridge 171:3a7713b1edbc 240 /** @defgroup OPAMP_LL_EC_INPUT_INVERTING OPAMP input inverting
AnnaBridge 171:3a7713b1edbc 241 * @{
AnnaBridge 171:3a7713b1edbc 242 */
AnnaBridge 171:3a7713b1edbc 243 #define LL_OPAMP_INPUT_INVERT_IO0 (OPAMP_CSR_S4SEL1) /*!< OPAMP inverting input connected to GPIO pin (low leakage input). Note: OPAMP inverting input is used with OPAMP in mode standalone. Otherwise (OPAMP in mode follower), OPAMP inverting input is not used (not connected to GPIO pin). */
AnnaBridge 171:3a7713b1edbc 244 #define LL_OPAMP_INPUT_INVERT_IO1 (OPAMP_CSR_ANAWSEL1) /*!< OPAMP inverting input connected to GPIO pin (alternative IO pin, not low leakage, availability depends on STM32L1 serie devices packages). Note: OPAMP inverting input is used with OPAMP in mode standalone. Otherwise (OPAMP in mode follower), OPAMP inverting input is not used (not connected to GPIO pin). */
AnnaBridge 171:3a7713b1edbc 245 #define LL_OPAMP_INPUT_INVERT_CONNECT_NO (0x00000000U) /*!< OPAMP inverting input not externally connected (intended for OPAMP in mode follower) */
AnnaBridge 171:3a7713b1edbc 246 /**
AnnaBridge 171:3a7713b1edbc 247 * @}
AnnaBridge 171:3a7713b1edbc 248 */
AnnaBridge 171:3a7713b1edbc 249
AnnaBridge 171:3a7713b1edbc 250 /** @defgroup OPAMP_LL_EC_TRIMMING_MODE OPAMP trimming mode
AnnaBridge 171:3a7713b1edbc 251 * @{
AnnaBridge 171:3a7713b1edbc 252 */
AnnaBridge 171:3a7713b1edbc 253 #define LL_OPAMP_TRIMMING_FACTORY (0x00000000U) /*!< OPAMP trimming factors set to factory values */
AnnaBridge 171:3a7713b1edbc 254 #define LL_OPAMP_TRIMMING_USER (OPAMP_OTR_OT_USER) /*!< OPAMP trimming factors set to user values */
AnnaBridge 171:3a7713b1edbc 255 /**
AnnaBridge 171:3a7713b1edbc 256 * @}
AnnaBridge 171:3a7713b1edbc 257 */
AnnaBridge 171:3a7713b1edbc 258
AnnaBridge 171:3a7713b1edbc 259 /** @defgroup OPAMP_LL_EC_TRIMMING_TRANSISTORS_DIFF_PAIR OPAMP trimming of transistors differential pair NMOS or PMOS
AnnaBridge 171:3a7713b1edbc 260 * @{
AnnaBridge 171:3a7713b1edbc 261 */
AnnaBridge 171:3a7713b1edbc 262 #define LL_OPAMP_TRIMMING_NMOS (OPAMP_OTR_AO1_OPT_OFFSET_TRIM_HIGH | (OPAMP_CSR_OPA1CAL_H << OPAMP_TRIMMING_SELECT_SW_OFFSET)) /*!< OPAMP trimming of transistors differential pair NMOS */
AnnaBridge 171:3a7713b1edbc 263 #define LL_OPAMP_TRIMMING_PMOS (OPAMP_OTR_AO1_OPT_OFFSET_TRIM_LOW | (OPAMP_CSR_OPA1CAL_L << OPAMP_TRIMMING_SELECT_SW_OFFSET)) /*!< OPAMP trimming of transistors differential pair PMOS */
AnnaBridge 171:3a7713b1edbc 264 #define LL_OPAMP_TRIMMING_NONE (0x00000000U) /*!< OPAMP trimming unselect transistors differential pair NMOS and PMOs */
AnnaBridge 171:3a7713b1edbc 265 /**
AnnaBridge 171:3a7713b1edbc 266 * @}
AnnaBridge 171:3a7713b1edbc 267 */
AnnaBridge 171:3a7713b1edbc 268
AnnaBridge 171:3a7713b1edbc 269 /** @defgroup OPAMP_LL_EC_HW_DELAYS Definitions of OPAMP hardware constraints delays
AnnaBridge 171:3a7713b1edbc 270 * @note Only OPAMP IP HW delays are defined in OPAMP LL driver driver,
AnnaBridge 171:3a7713b1edbc 271 * not timeout values.
AnnaBridge 171:3a7713b1edbc 272 * For details on delays values, refer to descriptions in source code
AnnaBridge 171:3a7713b1edbc 273 * above each literal definition.
AnnaBridge 171:3a7713b1edbc 274 * @{
AnnaBridge 171:3a7713b1edbc 275 */
AnnaBridge 171:3a7713b1edbc 276
AnnaBridge 171:3a7713b1edbc 277 /* Delay for OPAMP startup time (transition from state disable to enable). */
AnnaBridge 171:3a7713b1edbc 278 /* Note: OPAMP startup time depends on board application environment: */
AnnaBridge 171:3a7713b1edbc 279 /* impedance connected to OPAMP output. */
AnnaBridge 171:3a7713b1edbc 280 /* The delay below is specified under conditions: */
AnnaBridge 171:3a7713b1edbc 281 /* - OPAMP in mode low power */
AnnaBridge 171:3a7713b1edbc 282 /* - load impedance of 4kOhm (min), 50pF (max) */
AnnaBridge 171:3a7713b1edbc 283 /* Literal set to maximum value (refer to device datasheet, */
AnnaBridge 171:3a7713b1edbc 284 /* parameter "tWAKEUP"). */
AnnaBridge 171:3a7713b1edbc 285 /* Unit: us */
AnnaBridge 171:3a7713b1edbc 286 #define LL_OPAMP_DELAY_STARTUP_US (30U) /*!< Delay for OPAMP startup time */
AnnaBridge 171:3a7713b1edbc 287
AnnaBridge 171:3a7713b1edbc 288 /**
AnnaBridge 171:3a7713b1edbc 289 * @}
AnnaBridge 171:3a7713b1edbc 290 */
AnnaBridge 171:3a7713b1edbc 291
AnnaBridge 171:3a7713b1edbc 292 /**
AnnaBridge 171:3a7713b1edbc 293 * @}
AnnaBridge 171:3a7713b1edbc 294 */
AnnaBridge 171:3a7713b1edbc 295
AnnaBridge 171:3a7713b1edbc 296 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 297 /** @defgroup OPAMP_LL_Exported_Macros OPAMP Exported Macros
AnnaBridge 171:3a7713b1edbc 298 * @{
AnnaBridge 171:3a7713b1edbc 299 */
AnnaBridge 171:3a7713b1edbc 300 /** @defgroup OPAMP_LL_EM_WRITE_READ Common write and read registers macro
AnnaBridge 171:3a7713b1edbc 301 * @{
AnnaBridge 171:3a7713b1edbc 302 */
AnnaBridge 171:3a7713b1edbc 303 /**
AnnaBridge 171:3a7713b1edbc 304 * @brief Write a value in OPAMP register
AnnaBridge 171:3a7713b1edbc 305 * @param __INSTANCE__ OPAMP Instance
AnnaBridge 171:3a7713b1edbc 306 * @param __REG__ Register to be written
AnnaBridge 171:3a7713b1edbc 307 * @param __VALUE__ Value to be written in the register
AnnaBridge 171:3a7713b1edbc 308 * @retval None
AnnaBridge 171:3a7713b1edbc 309 */
AnnaBridge 171:3a7713b1edbc 310 #define LL_OPAMP_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
AnnaBridge 171:3a7713b1edbc 311
AnnaBridge 171:3a7713b1edbc 312 /**
AnnaBridge 171:3a7713b1edbc 313 * @brief Read a value in OPAMP register
AnnaBridge 171:3a7713b1edbc 314 * @param __INSTANCE__ OPAMP Instance
AnnaBridge 171:3a7713b1edbc 315 * @param __REG__ Register to be read
AnnaBridge 171:3a7713b1edbc 316 * @retval Register value
AnnaBridge 171:3a7713b1edbc 317 */
AnnaBridge 171:3a7713b1edbc 318 #define LL_OPAMP_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
AnnaBridge 171:3a7713b1edbc 319 /**
AnnaBridge 171:3a7713b1edbc 320 * @}
AnnaBridge 171:3a7713b1edbc 321 */
AnnaBridge 171:3a7713b1edbc 322
AnnaBridge 171:3a7713b1edbc 323 /** @defgroup OPAMP_LL_EM_HELPER_MACRO OPAMP helper macro
AnnaBridge 171:3a7713b1edbc 324 * @{
AnnaBridge 171:3a7713b1edbc 325 */
AnnaBridge 171:3a7713b1edbc 326
AnnaBridge 171:3a7713b1edbc 327 /**
AnnaBridge 171:3a7713b1edbc 328 * @brief Helper macro to select the OPAMP common instance
AnnaBridge 171:3a7713b1edbc 329 * to which is belonging the selected OPAMP instance.
AnnaBridge 171:3a7713b1edbc 330 * @note OPAMP common register instance can be used to
AnnaBridge 171:3a7713b1edbc 331 * set parameters common to several OPAMP instances.
AnnaBridge 171:3a7713b1edbc 332 * Refer to functions having argument "OPAMPxy_COMMON" as parameter.
AnnaBridge 171:3a7713b1edbc 333 * @param __OPAMPx__ OPAMP instance
AnnaBridge 171:3a7713b1edbc 334 * @retval OPAMP common instance
AnnaBridge 171:3a7713b1edbc 335 */
AnnaBridge 171:3a7713b1edbc 336 #if defined(OPAMP1) && defined(OPAMP2) && defined(OPAMP3)
AnnaBridge 171:3a7713b1edbc 337 #define __LL_OPAMP_COMMON_INSTANCE(__OPAMPx__) \
AnnaBridge 171:3a7713b1edbc 338 (OPAMP123_COMMON)
AnnaBridge 171:3a7713b1edbc 339 #else
AnnaBridge 171:3a7713b1edbc 340 #define __LL_OPAMP_COMMON_INSTANCE(__OPAMPx__) \
AnnaBridge 171:3a7713b1edbc 341 (OPAMP12_COMMON)
AnnaBridge 171:3a7713b1edbc 342 #endif
AnnaBridge 171:3a7713b1edbc 343
AnnaBridge 171:3a7713b1edbc 344 /**
AnnaBridge 171:3a7713b1edbc 345 * @brief Helper macro to check if all OPAMP instances sharing the same
AnnaBridge 171:3a7713b1edbc 346 * OPAMP common instance are disabled.
AnnaBridge 171:3a7713b1edbc 347 * @note This check is required by functions with setting conditioned to
AnnaBridge 171:3a7713b1edbc 348 * OPAMP state:
AnnaBridge 171:3a7713b1edbc 349 * All OPAMP instances of the OPAMP common group must be disabled.
AnnaBridge 171:3a7713b1edbc 350 * Refer to functions having argument "OPAMPxy_COMMON" as parameter.
AnnaBridge 171:3a7713b1edbc 351 * @retval 0: All OPAMP instances sharing the same OPAMP common instance
AnnaBridge 171:3a7713b1edbc 352 * are disabled.
AnnaBridge 171:3a7713b1edbc 353 * 1: At least one OPAMP instance sharing the same OPAMP common instance
AnnaBridge 171:3a7713b1edbc 354 * is enabled
AnnaBridge 171:3a7713b1edbc 355 */
AnnaBridge 171:3a7713b1edbc 356 #if defined(OPAMP1) && defined(OPAMP2) && defined(OPAMP3)
AnnaBridge 171:3a7713b1edbc 357 #define __LL_OPAMP_IS_ENABLED_ALL_COMMON_INSTANCE() \
AnnaBridge 171:3a7713b1edbc 358 (LL_OPAMP_IsEnabled(OPAMP1) | \
AnnaBridge 171:3a7713b1edbc 359 LL_OPAMP_IsEnabled(OPAMP2) | \
AnnaBridge 171:3a7713b1edbc 360 LL_OPAMP_IsEnabled(OPAMP3) )
AnnaBridge 171:3a7713b1edbc 361 #else
AnnaBridge 171:3a7713b1edbc 362 #define __LL_OPAMP_IS_ENABLED_ALL_COMMON_INSTANCE() \
AnnaBridge 171:3a7713b1edbc 363 (LL_OPAMP_IsEnabled(OPAMP1) | \
AnnaBridge 171:3a7713b1edbc 364 LL_OPAMP_IsEnabled(OPAMP2) )
AnnaBridge 171:3a7713b1edbc 365 #endif
AnnaBridge 171:3a7713b1edbc 366
AnnaBridge 171:3a7713b1edbc 367 /**
AnnaBridge 171:3a7713b1edbc 368 * @}
AnnaBridge 171:3a7713b1edbc 369 */
AnnaBridge 171:3a7713b1edbc 370
AnnaBridge 171:3a7713b1edbc 371 /**
AnnaBridge 171:3a7713b1edbc 372 * @}
AnnaBridge 171:3a7713b1edbc 373 */
AnnaBridge 171:3a7713b1edbc 374
AnnaBridge 171:3a7713b1edbc 375 /* Exported functions --------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 376 /** @defgroup OPAMP_LL_Exported_Functions OPAMP Exported Functions
AnnaBridge 171:3a7713b1edbc 377 * @{
AnnaBridge 171:3a7713b1edbc 378 */
AnnaBridge 171:3a7713b1edbc 379
AnnaBridge 171:3a7713b1edbc 380 /** @defgroup OPAMP_LL_EF_Configuration_opamp_common Configuration of OPAMP hierarchical scope: common to several OPAMP instances
AnnaBridge 171:3a7713b1edbc 381 * @{
AnnaBridge 171:3a7713b1edbc 382 */
AnnaBridge 171:3a7713b1edbc 383
AnnaBridge 171:3a7713b1edbc 384 /**
AnnaBridge 171:3a7713b1edbc 385 * @brief Set OPAMP power range.
AnnaBridge 171:3a7713b1edbc 386 * @note The OPAMP power range applies to several OPAMP instances
AnnaBridge 171:3a7713b1edbc 387 * (if several OPAMP instances available on the selected device).
AnnaBridge 171:3a7713b1edbc 388 * @note On this STM32 serie, setting of this feature is conditioned to
AnnaBridge 171:3a7713b1edbc 389 * OPAMP state:
AnnaBridge 171:3a7713b1edbc 390 * All OPAMP instances of the OPAMP common group must be disabled.
AnnaBridge 171:3a7713b1edbc 391 * This check can be done with function @ref LL_OPAMP_IsEnabled() for each
AnnaBridge 171:3a7713b1edbc 392 * OPAMP instance or by using helper macro
AnnaBridge 171:3a7713b1edbc 393 * @ref __LL_OPAMP_IS_ENABLED_ALL_COMMON_INSTANCE().
AnnaBridge 171:3a7713b1edbc 394 * @rmtoll CSR AOP_RANGE LL_OPAMP_SetCommonPowerRange
AnnaBridge 171:3a7713b1edbc 395 * @param OPAMPxy_COMMON OPAMP common instance
AnnaBridge 171:3a7713b1edbc 396 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_OPAMP_COMMON_INSTANCE() )
AnnaBridge 171:3a7713b1edbc 397 * @param PowerRange This parameter can be one of the following values:
AnnaBridge 171:3a7713b1edbc 398 * @arg @ref LL_OPAMP_POWERSUPPLY_RANGE_LOW
AnnaBridge 171:3a7713b1edbc 399 * @arg @ref LL_OPAMP_POWERSUPPLY_RANGE_HIGH
AnnaBridge 171:3a7713b1edbc 400 * @retval None
AnnaBridge 171:3a7713b1edbc 401 */
AnnaBridge 171:3a7713b1edbc 402 __STATIC_INLINE void LL_OPAMP_SetCommonPowerRange(OPAMP_Common_TypeDef *OPAMPxy_COMMON, uint32_t PowerRange)
AnnaBridge 171:3a7713b1edbc 403 {
AnnaBridge 171:3a7713b1edbc 404 MODIFY_REG(OPAMP->CSR, OPAMP_CSR_AOP_RANGE, PowerRange);
AnnaBridge 171:3a7713b1edbc 405 }
AnnaBridge 171:3a7713b1edbc 406
AnnaBridge 171:3a7713b1edbc 407 /**
AnnaBridge 171:3a7713b1edbc 408 * @brief Get OPAMP power range.
AnnaBridge 171:3a7713b1edbc 409 * @note The OPAMP power range applies to several OPAMP instances
AnnaBridge 171:3a7713b1edbc 410 * (if several OPAMP instances available on the selected device).
AnnaBridge 171:3a7713b1edbc 411 * @rmtoll CSR AOP_RANGE LL_OPAMP_GetCommonPowerRange
AnnaBridge 171:3a7713b1edbc 412 * @param OPAMPxy_COMMON OPAMP common instance
AnnaBridge 171:3a7713b1edbc 413 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_OPAMP_COMMON_INSTANCE() )
AnnaBridge 171:3a7713b1edbc 414 * @retval Returned value can be one of the following values:
AnnaBridge 171:3a7713b1edbc 415 * @arg @ref LL_OPAMP_POWERSUPPLY_RANGE_LOW
AnnaBridge 171:3a7713b1edbc 416 * @arg @ref LL_OPAMP_POWERSUPPLY_RANGE_HIGH
AnnaBridge 171:3a7713b1edbc 417 */
AnnaBridge 171:3a7713b1edbc 418 __STATIC_INLINE uint32_t LL_OPAMP_GetCommonPowerRange(OPAMP_Common_TypeDef *OPAMPxy_COMMON)
AnnaBridge 171:3a7713b1edbc 419 {
AnnaBridge 171:3a7713b1edbc 420 return (uint32_t)(READ_BIT(OPAMP->CSR, OPAMP_CSR_AOP_RANGE));
AnnaBridge 171:3a7713b1edbc 421 }
AnnaBridge 171:3a7713b1edbc 422
AnnaBridge 171:3a7713b1edbc 423 /**
AnnaBridge 171:3a7713b1edbc 424 * @}
AnnaBridge 171:3a7713b1edbc 425 */
AnnaBridge 171:3a7713b1edbc 426
AnnaBridge 171:3a7713b1edbc 427 /** @defgroup OPAMP_LL_EF_CONFIGURATION_OPAMP_INSTANCE Configuration of OPAMP hierarchical scope: OPAMP instance
AnnaBridge 171:3a7713b1edbc 428 * @{
AnnaBridge 171:3a7713b1edbc 429 */
AnnaBridge 171:3a7713b1edbc 430
AnnaBridge 171:3a7713b1edbc 431 /**
AnnaBridge 171:3a7713b1edbc 432 * @brief Set OPAMP power mode.
AnnaBridge 171:3a7713b1edbc 433 * @note The OPAMP must be disabled to change this configuration.
AnnaBridge 171:3a7713b1edbc 434 * @rmtoll CSR OPA1LPM LL_OPAMP_SetPowerMode\n
AnnaBridge 171:3a7713b1edbc 435 * CSR OPA2LPM LL_OPAMP_SetPowerMode\n
AnnaBridge 171:3a7713b1edbc 436 * CSR OPA3LPM LL_OPAMP_SetPowerMode
AnnaBridge 171:3a7713b1edbc 437 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 438 * @param PowerMode This parameter can be one of the following values:
AnnaBridge 171:3a7713b1edbc 439 * @arg @ref LL_OPAMP_POWERMODE_NORMAL
AnnaBridge 171:3a7713b1edbc 440 * @arg @ref LL_OPAMP_POWERMODE_LOWPOWER
AnnaBridge 171:3a7713b1edbc 441 * @retval None
AnnaBridge 171:3a7713b1edbc 442 */
AnnaBridge 171:3a7713b1edbc 443 __STATIC_INLINE void LL_OPAMP_SetPowerMode(OPAMP_TypeDef *OPAMPx, uint32_t PowerMode)
AnnaBridge 171:3a7713b1edbc 444 {
AnnaBridge 171:3a7713b1edbc 445 MODIFY_REG(OPAMP->CSR,
AnnaBridge 171:3a7713b1edbc 446 OPAMP_CSR_OPA1LPM << __OPAMP_INSTANCE_BITOFFSET(OPAMPx),
AnnaBridge 171:3a7713b1edbc 447 (PowerMode & OPAMP_POWERMODE_CSR_BIT_MASK) << __OPAMP_INSTANCE_BITOFFSET(OPAMPx));
AnnaBridge 171:3a7713b1edbc 448 }
AnnaBridge 171:3a7713b1edbc 449
AnnaBridge 171:3a7713b1edbc 450 /**
AnnaBridge 171:3a7713b1edbc 451 * @brief Get OPAMP power mode.
AnnaBridge 171:3a7713b1edbc 452 * @rmtoll CSR OPA1LPM LL_OPAMP_GetPowerMode\n
AnnaBridge 171:3a7713b1edbc 453 * CSR OPA2LPM LL_OPAMP_GetPowerMode\n
AnnaBridge 171:3a7713b1edbc 454 * CSR OPA3LPM LL_OPAMP_GetPowerMode
AnnaBridge 171:3a7713b1edbc 455 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 456 * @retval Returned value can be one of the following values:
AnnaBridge 171:3a7713b1edbc 457 * @arg @ref LL_OPAMP_POWERMODE_NORMAL
AnnaBridge 171:3a7713b1edbc 458 * @arg @ref LL_OPAMP_POWERMODE_LOWPOWER
AnnaBridge 171:3a7713b1edbc 459 */
AnnaBridge 171:3a7713b1edbc 460 __STATIC_INLINE uint32_t LL_OPAMP_GetPowerMode(OPAMP_TypeDef *OPAMPx)
AnnaBridge 171:3a7713b1edbc 461 {
AnnaBridge 171:3a7713b1edbc 462 register uint32_t power_mode = (READ_BIT(OPAMP->CSR, OPAMP_CSR_OPA1LPM << __OPAMP_INSTANCE_BITOFFSET(OPAMPx)));
AnnaBridge 171:3a7713b1edbc 463
AnnaBridge 171:3a7713b1edbc 464 /* Shift variable to position corresponding to bitfield of OPAMP1 */
AnnaBridge 171:3a7713b1edbc 465 power_mode >>= __OPAMP_INSTANCE_BITOFFSET(OPAMPx);
AnnaBridge 171:3a7713b1edbc 466
AnnaBridge 171:3a7713b1edbc 467 /* Construct data corresponding to literal LL_OPAMP_POWERMODE_x */
AnnaBridge 171:3a7713b1edbc 468 return (uint32_t)(power_mode | (power_mode >> (POSITION_VAL(OPAMP_CSR_OPA1LPM))));
AnnaBridge 171:3a7713b1edbc 469 }
AnnaBridge 171:3a7713b1edbc 470
AnnaBridge 171:3a7713b1edbc 471 /**
AnnaBridge 171:3a7713b1edbc 472 * @brief Set OPAMP mode calibration or functional.
AnnaBridge 171:3a7713b1edbc 473 * @note OPAMP mode corresponds to functional or calibration mode:
AnnaBridge 171:3a7713b1edbc 474 * - functional mode: OPAMP operation in standalone, follower, ...
AnnaBridge 171:3a7713b1edbc 475 * Set functional mode using function
AnnaBridge 171:3a7713b1edbc 476 * @ref LL_OPAMP_SetFunctionalMode().
AnnaBridge 171:3a7713b1edbc 477 * - calibration mode: offset calibration of the selected
AnnaBridge 171:3a7713b1edbc 478 * transistors differential pair NMOS or PMOS.
AnnaBridge 171:3a7713b1edbc 479 * @note On this STM32 serie, entering in calibration mode makes
AnnaBridge 171:3a7713b1edbc 480 * loosing OPAMP internal switches configuration.
AnnaBridge 171:3a7713b1edbc 481 * Therefore, when going back to functional mode,
AnnaBridge 171:3a7713b1edbc 482 * functional mode must be set again using
AnnaBridge 171:3a7713b1edbc 483 * @ref LL_OPAMP_SetFunctionalMode().
AnnaBridge 171:3a7713b1edbc 484 * @rmtoll CSR S3SELx LL_OPAMP_SetMode\n
AnnaBridge 171:3a7713b1edbc 485 * @rmtoll CSR S4SELx LL_OPAMP_SetMode\n
AnnaBridge 171:3a7713b1edbc 486 * @rmtoll CSR S5SELx LL_OPAMP_SetMode\n
AnnaBridge 171:3a7713b1edbc 487 * @rmtoll CSR S6SELx LL_OPAMP_SetMode\n
AnnaBridge 171:3a7713b1edbc 488 * @rmtoll CSR S7SEL2 LL_OPAMP_SetMode
AnnaBridge 171:3a7713b1edbc 489 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 490 * @param Mode This parameter can be one of the following values:
AnnaBridge 171:3a7713b1edbc 491 * @arg @ref LL_OPAMP_MODE_FUNCTIONAL
AnnaBridge 171:3a7713b1edbc 492 * @arg @ref LL_OPAMP_MODE_CALIBRATION
AnnaBridge 171:3a7713b1edbc 493 * @retval None
AnnaBridge 171:3a7713b1edbc 494 */
AnnaBridge 171:3a7713b1edbc 495 __STATIC_INLINE void LL_OPAMP_SetMode(OPAMP_TypeDef *OPAMPx, uint32_t Mode)
AnnaBridge 171:3a7713b1edbc 496 {
AnnaBridge 171:3a7713b1edbc 497 CLEAR_BIT(OPAMP->CSR,
AnnaBridge 171:3a7713b1edbc 498 ((Mode & ~OPAMP_CSR_S7SEL2) << __OPAMP_INSTANCE_BITOFFSET(OPAMPx)) | ((Mode & OPAMP_CSR_S7SEL2) * __OPAMP_IS_INSTANCE_OPAMP2(OPAMPx)));
AnnaBridge 171:3a7713b1edbc 499 }
AnnaBridge 171:3a7713b1edbc 500
AnnaBridge 171:3a7713b1edbc 501 /**
AnnaBridge 171:3a7713b1edbc 502 * @brief Get OPAMP mode calibration or functional.
AnnaBridge 171:3a7713b1edbc 503 * @note OPAMP mode corresponds to functional or calibration mode:
AnnaBridge 171:3a7713b1edbc 504 * - functional mode: OPAMP operation in standalone, follower, ...
AnnaBridge 171:3a7713b1edbc 505 * Set functional mode using function
AnnaBridge 171:3a7713b1edbc 506 * @ref LL_OPAMP_SetFunctionalMode().
AnnaBridge 171:3a7713b1edbc 507 * - calibration mode: offset calibration of the selected
AnnaBridge 171:3a7713b1edbc 508 * transistors differential pair NMOS or PMOS.
AnnaBridge 171:3a7713b1edbc 509 * @rmtoll CSR S3SELx LL_OPAMP_SetMode\n
AnnaBridge 171:3a7713b1edbc 510 * @rmtoll CSR S4SELx LL_OPAMP_SetMode\n
AnnaBridge 171:3a7713b1edbc 511 * @rmtoll CSR S5SELx LL_OPAMP_SetMode\n
AnnaBridge 171:3a7713b1edbc 512 * @rmtoll CSR S6SELx LL_OPAMP_SetMode\n
AnnaBridge 171:3a7713b1edbc 513 * @rmtoll CSR S7SEL2 LL_OPAMP_SetMode
AnnaBridge 171:3a7713b1edbc 514 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 515 * @retval Returned value can be one of the following values:
AnnaBridge 171:3a7713b1edbc 516 * @arg @ref LL_OPAMP_MODE_FUNCTIONAL
AnnaBridge 171:3a7713b1edbc 517 * @arg @ref LL_OPAMP_MODE_CALIBRATION
AnnaBridge 171:3a7713b1edbc 518 */
AnnaBridge 171:3a7713b1edbc 519 __STATIC_INLINE uint32_t LL_OPAMP_GetMode(OPAMP_TypeDef *OPAMPx)
AnnaBridge 171:3a7713b1edbc 520 {
AnnaBridge 171:3a7713b1edbc 521 return (uint32_t)(((READ_BIT(OPAMP->CSR,
AnnaBridge 171:3a7713b1edbc 522 ((LL_OPAMP_MODE_CALIBRATION & ~OPAMP_CSR_S7SEL2) << __OPAMP_INSTANCE_BITOFFSET(OPAMPx)) | (OPAMP_CSR_S7SEL2 * __OPAMP_IS_INSTANCE_OPAMP2(OPAMPx)))
AnnaBridge 171:3a7713b1edbc 523 ) == 0U) * LL_OPAMP_MODE_CALIBRATION);
AnnaBridge 171:3a7713b1edbc 524 }
AnnaBridge 171:3a7713b1edbc 525
AnnaBridge 171:3a7713b1edbc 526 /**
AnnaBridge 171:3a7713b1edbc 527 * @brief Set OPAMP functional mode by setting internal connections.
AnnaBridge 171:3a7713b1edbc 528 * OPAMP operation in standalone, follower, ...
AnnaBridge 171:3a7713b1edbc 529 * @note This function reset bit of calibration mode to ensure
AnnaBridge 171:3a7713b1edbc 530 * to be in functional mode, in order to have OPAMP parameters
AnnaBridge 171:3a7713b1edbc 531 * (inputs selection, ...) set with the corresponding OPAMP mode
AnnaBridge 171:3a7713b1edbc 532 * to be effective.
AnnaBridge 171:3a7713b1edbc 533 * @rmtoll CSR S3SELx LL_OPAMP_SetFunctionalMode
AnnaBridge 171:3a7713b1edbc 534 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 535 * @param FunctionalMode This parameter can be one of the following values:
AnnaBridge 171:3a7713b1edbc 536 * @arg @ref LL_OPAMP_MODE_STANDALONE
AnnaBridge 171:3a7713b1edbc 537 * @arg @ref LL_OPAMP_MODE_FOLLOWER
AnnaBridge 171:3a7713b1edbc 538 * @retval None
AnnaBridge 171:3a7713b1edbc 539 */
AnnaBridge 171:3a7713b1edbc 540 __STATIC_INLINE void LL_OPAMP_SetFunctionalMode(OPAMP_TypeDef *OPAMPx, uint32_t FunctionalMode)
AnnaBridge 171:3a7713b1edbc 541 {
AnnaBridge 171:3a7713b1edbc 542 /* Note: Bits OPAMP_CSR_OPAxCAL_y reset to ensure to be in functional mode */
AnnaBridge 171:3a7713b1edbc 543 MODIFY_REG(OPAMP->CSR,
AnnaBridge 171:3a7713b1edbc 544 (OPAMP_CSR_S3SEL1 | OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA1CAL_L) << __OPAMP_INSTANCE_BITOFFSET(OPAMPx),
AnnaBridge 171:3a7713b1edbc 545 FunctionalMode << __OPAMP_INSTANCE_BITOFFSET(OPAMPx));
AnnaBridge 171:3a7713b1edbc 546 }
AnnaBridge 171:3a7713b1edbc 547
AnnaBridge 171:3a7713b1edbc 548 /**
AnnaBridge 171:3a7713b1edbc 549 * @brief Get OPAMP functional mode from setting of internal connections.
AnnaBridge 171:3a7713b1edbc 550 * OPAMP operation in standalone, follower, ...
AnnaBridge 171:3a7713b1edbc 551 * @rmtoll CSR S3SELx LL_OPAMP_GetFunctionalMode
AnnaBridge 171:3a7713b1edbc 552 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 553 * @retval Returned value can be one of the following values:
AnnaBridge 171:3a7713b1edbc 554 * @arg @ref LL_OPAMP_MODE_STANDALONE
AnnaBridge 171:3a7713b1edbc 555 * @arg @ref LL_OPAMP_MODE_FOLLOWER
AnnaBridge 171:3a7713b1edbc 556 */
AnnaBridge 171:3a7713b1edbc 557 __STATIC_INLINE uint32_t LL_OPAMP_GetFunctionalMode(OPAMP_TypeDef *OPAMPx)
AnnaBridge 171:3a7713b1edbc 558 {
AnnaBridge 171:3a7713b1edbc 559 return (uint32_t)(READ_BIT(OPAMP->CSR, OPAMP_CSR_S3SEL1 << __OPAMP_INSTANCE_BITOFFSET(OPAMPx))
AnnaBridge 171:3a7713b1edbc 560 >> __OPAMP_INSTANCE_BITOFFSET(OPAMPx)
AnnaBridge 171:3a7713b1edbc 561 );
AnnaBridge 171:3a7713b1edbc 562 }
AnnaBridge 171:3a7713b1edbc 563
AnnaBridge 171:3a7713b1edbc 564 /**
AnnaBridge 171:3a7713b1edbc 565 * @}
AnnaBridge 171:3a7713b1edbc 566 */
AnnaBridge 171:3a7713b1edbc 567
AnnaBridge 171:3a7713b1edbc 568 /** @defgroup OPAMP_LL_EF_CONFIGURATION_INPUTS Configuration of OPAMP inputs
AnnaBridge 171:3a7713b1edbc 569 * @{
AnnaBridge 171:3a7713b1edbc 570 */
AnnaBridge 171:3a7713b1edbc 571
AnnaBridge 171:3a7713b1edbc 572 /**
AnnaBridge 171:3a7713b1edbc 573 * @brief Set OPAMP non-inverting input connection.
AnnaBridge 171:3a7713b1edbc 574 * @rmtoll CSR S5SELx LL_OPAMP_SetInputNonInverting\n
AnnaBridge 171:3a7713b1edbc 575 * @rmtoll CSR S6SELx LL_OPAMP_SetInputNonInverting\n
AnnaBridge 171:3a7713b1edbc 576 * @rmtoll CSR S7SEL2 LL_OPAMP_SetInputNonInverting
AnnaBridge 171:3a7713b1edbc 577 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 578 * @param InputNonInverting This parameter can be one of the following values:
AnnaBridge 171:3a7713b1edbc 579 * @arg @ref LL_OPAMP_INPUT_NONINVERT_IO0
AnnaBridge 171:3a7713b1edbc 580 * @arg @ref LL_OPAMP_INPUT_NONINV_DAC1_CH1 (1)
AnnaBridge 171:3a7713b1edbc 581 * @arg @ref LL_OPAMP_INPUT_NONINV_DAC1_CH2 (2)
AnnaBridge 171:3a7713b1edbc 582 *
AnnaBridge 171:3a7713b1edbc 583 * (1) Parameter specific to OPAMP instances: OPAMP1, OPAMP2.\n
AnnaBridge 171:3a7713b1edbc 584 * (2) Parameter specific to OPAMP instances: OPAMP2, OPAMP3.
AnnaBridge 171:3a7713b1edbc 585 * @retval None
AnnaBridge 171:3a7713b1edbc 586 */
AnnaBridge 171:3a7713b1edbc 587 __STATIC_INLINE void LL_OPAMP_SetInputNonInverting(OPAMP_TypeDef *OPAMPx, uint32_t InputNonInverting)
AnnaBridge 171:3a7713b1edbc 588 {
AnnaBridge 171:3a7713b1edbc 589 MODIFY_REG(OPAMP->CSR,
AnnaBridge 171:3a7713b1edbc 590 ((OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1) << __OPAMP_INSTANCE_BITOFFSET(OPAMPx)) | (OPAMP_CSR_S7SEL2 * __OPAMP_IS_INSTANCE_OPAMP2(OPAMPx)),
AnnaBridge 171:3a7713b1edbc 591 (InputNonInverting << __OPAMP_INSTANCE_BITOFFSET(OPAMPx)) | ((InputNonInverting & OPAMP_CSR_S7SEL2) * __OPAMP_IS_INSTANCE_OPAMP2(OPAMPx))
AnnaBridge 171:3a7713b1edbc 592 );
AnnaBridge 171:3a7713b1edbc 593 }
AnnaBridge 171:3a7713b1edbc 594
AnnaBridge 171:3a7713b1edbc 595 /**
AnnaBridge 171:3a7713b1edbc 596 * @brief Get OPAMP non-inverting input connection.
AnnaBridge 171:3a7713b1edbc 597 * @rmtoll CSR S5SELx LL_OPAMP_GetInputNonInverting\n
AnnaBridge 171:3a7713b1edbc 598 * @rmtoll CSR S6SELx LL_OPAMP_GetInputNonInverting\n
AnnaBridge 171:3a7713b1edbc 599 * @rmtoll CSR S7SEL2 LL_OPAMP_GetInputNonInverting
AnnaBridge 171:3a7713b1edbc 600 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 601 * @retval Returned value can be one of the following values:
AnnaBridge 171:3a7713b1edbc 602 * @arg @ref LL_OPAMP_INPUT_NONINVERT_IO0
AnnaBridge 171:3a7713b1edbc 603 * @arg @ref LL_OPAMP_INPUT_NONINV_DAC1_CH1 (1)
AnnaBridge 171:3a7713b1edbc 604 * @arg @ref LL_OPAMP_INPUT_NONINV_DAC1_CH2 (2)
AnnaBridge 171:3a7713b1edbc 605 *
AnnaBridge 171:3a7713b1edbc 606 * (1) Parameter specific to OPAMP instances: OPAMP1, OPAMP2.\n
AnnaBridge 171:3a7713b1edbc 607 * (2) Parameter specific to OPAMP instances: OPAMP2, OPAMP3.
AnnaBridge 171:3a7713b1edbc 608 */
AnnaBridge 171:3a7713b1edbc 609 __STATIC_INLINE uint32_t LL_OPAMP_GetInputNonInverting(OPAMP_TypeDef *OPAMPx)
AnnaBridge 171:3a7713b1edbc 610 {
AnnaBridge 171:3a7713b1edbc 611 register uint32_t input_non_inverting_opamp_x = READ_BIT(OPAMP->CSR,
AnnaBridge 171:3a7713b1edbc 612 (OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1) << __OPAMP_INSTANCE_BITOFFSET(OPAMPx)
AnnaBridge 171:3a7713b1edbc 613 | (OPAMP_CSR_S7SEL2 * __OPAMP_IS_INSTANCE_OPAMP2(OPAMPx))
AnnaBridge 171:3a7713b1edbc 614 );
AnnaBridge 171:3a7713b1edbc 615
AnnaBridge 171:3a7713b1edbc 616 return (((input_non_inverting_opamp_x & ~OPAMP_CSR_S7SEL2) >> __OPAMP_INSTANCE_BITOFFSET(OPAMPx)) | (input_non_inverting_opamp_x & OPAMP_CSR_S7SEL2));
AnnaBridge 171:3a7713b1edbc 617 }
AnnaBridge 171:3a7713b1edbc 618
AnnaBridge 171:3a7713b1edbc 619 /**
AnnaBridge 171:3a7713b1edbc 620 * @brief Set OPAMP inverting input connection.
AnnaBridge 171:3a7713b1edbc 621 * @note OPAMP inverting input is used with OPAMP in mode standalone.
AnnaBridge 171:3a7713b1edbc 622 * Otherwise (OPAMP in mode follower), OPAMP inverting input
AnnaBridge 171:3a7713b1edbc 623 * is not used (not connected to GPIO pin).
AnnaBridge 171:3a7713b1edbc 624 * @rmtoll CSR S4SELx LL_OPAMP_SetInputInverting\n
AnnaBridge 171:3a7713b1edbc 625 * @rmtoll CSR ANAWSELx LL_OPAMP_SetInputInverting
AnnaBridge 171:3a7713b1edbc 626 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 627 * @param InputInverting This parameter can be one of the following values:
AnnaBridge 171:3a7713b1edbc 628 * @arg @ref LL_OPAMP_INPUT_INVERT_IO0
AnnaBridge 171:3a7713b1edbc 629 * @arg @ref LL_OPAMP_INPUT_INVERT_IO1 (1)
AnnaBridge 171:3a7713b1edbc 630 * @arg @ref LL_OPAMP_INPUT_INVERT_CONNECT_NO
AnnaBridge 171:3a7713b1edbc 631 *
AnnaBridge 171:3a7713b1edbc 632 * (1) Alternative IO pin, not low leakage, availability depends on STM32L1 serie devices packages.
AnnaBridge 171:3a7713b1edbc 633 * @retval None
AnnaBridge 171:3a7713b1edbc 634 */
AnnaBridge 171:3a7713b1edbc 635 __STATIC_INLINE void LL_OPAMP_SetInputInverting(OPAMP_TypeDef *OPAMPx, uint32_t InputInverting)
AnnaBridge 171:3a7713b1edbc 636 {
AnnaBridge 171:3a7713b1edbc 637 MODIFY_REG(OPAMP->CSR,
AnnaBridge 171:3a7713b1edbc 638 ((OPAMP_CSR_S4SEL1) << __OPAMP_INSTANCE_BITOFFSET(OPAMPx)) | ((OPAMP_CSR_ANAWSEL1) << __OPAMP_INSTANCE_DECIMAL(OPAMPx)),
AnnaBridge 171:3a7713b1edbc 639 ((InputInverting & OPAMP_CSR_S4SEL1) << __OPAMP_INSTANCE_BITOFFSET(OPAMPx)) | ((InputInverting & OPAMP_CSR_ANAWSEL1) << __OPAMP_INSTANCE_DECIMAL(OPAMPx))
AnnaBridge 171:3a7713b1edbc 640 );
AnnaBridge 171:3a7713b1edbc 641 }
AnnaBridge 171:3a7713b1edbc 642
AnnaBridge 171:3a7713b1edbc 643 /**
AnnaBridge 171:3a7713b1edbc 644 * @brief Get OPAMP inverting input connection.
AnnaBridge 171:3a7713b1edbc 645 * @rmtoll CSR S4SELx LL_OPAMP_SetInputInverting\n
AnnaBridge 171:3a7713b1edbc 646 * @rmtoll CSR ANAWSELx LL_OPAMP_SetInputInverting
AnnaBridge 171:3a7713b1edbc 647 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 648 * @retval Returned value can be one of the following values:
AnnaBridge 171:3a7713b1edbc 649 * @arg @ref LL_OPAMP_INPUT_INVERT_IO0
AnnaBridge 171:3a7713b1edbc 650 * @arg @ref LL_OPAMP_INPUT_INVERT_IO1 (1)
AnnaBridge 171:3a7713b1edbc 651 * @arg @ref LL_OPAMP_INPUT_INVERT_CONNECT_NO
AnnaBridge 171:3a7713b1edbc 652 *
AnnaBridge 171:3a7713b1edbc 653 * (1) Alternative IO pin, not low leakage, availability depends on STM32L1 serie devices packages.
AnnaBridge 171:3a7713b1edbc 654 */
AnnaBridge 171:3a7713b1edbc 655 __STATIC_INLINE uint32_t LL_OPAMP_GetInputInverting(OPAMP_TypeDef *OPAMPx)
AnnaBridge 171:3a7713b1edbc 656 {
AnnaBridge 171:3a7713b1edbc 657 register uint32_t input_inverting_opamp_x = READ_BIT(OPAMP->CSR,
AnnaBridge 171:3a7713b1edbc 658 (OPAMP_CSR_S4SEL1) << __OPAMP_INSTANCE_BITOFFSET(OPAMPx)
AnnaBridge 171:3a7713b1edbc 659 | (OPAMP_CSR_ANAWSEL1) << __OPAMP_INSTANCE_DECIMAL(OPAMPx)
AnnaBridge 171:3a7713b1edbc 660 );
AnnaBridge 171:3a7713b1edbc 661
AnnaBridge 171:3a7713b1edbc 662 #if defined(OPAMP3)
AnnaBridge 171:3a7713b1edbc 663 return ( ((input_inverting_opamp_x & (OPAMP_CSR_S4SEL1 | OPAMP_CSR_S4SEL2 | OPAMP_CSR_S4SEL3)) >> __OPAMP_INSTANCE_BITOFFSET(OPAMPx))
AnnaBridge 171:3a7713b1edbc 664 | ((input_inverting_opamp_x & (OPAMP_CSR_ANAWSEL1 | OPAMP_CSR_ANAWSEL2 | OPAMP_CSR_ANAWSEL3)) >> __OPAMP_INSTANCE_DECIMAL(OPAMPx)));
AnnaBridge 171:3a7713b1edbc 665 #else
AnnaBridge 171:3a7713b1edbc 666 return ( ((input_inverting_opamp_x & (OPAMP_CSR_S4SEL1 | OPAMP_CSR_S4SEL2)) >> __OPAMP_INSTANCE_BITOFFSET(OPAMPx))
AnnaBridge 171:3a7713b1edbc 667 | ((input_inverting_opamp_x & (OPAMP_CSR_ANAWSEL1 | OPAMP_CSR_ANAWSEL2)) >> __OPAMP_INSTANCE_DECIMAL(OPAMPx)));
AnnaBridge 171:3a7713b1edbc 668 #endif
AnnaBridge 171:3a7713b1edbc 669 }
AnnaBridge 171:3a7713b1edbc 670
AnnaBridge 171:3a7713b1edbc 671 /**
AnnaBridge 171:3a7713b1edbc 672 * @}
AnnaBridge 171:3a7713b1edbc 673 */
AnnaBridge 171:3a7713b1edbc 674
AnnaBridge 171:3a7713b1edbc 675 /** @defgroup OPAMP_LL_EF_OPAMP_TRIMMING Configuration and operation of OPAMP trimming
AnnaBridge 171:3a7713b1edbc 676 * @{
AnnaBridge 171:3a7713b1edbc 677 */
AnnaBridge 171:3a7713b1edbc 678
AnnaBridge 171:3a7713b1edbc 679 /**
AnnaBridge 171:3a7713b1edbc 680 * @brief Set OPAMP trimming mode.
AnnaBridge 171:3a7713b1edbc 681 * @note The OPAMP trimming mode applies to several OPAMP instances
AnnaBridge 171:3a7713b1edbc 682 * (if several OPAMP instances available on the selected device).
AnnaBridge 171:3a7713b1edbc 683 * @rmtoll OTR OT_USER LL_OPAMP_SetCommonTrimmingMode
AnnaBridge 171:3a7713b1edbc 684 * @param OPAMPxy_COMMON OPAMP common instance
AnnaBridge 171:3a7713b1edbc 685 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_OPAMP_COMMON_INSTANCE() )
AnnaBridge 171:3a7713b1edbc 686 * @param TrimmingMode This parameter can be one of the following values:
AnnaBridge 171:3a7713b1edbc 687 * @arg @ref LL_OPAMP_TRIMMING_FACTORY
AnnaBridge 171:3a7713b1edbc 688 * @arg @ref LL_OPAMP_TRIMMING_USER
AnnaBridge 171:3a7713b1edbc 689 * @retval None
AnnaBridge 171:3a7713b1edbc 690 */
AnnaBridge 171:3a7713b1edbc 691 __STATIC_INLINE void LL_OPAMP_SetCommonTrimmingMode(OPAMP_Common_TypeDef *OPAMPxy_COMMON, uint32_t TrimmingMode)
AnnaBridge 171:3a7713b1edbc 692 {
AnnaBridge 171:3a7713b1edbc 693 /* Note: On STM32L1 serie, OPAMP trimming mode bit "OPAMP_OTR_OT_USER" is */
AnnaBridge 171:3a7713b1edbc 694 /* write only, cannot be read. */
AnnaBridge 171:3a7713b1edbc 695 MODIFY_REG(OPAMPxy_COMMON->OTR,
AnnaBridge 171:3a7713b1edbc 696 OPAMP_OTR_OT_USER,
AnnaBridge 171:3a7713b1edbc 697 TrimmingMode);
AnnaBridge 171:3a7713b1edbc 698 }
AnnaBridge 171:3a7713b1edbc 699
AnnaBridge 171:3a7713b1edbc 700 /**
AnnaBridge 171:3a7713b1edbc 701 * @brief Get OPAMP trimming mode.
AnnaBridge 171:3a7713b1edbc 702 * @note The OPAMP trimming mode applies to several OPAMP instances
AnnaBridge 171:3a7713b1edbc 703 * (if several OPAMP instances available on the selected device).
AnnaBridge 171:3a7713b1edbc 704 * @rmtoll OTR OT_USER LL_OPAMP_GetCommonTrimmingMode
AnnaBridge 171:3a7713b1edbc 705 * @param OPAMPxy_COMMON OPAMP common instance
AnnaBridge 171:3a7713b1edbc 706 * (can be set directly from CMSIS definition or by using helper macro @ref __LL_OPAMP_COMMON_INSTANCE() )
AnnaBridge 171:3a7713b1edbc 707 * @retval Returned value can be one of the following values:
AnnaBridge 171:3a7713b1edbc 708 * @arg @ref LL_OPAMP_TRIMMING_FACTORY
AnnaBridge 171:3a7713b1edbc 709 * @arg @ref LL_OPAMP_TRIMMING_USER
AnnaBridge 171:3a7713b1edbc 710 */
AnnaBridge 171:3a7713b1edbc 711 __STATIC_INLINE uint32_t LL_OPAMP_GetCommonTrimmingMode(OPAMP_Common_TypeDef *OPAMPxy_COMMON)
AnnaBridge 171:3a7713b1edbc 712 {
AnnaBridge 171:3a7713b1edbc 713 return (uint32_t)(READ_BIT(OPAMPxy_COMMON->OTR, OPAMP_OTR_OT_USER));
AnnaBridge 171:3a7713b1edbc 714 }
AnnaBridge 171:3a7713b1edbc 715
AnnaBridge 171:3a7713b1edbc 716 /**
AnnaBridge 171:3a7713b1edbc 717 * @brief Set OPAMP offset to calibrate the selected transistors
AnnaBridge 171:3a7713b1edbc 718 * differential pair NMOS or PMOS.
AnnaBridge 171:3a7713b1edbc 719 * @note Preliminarily, OPAMP must be set in mode calibration
AnnaBridge 171:3a7713b1edbc 720 * using function @ref LL_OPAMP_SetMode().
AnnaBridge 171:3a7713b1edbc 721 * @rmtoll CSR OPA1CAL_H LL_OPAMP_SetCalibrationSelection\n
AnnaBridge 171:3a7713b1edbc 722 * CSR OPA1CAL_L LL_OPAMP_SetCalibrationSelection
AnnaBridge 171:3a7713b1edbc 723 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 724 * @param TransistorsDiffPair This parameter can be one of the following values:
AnnaBridge 171:3a7713b1edbc 725 * @arg @ref LL_OPAMP_TRIMMING_NMOS
AnnaBridge 171:3a7713b1edbc 726 * @arg @ref LL_OPAMP_TRIMMING_PMOS
AnnaBridge 171:3a7713b1edbc 727 * @arg @ref LL_OPAMP_TRIMMING_NONE
AnnaBridge 171:3a7713b1edbc 728 * @retval None
AnnaBridge 171:3a7713b1edbc 729 */
AnnaBridge 171:3a7713b1edbc 730 __STATIC_INLINE void LL_OPAMP_SetCalibrationSelection(OPAMP_TypeDef *OPAMPx, uint32_t TransistorsDiffPair)
AnnaBridge 171:3a7713b1edbc 731 {
AnnaBridge 171:3a7713b1edbc 732 /* Parameter used with mask "OPAMP_TRIMMING_SELECT_MASK" because */
AnnaBridge 171:3a7713b1edbc 733 /* containing other bits reserved for other purpose. */
AnnaBridge 171:3a7713b1edbc 734 MODIFY_REG(OPAMP->CSR,
AnnaBridge 171:3a7713b1edbc 735 (OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA1CAL_L) << __OPAMP_INSTANCE_BITOFFSET(OPAMPx),
AnnaBridge 171:3a7713b1edbc 736 ((TransistorsDiffPair & OPAMP_TRIMMING_SELECT_MASK) >> OPAMP_TRIMMING_SELECT_SW_OFFSET) << __OPAMP_INSTANCE_BITOFFSET(OPAMPx)
AnnaBridge 171:3a7713b1edbc 737 );
AnnaBridge 171:3a7713b1edbc 738 }
AnnaBridge 171:3a7713b1edbc 739
AnnaBridge 171:3a7713b1edbc 740 /**
AnnaBridge 171:3a7713b1edbc 741 * @brief Get OPAMP offset to calibrate the selected transistors
AnnaBridge 171:3a7713b1edbc 742 * differential pair NMOS or PMOS.
AnnaBridge 171:3a7713b1edbc 743 * @note Preliminarily, OPAMP must be set in mode calibration
AnnaBridge 171:3a7713b1edbc 744 * using function @ref LL_OPAMP_SetMode().
AnnaBridge 171:3a7713b1edbc 745 * @rmtoll CSR OPA1CAL_H LL_OPAMP_SetCalibrationSelection\n
AnnaBridge 171:3a7713b1edbc 746 * CSR OPA1CAL_L LL_OPAMP_SetCalibrationSelection
AnnaBridge 171:3a7713b1edbc 747 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 748 * @retval Returned value can be one of the following values:
AnnaBridge 171:3a7713b1edbc 749 * @arg @ref LL_OPAMP_TRIMMING_NMOS
AnnaBridge 171:3a7713b1edbc 750 * @arg @ref LL_OPAMP_TRIMMING_PMOS
AnnaBridge 171:3a7713b1edbc 751 * @arg @ref LL_OPAMP_TRIMMING_NONE
AnnaBridge 171:3a7713b1edbc 752 */
AnnaBridge 171:3a7713b1edbc 753 __STATIC_INLINE uint32_t LL_OPAMP_GetCalibrationSelection(OPAMP_TypeDef *OPAMPx)
AnnaBridge 171:3a7713b1edbc 754 {
AnnaBridge 171:3a7713b1edbc 755 register uint32_t CalibrationSelection = (uint32_t)(READ_BIT(OPAMP->CSR,
AnnaBridge 171:3a7713b1edbc 756 (OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA1CAL_L) << __OPAMP_INSTANCE_BITOFFSET(OPAMPx)
AnnaBridge 171:3a7713b1edbc 757 )
AnnaBridge 171:3a7713b1edbc 758 >> __OPAMP_INSTANCE_BITOFFSET(OPAMPx)
AnnaBridge 171:3a7713b1edbc 759 );
AnnaBridge 171:3a7713b1edbc 760
AnnaBridge 171:3a7713b1edbc 761 return ((CalibrationSelection << OPAMP_TRIMMING_SELECT_SW_OFFSET) |
AnnaBridge 171:3a7713b1edbc 762 ((OPAMP_OTR_AO1_OPT_OFFSET_TRIM_LOW) << (OPAMP_OTR_AO1_OPT_OFFSET_TRIM_HIGH_Pos * ((CalibrationSelection & OPAMP_CSR_OPA1CAL_H) != 0U))));
AnnaBridge 171:3a7713b1edbc 763 }
AnnaBridge 171:3a7713b1edbc 764
AnnaBridge 171:3a7713b1edbc 765 /**
AnnaBridge 171:3a7713b1edbc 766 * @brief Get OPAMP calibration result of toggling output.
AnnaBridge 171:3a7713b1edbc 767 * @note This functions returns:
AnnaBridge 171:3a7713b1edbc 768 * 0 if OPAMP calibration output is reset
AnnaBridge 171:3a7713b1edbc 769 * 1 if OPAMP calibration output is set
AnnaBridge 171:3a7713b1edbc 770 * @rmtoll CSR OPAxCALOUT LL_OPAMP_IsCalibrationOutputSet
AnnaBridge 171:3a7713b1edbc 771 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 772 * @retval State of bit (1 or 0).
AnnaBridge 171:3a7713b1edbc 773 */
AnnaBridge 171:3a7713b1edbc 774 __STATIC_INLINE uint32_t LL_OPAMP_IsCalibrationOutputSet(OPAMP_TypeDef *OPAMPx)
AnnaBridge 171:3a7713b1edbc 775 {
AnnaBridge 171:3a7713b1edbc 776 return (READ_BIT(OPAMP->CSR, (OPAMP_CSR_OPA1CALOUT << __OPAMP_INSTANCE_DECIMAL(OPAMPx)))
AnnaBridge 171:3a7713b1edbc 777 == (OPAMP_CSR_OPA1CALOUT << __OPAMP_INSTANCE_DECIMAL(OPAMPx)));
AnnaBridge 171:3a7713b1edbc 778 }
AnnaBridge 171:3a7713b1edbc 779
AnnaBridge 171:3a7713b1edbc 780 /**
AnnaBridge 171:3a7713b1edbc 781 * @brief Set OPAMP trimming factor for the selected transistors
AnnaBridge 171:3a7713b1edbc 782 * differential pair NMOS or PMOS, corresponding to the selected
AnnaBridge 171:3a7713b1edbc 783 * power mode.
AnnaBridge 171:3a7713b1edbc 784 * @note On STM32L1 serie, OPAMP trimming mode must be re-configured
AnnaBridge 171:3a7713b1edbc 785 * at each update of trimming values in power mode normal.
AnnaBridge 171:3a7713b1edbc 786 * Refer to function @ref LL_OPAMP_SetCommonTrimmingMode().
AnnaBridge 171:3a7713b1edbc 787 * @rmtoll OTR AOx_OPT_OFFSET_TRIM_HIGH LL_OPAMP_SetTrimmingValue\n
AnnaBridge 171:3a7713b1edbc 788 * OTR AOx_OPT_OFFSET_TRIM_LOW LL_OPAMP_SetTrimmingValue\n
AnnaBridge 171:3a7713b1edbc 789 * LPOTR AOx_OPT_OFFSET_TRIM_LP_HIGH LL_OPAMP_SetTrimmingValue\n
AnnaBridge 171:3a7713b1edbc 790 * LPOTR AOx_OPT_OFFSET_TRIM_LP_LOW LL_OPAMP_SetTrimmingValue
AnnaBridge 171:3a7713b1edbc 791 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 792 * @param PowerMode This parameter can be one of the following values:
AnnaBridge 171:3a7713b1edbc 793 * @arg @ref LL_OPAMP_POWERMODE_NORMAL
AnnaBridge 171:3a7713b1edbc 794 * @arg @ref LL_OPAMP_POWERMODE_LOWPOWER
AnnaBridge 171:3a7713b1edbc 795 * @param TransistorsDiffPair This parameter can be one of the following values:
AnnaBridge 171:3a7713b1edbc 796 * @arg @ref LL_OPAMP_TRIMMING_NMOS
AnnaBridge 171:3a7713b1edbc 797 * @arg @ref LL_OPAMP_TRIMMING_PMOS
AnnaBridge 171:3a7713b1edbc 798 * @param TrimmingValue 0x00...0x1F
AnnaBridge 171:3a7713b1edbc 799 * @retval None
AnnaBridge 171:3a7713b1edbc 800 */
AnnaBridge 171:3a7713b1edbc 801 __STATIC_INLINE void LL_OPAMP_SetTrimmingValue(OPAMP_TypeDef* OPAMPx, uint32_t PowerMode, uint32_t TransistorsDiffPair, uint32_t TrimmingValue)
AnnaBridge 171:3a7713b1edbc 802 {
AnnaBridge 171:3a7713b1edbc 803 register uint32_t *preg = __OPAMP_PTR_REG_OFFSET(OPAMP->OTR, (PowerMode & OPAMP_POWERMODE_OTR_REGOFFSET_MASK));
AnnaBridge 171:3a7713b1edbc 804
AnnaBridge 171:3a7713b1edbc 805 /* Set bits with position in register depending on parameter */
AnnaBridge 171:3a7713b1edbc 806 /* "TransistorsDiffPair". */
AnnaBridge 171:3a7713b1edbc 807 /* Parameter used with mask "OPAMP_TRIMMING_VALUE_MASK" because */
AnnaBridge 171:3a7713b1edbc 808 /* containing other bits reserved for other purpose. */
AnnaBridge 171:3a7713b1edbc 809 MODIFY_REG(*preg,
AnnaBridge 171:3a7713b1edbc 810 (TransistorsDiffPair & OPAMP_TRIMMING_VALUE_MASK) << (OPAMP_OTR_AO2_OPT_OFFSET_TRIM_LOW_Pos * __OPAMP_INSTANCE_DECIMAL(OPAMPx)),
AnnaBridge 171:3a7713b1edbc 811 TrimmingValue << (POSITION_VAL(TransistorsDiffPair & OPAMP_TRIMMING_VALUE_MASK) + (OPAMP_OTR_AO2_OPT_OFFSET_TRIM_LOW_Pos * __OPAMP_INSTANCE_DECIMAL(OPAMPx))));
AnnaBridge 171:3a7713b1edbc 812 }
AnnaBridge 171:3a7713b1edbc 813
AnnaBridge 171:3a7713b1edbc 814 /**
AnnaBridge 171:3a7713b1edbc 815 * @brief Get OPAMP trimming factor for the selected transistors
AnnaBridge 171:3a7713b1edbc 816 * differential pair NMOS or PMOS, corresponding to the selected
AnnaBridge 171:3a7713b1edbc 817 * power mode.
AnnaBridge 171:3a7713b1edbc 818 * @rmtoll OTR AOx_OPT_OFFSET_TRIM_HIGH LL_OPAMP_GetTrimmingValue\n
AnnaBridge 171:3a7713b1edbc 819 * OTR AOx_OPT_OFFSET_TRIM_LOW LL_OPAMP_GetTrimmingValue\n
AnnaBridge 171:3a7713b1edbc 820 * LPOTR AOx_OPT_OFFSET_TRIM_LP_HIGH LL_OPAMP_GetTrimmingValue\n
AnnaBridge 171:3a7713b1edbc 821 * LPOTR AOx_OPT_OFFSET_TRIM_LP_LOW LL_OPAMP_GetTrimmingValue
AnnaBridge 171:3a7713b1edbc 822 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 823 * @param PowerMode This parameter can be one of the following values:
AnnaBridge 171:3a7713b1edbc 824 * @arg @ref LL_OPAMP_POWERMODE_NORMAL
AnnaBridge 171:3a7713b1edbc 825 * @arg @ref LL_OPAMP_POWERMODE_LOWPOWER
AnnaBridge 171:3a7713b1edbc 826 * @param TransistorsDiffPair This parameter can be one of the following values:
AnnaBridge 171:3a7713b1edbc 827 * @arg @ref LL_OPAMP_TRIMMING_NMOS
AnnaBridge 171:3a7713b1edbc 828 * @arg @ref LL_OPAMP_TRIMMING_PMOS
AnnaBridge 171:3a7713b1edbc 829 * @retval 0x0...0x1F
AnnaBridge 171:3a7713b1edbc 830 */
AnnaBridge 171:3a7713b1edbc 831 __STATIC_INLINE uint32_t LL_OPAMP_GetTrimmingValue(OPAMP_TypeDef* OPAMPx, uint32_t PowerMode, uint32_t TransistorsDiffPair)
AnnaBridge 171:3a7713b1edbc 832 {
AnnaBridge 171:3a7713b1edbc 833 register uint32_t *preg = __OPAMP_PTR_REG_OFFSET(OPAMP->OTR, (PowerMode & OPAMP_POWERMODE_OTR_REGOFFSET_MASK));
AnnaBridge 171:3a7713b1edbc 834
AnnaBridge 171:3a7713b1edbc 835 /* Retrieve bits with position in register depending on parameter */
AnnaBridge 171:3a7713b1edbc 836 /* "TransistorsDiffPair". */
AnnaBridge 171:3a7713b1edbc 837 /* Parameter used with mask "OPAMP_TRIMMING_VALUE_MASK" because */
AnnaBridge 171:3a7713b1edbc 838 /* containing other bits reserved for other purpose. */
AnnaBridge 171:3a7713b1edbc 839 return (uint32_t)(READ_BIT(*preg, (TransistorsDiffPair & OPAMP_TRIMMING_VALUE_MASK) << (OPAMP_OTR_AO2_OPT_OFFSET_TRIM_LOW_Pos * __OPAMP_INSTANCE_DECIMAL(OPAMPx)))
AnnaBridge 171:3a7713b1edbc 840 >> (POSITION_VAL(TransistorsDiffPair & OPAMP_TRIMMING_VALUE_MASK) + (OPAMP_OTR_AO2_OPT_OFFSET_TRIM_LOW_Pos * __OPAMP_INSTANCE_DECIMAL(OPAMPx)))
AnnaBridge 171:3a7713b1edbc 841 );
AnnaBridge 171:3a7713b1edbc 842 }
AnnaBridge 171:3a7713b1edbc 843
AnnaBridge 171:3a7713b1edbc 844 /**
AnnaBridge 171:3a7713b1edbc 845 * @}
AnnaBridge 171:3a7713b1edbc 846 */
AnnaBridge 171:3a7713b1edbc 847
AnnaBridge 171:3a7713b1edbc 848 /** @defgroup OPAMP_LL_EF_OPERATION Operation on OPAMP instance
AnnaBridge 171:3a7713b1edbc 849 * @{
AnnaBridge 171:3a7713b1edbc 850 */
AnnaBridge 171:3a7713b1edbc 851 /**
AnnaBridge 171:3a7713b1edbc 852 * @brief Enable OPAMP instance.
AnnaBridge 171:3a7713b1edbc 853 * @note After enable from off state, OPAMP requires a delay
AnnaBridge 171:3a7713b1edbc 854 * to fullfill wake up time specification.
AnnaBridge 171:3a7713b1edbc 855 * Refer to device datasheet, parameter "tWAKEUP".
AnnaBridge 171:3a7713b1edbc 856 * @rmtoll CSR OPAxPD LL_OPAMP_Enable
AnnaBridge 171:3a7713b1edbc 857 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 858 * @retval None
AnnaBridge 171:3a7713b1edbc 859 */
AnnaBridge 171:3a7713b1edbc 860 __STATIC_INLINE void LL_OPAMP_Enable(OPAMP_TypeDef *OPAMPx)
AnnaBridge 171:3a7713b1edbc 861 {
AnnaBridge 171:3a7713b1edbc 862 CLEAR_BIT(OPAMP->CSR, OPAMP_CSR_OPA1PD << __OPAMP_INSTANCE_BITOFFSET(OPAMPx));
AnnaBridge 171:3a7713b1edbc 863 }
AnnaBridge 171:3a7713b1edbc 864
AnnaBridge 171:3a7713b1edbc 865 /**
AnnaBridge 171:3a7713b1edbc 866 * @brief Disable OPAMP instance.
AnnaBridge 171:3a7713b1edbc 867 * @rmtoll CSR OPAxPD LL_OPAMP_Disable
AnnaBridge 171:3a7713b1edbc 868 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 869 * @retval None
AnnaBridge 171:3a7713b1edbc 870 */
AnnaBridge 171:3a7713b1edbc 871 __STATIC_INLINE void LL_OPAMP_Disable(OPAMP_TypeDef *OPAMPx)
AnnaBridge 171:3a7713b1edbc 872 {
AnnaBridge 171:3a7713b1edbc 873 SET_BIT(OPAMP->CSR, OPAMP_CSR_OPA1PD << __OPAMP_INSTANCE_BITOFFSET(OPAMPx));
AnnaBridge 171:3a7713b1edbc 874 }
AnnaBridge 171:3a7713b1edbc 875
AnnaBridge 171:3a7713b1edbc 876 /**
AnnaBridge 171:3a7713b1edbc 877 * @brief Get OPAMP instance enable state
AnnaBridge 171:3a7713b1edbc 878 * (0: OPAMP is disabled, 1: OPAMP is enabled)
AnnaBridge 171:3a7713b1edbc 879 * @rmtoll CSR OPAxPD LL_OPAMP_IsEnabled
AnnaBridge 171:3a7713b1edbc 880 * @param OPAMPx OPAMP instance
AnnaBridge 171:3a7713b1edbc 881 * @retval State of bit (1 or 0).
AnnaBridge 171:3a7713b1edbc 882 */
AnnaBridge 171:3a7713b1edbc 883 __STATIC_INLINE uint32_t LL_OPAMP_IsEnabled(OPAMP_TypeDef *OPAMPx)
AnnaBridge 171:3a7713b1edbc 884 {
AnnaBridge 171:3a7713b1edbc 885 return (READ_BIT(OPAMP->CSR, OPAMP_CSR_OPA1PD << __OPAMP_INSTANCE_BITOFFSET(OPAMPx))
AnnaBridge 171:3a7713b1edbc 886 != (OPAMP_CSR_OPA1PD << __OPAMP_INSTANCE_BITOFFSET(OPAMPx)));
AnnaBridge 171:3a7713b1edbc 887 }
AnnaBridge 171:3a7713b1edbc 888
AnnaBridge 171:3a7713b1edbc 889 /**
AnnaBridge 171:3a7713b1edbc 890 * @}
AnnaBridge 171:3a7713b1edbc 891 */
AnnaBridge 171:3a7713b1edbc 892
AnnaBridge 171:3a7713b1edbc 893 #if defined(USE_FULL_LL_DRIVER)
AnnaBridge 171:3a7713b1edbc 894 /** @defgroup OPAMP_LL_EF_Init Initialization and de-initialization functions
AnnaBridge 171:3a7713b1edbc 895 * @{
AnnaBridge 171:3a7713b1edbc 896 */
AnnaBridge 171:3a7713b1edbc 897
AnnaBridge 171:3a7713b1edbc 898 ErrorStatus LL_OPAMP_DeInit(OPAMP_TypeDef *OPAMPx);
AnnaBridge 171:3a7713b1edbc 899 ErrorStatus LL_OPAMP_Init(OPAMP_TypeDef *OPAMPx, LL_OPAMP_InitTypeDef *OPAMP_InitStruct);
AnnaBridge 171:3a7713b1edbc 900 void LL_OPAMP_StructInit(LL_OPAMP_InitTypeDef *OPAMP_InitStruct);
AnnaBridge 171:3a7713b1edbc 901
AnnaBridge 171:3a7713b1edbc 902 /**
AnnaBridge 171:3a7713b1edbc 903 * @}
AnnaBridge 171:3a7713b1edbc 904 */
AnnaBridge 171:3a7713b1edbc 905 #endif /* USE_FULL_LL_DRIVER */
AnnaBridge 171:3a7713b1edbc 906
AnnaBridge 171:3a7713b1edbc 907 /**
AnnaBridge 171:3a7713b1edbc 908 * @}
AnnaBridge 171:3a7713b1edbc 909 */
AnnaBridge 171:3a7713b1edbc 910
AnnaBridge 171:3a7713b1edbc 911 /**
AnnaBridge 171:3a7713b1edbc 912 * @}
AnnaBridge 171:3a7713b1edbc 913 */
AnnaBridge 171:3a7713b1edbc 914
AnnaBridge 171:3a7713b1edbc 915 #endif /* OPAMP1 || OPAMP2 || OPAMP3 */
AnnaBridge 171:3a7713b1edbc 916
AnnaBridge 171:3a7713b1edbc 917 /**
AnnaBridge 171:3a7713b1edbc 918 * @}
AnnaBridge 171:3a7713b1edbc 919 */
AnnaBridge 171:3a7713b1edbc 920
AnnaBridge 171:3a7713b1edbc 921 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 922 }
AnnaBridge 171:3a7713b1edbc 923 #endif
AnnaBridge 171:3a7713b1edbc 924
AnnaBridge 171:3a7713b1edbc 925 #endif /* __STM32L1xx_LL_OPAMP_H */
AnnaBridge 171:3a7713b1edbc 926
AnnaBridge 171:3a7713b1edbc 927 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/