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_F303VC/TARGET_STM/TARGET_STM32F3/device/stm32f3xx_ll_opamp.h@168:b9e159c1930a
mbed library. Release version 164

Who changed what in which revision?

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