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:
Anna Bridge
Date:
Fri Apr 20 11:08:29 2018 +0100
Revision:
166:5aab5a7997ee
Parent:
161:aa5281ff4a02
Updating mbed 2 version number

Who changed what in which revision?

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