mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
mbed library release version 165

Who changed what in which revision?

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