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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

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

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_DISCO_L496AG/TARGET_STM/TARGET_STM32L4/device/stm32l4xx_ll_opamp.h@165:d1b4690b3f8b
mbed library. Release version 164

Who changed what in which revision?

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