21 #ifndef STM32L4xx_LL_OPAMP_H 22 #define STM32L4xx_LL_OPAMP_H 29 #include "stm32l4xx.h" 35 #if defined (OPAMP1) || defined (OPAMP2) 55 #define OPAMP_POWERMODE_OTR_REGOFFSET 0x00000000U 56 #define OPAMP_POWERMODE_LPOTR_REGOFFSET 0x00000001U 57 #define OPAMP_POWERMODE_OTR_REGOFFSET_MASK (OPAMP_POWERMODE_OTR_REGOFFSET | OPAMP_POWERMODE_LPOTR_REGOFFSET) 60 #define OPAMP_POWERMODE_CSR_BIT_MASK (OPAMP_CSR_OPALPM) 67 #define OPAMP_TRIMMING_SELECT_MASK (OPAMP1_CSR_CALSEL) 68 #define OPAMP_TRIMMING_VALUE_MASK (OPAMP_OTR_TRIMOFFSETP | OPAMP_OTR_TRIMOFFSETN) 88 #define __OPAMP_PTR_REG_OFFSET(__REG__, __REG_OFFSET__) \ 89 ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFSET__) << 2U)))) 100 #if defined(USE_FULL_LL_DRIVER) 147 #define LL_OPAMP_POWERSUPPLY_RANGE_LOW 0x00000000U 148 #define LL_OPAMP_POWERSUPPLY_RANGE_HIGH (OPAMP1_CSR_OPARANGE) 156 #define LL_OPAMP_POWERMODE_NORMAL (OPAMP_POWERMODE_OTR_REGOFFSET) 157 #define LL_OPAMP_POWERMODE_LOWPOWER (OPAMP_POWERMODE_LPOTR_REGOFFSET | OPAMP_CSR_OPALPM) 165 #define LL_OPAMP_MODE_FUNCTIONAL 0x00000000U 166 #define LL_OPAMP_MODE_CALIBRATION (OPAMP_CSR_CALON) 174 #define LL_OPAMP_MODE_STANDALONE 0x00000000U 175 #define LL_OPAMP_MODE_FOLLOWER (OPAMP_CSR_OPAMODE_1 | OPAMP_CSR_OPAMODE_0) 176 #define LL_OPAMP_MODE_PGA (OPAMP_CSR_OPAMODE_1) 184 #define LL_OPAMP_PGA_GAIN_2 0x00000000U 185 #define LL_OPAMP_PGA_GAIN_4 (OPAMP_CSR_PGGAIN_0) 186 #define LL_OPAMP_PGA_GAIN_8 (OPAMP_CSR_PGGAIN_1) 187 #define LL_OPAMP_PGA_GAIN_16 (OPAMP_CSR_PGGAIN_1 | OPAMP_CSR_PGGAIN_0 ) 195 #define LL_OPAMP_INPUT_NONINVERT_IO0 0x00000000U 196 #define LL_OPAMP_INPUT_NONINV_DAC1_CH1 (OPAMP1_CSR_VPSEL) 204 #define LL_OPAMP_INPUT_INVERT_IO0 0x00000000U 205 #define LL_OPAMP_INPUT_INVERT_IO1 (OPAMP_CSR_VMSEL_0) 206 #define LL_OPAMP_INPUT_INVERT_CONNECT_NO (OPAMP_CSR_VMSEL_1) 214 #define LL_OPAMP_NONINVERTINGINPUT_IO0 LL_OPAMP_INPUT_NONINVERT_IO0 215 #define LL_OPAMP_NONINVERTINGINPUT_DAC_CH LL_OPAMP_INPUT_NONINV_DAC1_CH1 217 #define LL_OPAMP_INVERTINGINPUT_IO0 LL_OPAMP_INPUT_INVERT_IO0 218 #define LL_OPAMP_INVERTINGINPUT_IO1 LL_OPAMP_INPUT_INVERT_IO1 219 #define LL_OPAMP_INVERTINGINPUT_CONNECT_NO LL_OPAMP_INPUT_INVERT_CONNECT_NO 221 #define LL_OPAMP_INPUT_NONINVERT_DAC1_CH1 LL_OPAMP_INPUT_NONINV_DAC1_CH1 229 #define LL_OPAMP_TRIMMING_FACTORY 0x00000000U 230 #define LL_OPAMP_TRIMMING_USER (OPAMP_CSR_USERTRIM) 238 #define LL_OPAMP_TRIMMING_NMOS (OPAMP_OTR_TRIMOFFSETN) 239 #define LL_OPAMP_TRIMMING_PMOS (OPAMP_OTR_TRIMOFFSETP | OPAMP1_CSR_CALSEL) 262 #define LL_OPAMP_DELAY_STARTUP_US ((uint32_t) 30U) 286 #define LL_OPAMP_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__)) 294 #define LL_OPAMP_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__) 312 #if defined(OPAMP1) && defined(OPAMP2) 313 #define __LL_OPAMP_COMMON_INSTANCE(__OPAMPx__) \ 316 #define __LL_OPAMP_COMMON_INSTANCE(__OPAMPx__) \ 332 #if defined(OPAMP1) && defined(OPAMP2) 333 #define __LL_OPAMP_IS_ENABLED_ALL_COMMON_INSTANCE() \ 334 (LL_OPAMP_IsEnabled(OPAMP1) | \ 335 LL_OPAMP_IsEnabled(OPAMP2) ) 337 #define __LL_OPAMP_IS_ENABLED_ALL_COMMON_INSTANCE() \ 338 (LL_OPAMP_IsEnabled(OPAMP1)) 379 (void)(*OPAMPxy_COMMON);
381 MODIFY_REG(OPAMP1->CSR, OPAMP1_CSR_OPARANGE, PowerRange);
398 (void)(*OPAMPxy_COMMON);
400 return (uint32_t)(READ_BIT(OPAMP1->CSR, OPAMP1_CSR_OPARANGE));
423 MODIFY_REG(OPAMPx->CSR, OPAMP_CSR_OPALPM, (PowerMode & OPAMP_POWERMODE_CSR_BIT_MASK));
436 register uint32_t power_mode = (READ_BIT(OPAMPx->CSR, OPAMP_CSR_OPALPM));
438 return (uint32_t)(power_mode | (power_mode >> (OPAMP_CSR_OPALPM_Pos)));
463 MODIFY_REG(OPAMPx->CSR, OPAMP_CSR_CALON, Mode);
482 return (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_CALON));
503 MODIFY_REG(OPAMPx->CSR, OPAMP_CSR_OPAMODE | OPAMP_CSR_CALON, FunctionalMode);
518 return (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_OPAMODE));
536 MODIFY_REG(OPAMPx->CSR, OPAMP_CSR_PGGAIN, PGAGain);
553 return (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_PGGAIN));
575 MODIFY_REG(OPAMPx->CSR, OPAMP_CSR_VPSEL, InputNonInverting);
588 return (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_VPSEL));
607 MODIFY_REG(OPAMPx->CSR, OPAMP_CSR_VMSEL, InputInverting);
621 return (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_VMSEL));
662 MODIFY_REG(OPAMPx->CSR, OPAMP_CSR_USERTRIM, TrimmingMode);
675 return (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_USERTRIM));
694 MODIFY_REG(OPAMPx->CSR, OPAMP_CSR_CALSEL, (TransistorsDiffPair & OPAMP_TRIMMING_SELECT_MASK));
710 register uint32_t CalibrationSelection = (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_CALSEL));
712 return (CalibrationSelection |
713 (((CalibrationSelection & OPAMP_CSR_CALSEL) == 0UL) ? OPAMP_OTR_TRIMOFFSETN : OPAMP_OTR_TRIMOFFSETP));
727 return ((READ_BIT(OPAMPx->CSR, OPAMP_CSR_CALOUT) == OPAMP_CSR_CALOUT) ? 1UL : 0UL);
748 __STATIC_INLINE
void LL_OPAMP_SetTrimmingValue(OPAMP_TypeDef* OPAMPx, uint32_t PowerMode, uint32_t TransistorsDiffPair, uint32_t TrimmingValue)
750 register uint32_t *preg = __OPAMP_PTR_REG_OFFSET(OPAMPx->OTR, (PowerMode & OPAMP_POWERMODE_OTR_REGOFFSET_MASK));
757 (TransistorsDiffPair & OPAMP_TRIMMING_VALUE_MASK),
758 TrimmingValue << ((TransistorsDiffPair == LL_OPAMP_TRIMMING_NMOS) ? OPAMP_OTR_TRIMOFFSETN_Pos : OPAMP_OTR_TRIMOFFSETP_Pos));
780 register const uint32_t *preg = __OPAMP_PTR_REG_OFFSET(OPAMPx->OTR, (PowerMode & OPAMP_POWERMODE_OTR_REGOFFSET_MASK));
786 return (uint32_t)(READ_BIT(*preg, (TransistorsDiffPair & OPAMP_TRIMMING_VALUE_MASK))
787 >> ((TransistorsDiffPair == LL_OPAMP_TRIMMING_NMOS) ? OPAMP_OTR_TRIMOFFSETN_Pos : OPAMP_OTR_TRIMOFFSETP_Pos));
808 SET_BIT(OPAMPx->CSR, OPAMP_CSR_OPAMPxEN);
819 CLEAR_BIT(OPAMPx->CSR, OPAMP_CSR_OPAMPxEN);
831 return ((READ_BIT(OPAMPx->CSR, OPAMP_CSR_OPAMPxEN) == (OPAMP_CSR_OPAMPxEN)) ? 1UL : 0UL);
838 #if defined(USE_FULL_LL_DRIVER) __STATIC_INLINE void LL_OPAMP_SetMode(OPAMP_TypeDef *OPAMPx, uint32_t Mode)
Set OPAMP mode calibration or functional.
__STATIC_INLINE void LL_OPAMP_Enable(OPAMP_TypeDef *OPAMPx)
Enable OPAMP instance.
void LL_OPAMP_StructInit(LL_OPAMP_InitTypeDef *OPAMP_InitStruct)
Set each LL_OPAMP_InitTypeDef field to default value.
__STATIC_INLINE uint32_t LL_OPAMP_GetCalibrationSelection(OPAMP_TypeDef *OPAMPx)
Get OPAMP offset to calibrate the selected transistors differential pair NMOS or PMOS.
__STATIC_INLINE uint32_t LL_OPAMP_GetFunctionalMode(OPAMP_TypeDef *OPAMPx)
Get OPAMP functional mode from setting of internal connections. OPAMP operation in standalone...
__STATIC_INLINE void LL_OPAMP_SetNonInvertingInput(OPAMP_TypeDef *OPAMPx, uint32_t NonInvertingInput)
__STATIC_INLINE void LL_OPAMP_Disable(OPAMP_TypeDef *OPAMPx)
Disable OPAMP instance. CSR OPAMPXEN LL_OPAMP_Disable.
__STATIC_INLINE uint32_t LL_OPAMP_IsEnabled(OPAMP_TypeDef *OPAMPx)
Get OPAMP instance enable state (0: OPAMP is disabled, 1: OPAMP is enabled) CSR OPAMPXEN LL_OPAMP_Is...
__STATIC_INLINE void LL_OPAMP_SetTrimmingValue(OPAMP_TypeDef *OPAMPx, uint32_t PowerMode, uint32_t TransistorsDiffPair, uint32_t TrimmingValue)
Set OPAMP trimming factor for the selected transistors differential pair NMOS or PMOS, corresponding to the selected power mode. OTR TRIMOFFSETN LL_OPAMP_SetTrimmingValue OTR TRIMOFFSETP LL_OPAMP_SetTrimmingValue LPOTR TRIMLPOFFSETN LL_OPAMP_SetTrimmingValue LPOTR TRIMLPOFFSETP LL_OPAMP_SetTrimmingValue.
__STATIC_INLINE void LL_OPAMP_SetTrimmingMode(OPAMP_TypeDef *OPAMPx, uint32_t TrimmingMode)
Set OPAMP trimming mode. CSR USERTRIM LL_OPAMP_SetTrimmingMode.
__STATIC_INLINE uint32_t LL_OPAMP_IsCalibrationOutputSet(OPAMP_TypeDef *OPAMPx)
Get OPAMP calibration result of toggling output.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
Structure definition of some features of OPAMP instance.
__STATIC_INLINE uint32_t LL_OPAMP_GetTrimmingMode(OPAMP_TypeDef *OPAMPx)
Get OPAMP trimming mode. CSR USERTRIM LL_OPAMP_GetTrimmingMode.
__STATIC_INLINE void LL_OPAMP_SetCalibrationSelection(OPAMP_TypeDef *OPAMPx, uint32_t TransistorsDiffPair)
Set OPAMP offset to calibrate the selected transistors differential pair NMOS or PMOS.
__STATIC_INLINE uint32_t LL_OPAMP_GetMode(OPAMP_TypeDef *OPAMPx)
Get OPAMP mode calibration or functional.
__STATIC_INLINE uint32_t LL_OPAMP_GetPGAGain(OPAMP_TypeDef *OPAMPx)
Get OPAMP PGA gain.
uint32_t InputNonInverting
__STATIC_INLINE void LL_OPAMP_SetPGAGain(OPAMP_TypeDef *OPAMPx, uint32_t PGAGain)
Set OPAMP PGA gain.
__STATIC_INLINE void LL_OPAMP_SetPowerMode(OPAMP_TypeDef *OPAMPx, uint32_t PowerMode)
Set OPAMP power mode.
__STATIC_INLINE void LL_OPAMP_SetCommonPowerRange(OPAMP_Common_TypeDef *OPAMPxy_COMMON, uint32_t PowerRange)
Set OPAMP power range.
__STATIC_INLINE uint32_t LL_OPAMP_GetCommonPowerRange(OPAMP_Common_TypeDef *OPAMPxy_COMMON)
Get OPAMP power range.
ErrorStatus LL_OPAMP_Init(OPAMP_TypeDef *OPAMPx, LL_OPAMP_InitTypeDef *OPAMP_InitStruct)
Initialize some features of OPAMP instance.
__STATIC_INLINE void LL_OPAMP_SetFunctionalMode(OPAMP_TypeDef *OPAMPx, uint32_t FunctionalMode)
Set OPAMP functional mode by setting internal connections. OPAMP operation in standalone, follower, ...
ErrorStatus LL_OPAMP_DeInit(OPAMP_TypeDef *OPAMPx)
De-initialize registers of the selected OPAMP instance to their default reset values.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
__STATIC_INLINE void LL_OPAMP_SetInvertingInput(OPAMP_TypeDef *OPAMPx, uint32_t InvertingInput)
__STATIC_INLINE uint32_t LL_OPAMP_GetTrimmingValue(OPAMP_TypeDef *OPAMPx, uint32_t PowerMode, uint32_t TransistorsDiffPair)
Get OPAMP trimming factor for the selected transistors differential pair NMOS or PMOS, corresponding to the selected power mode. OTR TRIMOFFSETN LL_OPAMP_GetTrimmingValue OTR TRIMOFFSETP LL_OPAMP_GetTrimmingValue LPOTR TRIMLPOFFSETN LL_OPAMP_GetTrimmingValue LPOTR TRIMLPOFFSETP LL_OPAMP_GetTrimmingValue.
__STATIC_INLINE uint32_t LL_OPAMP_GetPowerMode(OPAMP_TypeDef *OPAMPx)
Get OPAMP power mode. CSR OPALPM LL_OPAMP_GetPowerMode.