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
mbed library release version 165

Who changed what in which revision?

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