2021-07-02 22:19:04 +02:00
/**
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* @ file stm32g4xx_hal_opamp . h
* @ author MCD Application Team
* @ brief Header file of OPAMP HAL module .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* @ attention
*
2022-01-12 01:09:32 +01:00
* Copyright ( c ) 2019 STMicroelectronics .
* All rights reserved .
2021-07-02 22:19:04 +02:00
*
2022-01-12 01:09:32 +01:00
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component .
* If no LICENSE file comes with this software , it is provided AS - IS .
2021-07-02 22:19:04 +02:00
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
/* Define to prevent recursive inclusion -------------------------------------*/
# ifndef STM32G4xx_HAL_OPAMP_H
# define STM32G4xx_HAL_OPAMP_H
# ifdef __cplusplus
extern " C " {
# endif
/* Includes ------------------------------------------------------------------*/
# include "stm32g4xx_hal_def.h"
/** @addtogroup STM32G4xx_HAL_Driver
* @ {
*/
/** @addtogroup OPAMP
* @ {
*/
/* Exported types ------------------------------------------------------------*/
/** @defgroup OPAMP_Exported_Types OPAMP Exported Types
* @ {
*/
/**
* @ brief OPAMP Init structure definition
*/
typedef struct
{
uint32_t PowerMode ; /*!< Specifies the power mode Normal or High Speed.
This parameter must be a value of @ ref OPAMP_PowerMode */
uint32_t Mode ; /*!< Specifies the OPAMP mode
This parameter must be a value of @ ref OPAMP_Mode
mode is either Standalone , Follower or PGA */
uint32_t InvertingInput ; /*!< Specifies the inverting input in Standalone & Pga modes
- In Standalone mode : i . e when mode is OPAMP_STANDALONE_MODE
This parameter must be a value of @ ref OPAMP_InvertingInput
InvertingInput is either VINM0 or VINM1
- In PGA mode : i . e when mode is OPAMP_PGA_MODE
& in Follower mode i . e when mode is OPAMP_FOLLOWER_MODE
This parameter is Not Applicable */
uint32_t NonInvertingInput ; /*!< Specifies the non inverting input of the opamp:
This parameter must be a value of @ ref OPAMP_NonInvertingInput
NonInvertingInput is either VINP0 , VINP1 , VINP2 or VINP3 */
FunctionalState InternalOutput ; /*!< Specifies the configuration of the internal output from OPAMP to ADC.
This parameter can be ENABLE or DISABLE
Note : When this output is enabled , regular output to I / O is disabled */
uint32_t TimerControlledMuxmode ; /*!< Specifies if the Timer controlled Mux mode is enabled or disabled
This parameter must be a single value of @ ref OPAMP_TimerControlledMuxmode
or a combination of them to build a more complex switch scheme by
using different timers */
uint32_t InvertingInputSecondary ; /*!< Specifies the inverting input (secondary) of the opamp when
TimerControlledMuxmode is enabled
i . e . when TimerControlledMuxmode is OPAMP_TIMERCONTROLLEDMUXMODE_ENABLE
- In Standalone mode : i . e when mode is OPAMP_STANDALONE_MODE
This parameter must be a value of @ ref OPAMP_InvertingInputSecondary
InvertingInputSecondary is either VINM0 or VINM1
- In PGA mode : i . e when mode is OPAMP_PGA_MODE
& in Follower mode i . e when mode is OPAMP_FOLLOWER_MODE
This parameter must be a value of @ ref OPAMP_InvertingInputSecondary
and is used to choose secondary mode ( PGA or follower ) */
uint32_t NonInvertingInputSecondary ; /*!< Specifies the non inverting input (secondary) of the opamp when
TimerControlledMuxmode is enabled
i . e . when TimerControlledMuxmode is OPAMP_TIMERCONTROLLEDMUXMODE_ENABLE
This parameter must be a value of @ ref OPAMP_NonInvertingInputSecondary
NonInvertingInput is either VINP0 , VINP1 , VINP2 or VINP3 */
uint32_t PgaConnect ; /*!< Specifies the inverting pin in PGA mode
i . e . when mode is OPAMP_PGA_MODE
This parameter must be a value of @ ref OPAMP_PgaConnect
Either : not connected , connected to VINM0
In this last case , VINM0 can then be used to input signal ( negative gain case
with or without bias on VINPx ) or to input bias ( positive gain case with bias ) */
uint32_t PgaGain ; /*!< Specifies the gain in PGA mode
i . e . when mode is OPAMP_PGA_MODE .
This parameter must be a value of @ ref OPAMP_PgaGain
( 2 , 4 , 8 , 16 , 32 or 64 ) for positive gain & ( - 1 , - 3 , - 7 , - 15 , - 31 or - 63 ) for negative gain */
uint32_t UserTrimming ; /*!< Specifies the trimming mode
This parameter must be a value of @ ref OPAMP_UserTrimming
UserTrimming is either factory or user trimming */
uint32_t TrimmingValueP ; /*!< Specifies the offset trimming value (PMOS)
i . e . when UserTrimming is OPAMP_TRIMMING_USER .
This parameter must be a number between Min_Data = 1 and Max_Data = 31 */
uint32_t TrimmingValueN ; /*!< Specifies the offset trimming value (NMOS)
i . e . when UserTrimming is OPAMP_TRIMMING_USER .
This parameter must be a number between Min_Data = 1 and Max_Data = 31 */
} OPAMP_InitTypeDef ;
/**
* @ brief HAL State structures definition
*/
typedef enum
{
HAL_OPAMP_STATE_RESET = 0x00000000UL , /*!< OPAMP is not yet Initialized */
HAL_OPAMP_STATE_READY = 0x00000001UL , /*!< OPAMP is initialized and ready for use */
HAL_OPAMP_STATE_CALIBBUSY = 0x00000002UL , /*!< OPAMP is enabled in auto calibration mode */
HAL_OPAMP_STATE_BUSY = 0x00000004UL , /*!< OPAMP is enabled and running in normal mode */
HAL_OPAMP_STATE_BUSYLOCKED = 0x00000005UL , /*!< OPAMP control register is locked
only system reset allows reconfiguring the opamp . */
} HAL_OPAMP_StateTypeDef ;
/**
* @ brief OPAMP Handle Structure definition
*/
# if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1)
typedef struct __OPAMP_HandleTypeDef
# else
typedef struct
# endif
{
OPAMP_TypeDef * Instance ; /*!< OPAMP instance's registers base address */
OPAMP_InitTypeDef Init ; /*!< OPAMP required parameters */
HAL_StatusTypeDef Status ; /*!< OPAMP peripheral status */
HAL_LockTypeDef Lock ; /*!< Locking object */
__IO HAL_OPAMP_StateTypeDef State ; /*!< OPAMP communication state */
# if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1)
void ( * MspInitCallback ) ( struct __OPAMP_HandleTypeDef * hopamp ) ;
void ( * MspDeInitCallback ) ( struct __OPAMP_HandleTypeDef * hopamp ) ;
# endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */
} OPAMP_HandleTypeDef ;
/**
* @ brief OPAMP_TrimmingValueTypeDef definition
*/
typedef uint32_t OPAMP_TrimmingValueTypeDef ;
/**
* @ }
*/
# if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1)
/**
* @ brief HAL OPAMP Callback ID enumeration definition
*/
typedef enum
{
HAL_OPAMP_MSPINIT_CB_ID = 0x01UL , /*!< OPAMP MspInit Callback ID */
HAL_OPAMP_MSPDEINIT_CB_ID = 0x02UL , /*!< OPAMP MspDeInit Callback ID */
HAL_OPAMP_ALL_CB_ID = 0x03UL /*!< OPAMP All ID */
} HAL_OPAMP_CallbackIDTypeDef ;
/**
* @ brief HAL OPAMP Callback pointer definition
*/
typedef void ( * pOPAMP_CallbackTypeDef ) ( OPAMP_HandleTypeDef * hopamp ) ;
# endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */
/* Exported constants --------------------------------------------------------*/
/** @defgroup OPAMP_Exported_Constants OPAMP Exported Constants
* @ {
*/
/** @defgroup OPAMP_Mode OPAMP Mode
* @ {
*/
# define OPAMP_STANDALONE_MODE (0x00000000UL) /*!< standalone mode */
# define OPAMP_PGA_MODE OPAMP_CSR_VMSEL_1 /*!< PGA mode */
# define OPAMP_FOLLOWER_MODE OPAMP_CSR_VMSEL /*!< follower mode */
/**
* @ }
*/
/** @defgroup OPAMP_NonInvertingInput OPAMP Non Inverting Input
* @ {
*/
# define OPAMP_NONINVERTINGINPUT_IO0 (0x00000000UL) / *!< Non inverting input connected to I / O VINP0
( PA1 for OPAMP1 , PA7 for OPAMP2 , PB0 for OPAMP3 , PB13 for OPAMP4 , PB14 for OPAMP5 , PB12 for OPAMP6 )
Note : On this STM32 series , all OPAMPx are not available on all devices . Refer to device datasheet for more details */
# define OPAMP_NONINVERTINGINPUT_IO1 OPAMP_CSR_VPSEL_0 / *!< Non inverting input connected to I / O VINP1
( PA3 for OPAMP1 , PB14 for OPAMP2 , PB13 for OPAMP3 , PD11 for OPAMP4 , PD12 for OPAMP5 , PD9 for OPAMP6 )
Note : On this STM32 series , all OPAMPx are not available on all devices . Refer to device datasheet for more details */
# define OPAMP_NONINVERTINGINPUT_IO2 OPAMP_CSR_VPSEL_1 / *!< Non inverting input connected to I / O VINP2
( PA7 for OPAMP1 , PB0 for OPAMP2 , PA1 for OPAMP3 , PB11 for OPAMP4 , PC3 for OPAMP5 , PB13 for OPAMP6 )
Note : On this STM32 series , all OPAMPx are not available on all devices . Refer to device datasheet for more details */
# define OPAMP_NONINVERTINGINPUT_IO3 OPAMP_CSR_VPSEL / *!< Non inverting input connected to I / O VINP3
( PD14 for OPAMP2 ) */
# define OPAMP_NONINVERTINGINPUT_DAC OPAMP_CSR_VPSEL / *!< Non inverting input connected internally to DAC channel
( DAC3_CH1 for OPAMP1 , DAC3_CH2 for OPAMP3 , DAC4_CH1 for OPAMP4 , DAC4_CH2 for OPAMP5 , DAC3_CH1 for OPAMP6 )
Note : On this STM32 series , all OPAMPx are not available on all devices . Refer to device datasheet for more details */
/**
* @ }
*/
/** @defgroup OPAMP_InvertingInput OPAMP Inverting Input
* @ {
*/
# define OPAMP_INVERTINGINPUT_IO0 (0x00000000UL) / *!< Inverting input connected to I / O VINM0
( PA3 for OPAMP1 , PA5 for OPAMP2 , PB2 for OPAMP3 , PB10 for OPAMP4 , PB15 for OPAMP5 , PA1 for OPAMP6 )
Note : On this STM32 series , all OPAMPx are not available on all devices . Refer to device datasheet for more details */
# define OPAMP_INVERTINGINPUT_IO1 OPAMP_CSR_VMSEL_0 / *!< Inverting input connected to I / 0 VINM1
( PC5 for OPAMP1 , PC5 for OPAMP2 , PB10 for OPAMP3 , PB8 for OPAMP4 , PA3 for OPAMP5 , PB1 for OPAMP6 )
Note : On this STM32 series , all OPAMPx are not available on all devices . Refer to device datasheet for more details */
/**
* @ }
*/
/** @defgroup OPAMP_TimerControlledMuxmode OPAMP Timer Controlled Mux mode
* @ note The switch can be controlled either by a single timer or a combination of them ,
* in this case application has to ' ORed ' the values below
* ex OPAMP_TIMERCONTROLLEDMUXMODE_TIM1_CH6 | OPAMP_TIMERCONTROLLEDMUXMODE_TIM20_CH6
* @ {
*/
# define OPAMP_TIMERCONTROLLEDMUXMODE_DISABLE (0x00000000UL) /*!< Timer controlled Mux mode disabled */
# define OPAMP_TIMERCONTROLLEDMUXMODE_TIM1_CH6 OPAMP_TCMR_T1CMEN /*!< Timer controlled Mux mode enabled using TIM1 OC6 */
# define OPAMP_TIMERCONTROLLEDMUXMODE_TIM8_CH6 OPAMP_TCMR_T8CMEN /*!< Timer controlled Mux mode enabled using TIM8 OC6 */
# if defined(TIM20)
# define OPAMP_TIMERCONTROLLEDMUXMODE_TIM20_CH6 OPAMP_TCMR_T20CMEN / *!< Timer controlled Mux mode enabled using TIM20 OC6
Note : On this STM32 series , TIM20 is not available on all devices . Refer to device datasheet for more details */
# endif
/**
* @ }
*/
/** @defgroup OPAMP_NonInvertingInputSecondary OPAMP Non Inverting Input Secondary
* @ {
*/
# define OPAMP_SEC_NONINVERTINGINPUT_IO0 (0x00000000UL) / *!< Secondary non inverting input connected to I / O VINP0
( PA1 for OPAMP1 , PA7 for OPAMP2 , PB0 for OPAMP3 , PB13 for OPAMP4 , PB14 for OPAMP5 , PB12 for OPAMP6 )
Note : On this STM32 series , all OPAMPx are not available on all devices . Refer to device datasheet for more details */
# define OPAMP_SEC_NONINVERTINGINPUT_IO1 OPAMP_TCMR_VPSSEL_0 / *!< Secondary non inverting input connected to I / O VINP1
( PA3 for OPAMP1 , PB14 for OPAMP2 , PB13 for OPAMP3 , PD11 for OPAMP4 , PD12 for OPAMP5 , PD9 for OPAMP6 )
Note : On this STM32 series , all OPAMPx are not available on all devices . Refer to device datasheet for more details */
# define OPAMP_SEC_NONINVERTINGINPUT_IO2 OPAMP_TCMR_VPSSEL_1 / *!< Secondary non inverting input connected to I / O VINP2
( PA7 for OPAMP1 , PB0 for OPAMP2 , PA1 for OPAMP3 , PB11 for OPAMP4 , PC3 for OPAMP5 , PB13 for OPAMP6 )
Note : On this STM32 series , all OPAMPx are not available on all devices . Refer to device datasheet for more details */
# define OPAMP_SEC_NONINVERTINGINPUT_IO3 OPAMP_TCMR_VPSSEL / *!< Secondary non inverting input connected to I / O VINP3
( PD14 for OPAMP2 ) */
# define OPAMP_SEC_NONINVERTINGINPUT_DAC OPAMP_TCMR_VPSSEL / *!< Secondary non inverting input connected internally to DAC channel
( DAC3_CH1 for OPAMP1 , DAC3_CH2 for OPAMP3 , DAC4_CH1 for OPAMP4 , DAC4_CH2 for OPAMP5 , DAC3_CH1 for OPAMP6 )
Note : On this STM32 series , all OPAMPx are not available on all devices . Refer to device datasheet for more details */
/**
* @ }
*/
/** @defgroup OPAMP_InvertingInputSecondary OPAMP Inverting Input Secondary
* @ {
*/
# define OPAMP_SEC_INVERTINGINPUT_IO0 (0x00000000UL) / *!< OPAMP secondary mode is standalone mode - Only applicable if @ref OPAMP_STANDALONE_MODE
has been configured by call to @ ref HAL_OPAMP_Init ( ) .
Secondary inverting input connected to I / O VINM0
( PA3 for OPAMP1 , PA5 for OPAMP2 , PB2 for OPAMP3 , PB10 for OPAMP4 , PB15 for OPAMP5 , PA1 for OPAMP6 )
Note : On this STM32 series , all OPAMPx are not available on all devices . Refer to device datasheet for more details */
# define OPAMP_SEC_INVERTINGINPUT_IO1 OPAMP_TCMR_VMSSEL / *!< OPAMP secondary mode is standalone mode - Only applicable if @ref OPAMP_STANDALONE_MODE
has been configured by call to @ ref HAL_OPAMP_Init ( ) .
Secondary inverting input connected to I / 0 VINM1
( PC5 for OPAMP1 , PC5 for OPAMP2 , PB10 for OPAMP3 , PB8 for OPAMP4 , PA3 for OPAMP5 , PB1 for OPAMP6 )
Note : On this STM32 series , all OPAMPx are not available on all devices . Refer to device datasheet for more details */
# define OPAMP_SEC_INVERTINGINPUT_PGA (0x00000000UL) / *!< OPAMP secondary mode is PGA mode - Only applicable if configured mode through call to @ref HAL_OPAMP_Init()
is @ ref OPAMP_PGA_MODE or @ ref OPAMP_FOLLOWER_MODE .
OPAMP secondary inverting input is :
- Not connected if configured mode is @ ref OPAMP_FOLLOWER_MODE
- Not connected if configured mode is @ ref OPAMP_PGA_MODE and PGA connect mode is @ ref OPAMP_PGA_CONNECT_INVERTINGINPUT_NO
- Connected to VINM0 and possibly VINM1 if any of the other modes as been configured
( see @ ref OPAMP_PgaConnect description for more details on PGA connection modes ) */
# define OPAMP_SEC_INVERTINGINPUT_FOLLOWER OPAMP_TCMR_VMSSEL / *!< OPAMP secondary mode is Follower mode - Only applicable if configured mode through call to @ref HAL_OPAMP_Init()
is @ ref OPAMP_PGA_MODE or @ ref OPAMP_FOLLOWER_MODE .
OPAMP secondary inverting input is not connected . */
/**
* @ }
*/
/** @defgroup OPAMP_PgaConnect OPAMP Pga Connect
* @ {
*/
# define OPAMP_PGA_CONNECT_INVERTINGINPUT_NO (0x00000000UL) /*!< In PGA mode, the inverting input is not connected */
# define OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0 OPAMP_CSR_PGGAIN_4 /*!< In PGA mode, the inverting input is connected to VINM0 for filtering */
# define OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0_BIAS OPAMP_CSR_PGGAIN_3 / *!< In PGA mode, the inverting input is connected to VINM0
- Input signal on VINM0 , bias on VINPx : negative gain
- Bias on VINM0 , input signal on VINPx : positive gain */
# define OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0_IO1_BIAS (OPAMP_CSR_PGGAIN_4|OPAMP_CSR_PGGAIN_3) / *!< In PGA mode, the inverting input is connected to VINM0
- Input signal on VINM0 , bias on VINPx : negative gain
- Bias on VINM0 , input signal on VINPx : positive gain
And VINM1 is connected too for filtering */
/**
* @ }
*/
/** @defgroup OPAMP_PgaGain OPAMP Pga Gain
* @ note Gain sign :
* - is positive if the @ ref OPAMP_PgaConnect configuration is
* @ ref OPAMP_PGA_CONNECT_INVERTINGINPUT_NO or OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0
* - may be positive or negative if the @ ref OPAMP_PgaConnect configuration is
* @ ref OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0_BIAS or OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0_IO1_BIAS
* see @ ref OPAMP_PgaConnect for more details
* @ {
*/
# define OPAMP_PGA_GAIN_2_OR_MINUS_1 (0x00000000UL) /*!< PGA gain could be 2 or -1 */
# define OPAMP_PGA_GAIN_4_OR_MINUS_3 ( OPAMP_CSR_PGGAIN_0) /*!< PGA gain could be 4 or -3 */
# define OPAMP_PGA_GAIN_8_OR_MINUS_7 ( OPAMP_CSR_PGGAIN_1 ) /*!< PGA gain could be 8 or -7 */
# define OPAMP_PGA_GAIN_16_OR_MINUS_15 ( OPAMP_CSR_PGGAIN_1 | OPAMP_CSR_PGGAIN_0) /*!< PGA gain could be 16 or -15 */
# define OPAMP_PGA_GAIN_32_OR_MINUS_31 (OPAMP_CSR_PGGAIN_2 ) /*!< PGA gain could be 32 or -31 */
# define OPAMP_PGA_GAIN_64_OR_MINUS_63 (OPAMP_CSR_PGGAIN_2 | OPAMP_CSR_PGGAIN_0) /*!< PGA gain could be 64 or -63 */
/**
* @ }
*/
/** @defgroup OPAMP_PowerMode OPAMP PowerMode
* @ {
*/
# define OPAMP_POWERMODE_NORMALSPEED (0x00000000UL) /*!< Output in normal mode */
# define OPAMP_POWERMODE_HIGHSPEED OPAMP_CSR_HIGHSPEEDEN /*!< Output in highspeed mode */
/**
* @ }
*/
/** @defgroup OPAMP_UserTrimming OPAMP User Trimming
* @ {
*/
# define OPAMP_TRIMMING_FACTORY (0x00000000UL) /*!< Factory trimming */
# define OPAMP_TRIMMING_USER OPAMP_CSR_USERTRIM /*!< User trimming */
/**
* @ }
*/
/** @defgroup OPAMP_FactoryTrimming OPAMP Factory Trimming
* @ {
*/
# define OPAMP_FACTORYTRIMMING_DUMMY (0xFFFFFFFFUL) /*!< Dummy trimming value */
# define OPAMP_FACTORYTRIMMING_N (0x00000000UL) /*!< Offset trimming N */
# define OPAMP_FACTORYTRIMMING_P (0x00000001UL) /*!< Offset trimming P */
/**
* @ }
*/
/** @defgroup OPAMP_VREF OPAMP VREF
* @ {
*/
# define OPAMP_VREF_3VDDA (0x00000000UL) /*!< OPAMP Vref = 3.3% VDDA */
# define OPAMP_VREF_10VDDA OPAMP_CSR_CALSEL_0 /*!< OPAMP Vref = 10% VDDA */
# define OPAMP_VREF_50VDDA OPAMP_CSR_CALSEL_1 /*!< OPAMP Vref = 50% VDDA */
# define OPAMP_VREF_90VDDA OPAMP_CSR_CALSEL /*!< OPAMP Vref = 90% VDDA */
/**
* @ }
*/
/**
* @ }
*/
/* Private constants ---------------------------------------------------------*/
/** @defgroup OPAMP_Private_Constants OPAMP Private Constants
* @ brief OPAMP Private constants and defines
* @ {
*/
/** @defgroup OPAMP_Input OPAMP Input
* @ {
*/
# define OPAMP_INPUT_INVERTING ( 24UL) /*!< Inverting input */
# define OPAMP_INPUT_NONINVERTING ( 19UL) /*!< Non inverting input */
# define IS_OPAMP_INPUT(INPUT) (((INPUT) == OPAMP_INPUT_INVERTING) || \
( ( INPUT ) = = OPAMP_INPUT_NONINVERTING ) )
/**
* @ }
*/
/**
* @ }
*/
/* Private macro -------------------------------------------------------------*/
/** @defgroup OPAMP_Private_Macros OPAMP Private Macros
* @ {
*/
# define IS_OPAMP_FUNCTIONAL_NORMALMODE(INPUT) (((INPUT) == OPAMP_STANDALONE_MODE) || \
( ( INPUT ) = = OPAMP_PGA_MODE ) | | \
( ( INPUT ) = = OPAMP_FOLLOWER_MODE ) )
# define IS_OPAMP_NONINVERTING_INPUT(INPUT) (((INPUT) == OPAMP_NONINVERTINGINPUT_IO0) || \
( ( INPUT ) = = OPAMP_NONINVERTINGINPUT_IO1 ) | | \
( ( INPUT ) = = OPAMP_NONINVERTINGINPUT_IO2 ) | | \
( ( INPUT ) = = OPAMP_NONINVERTINGINPUT_IO3 ) | | \
( ( INPUT ) = = OPAMP_NONINVERTINGINPUT_DAC ) )
# define IS_OPAMP_INVERTING_INPUT(INPUT) (((INPUT) == OPAMP_INVERTINGINPUT_IO0) || \
( ( INPUT ) = = OPAMP_INVERTINGINPUT_IO1 ) )
# if defined(TIM20)
# define IS_OPAMP_TIMERCONTROLLED_MUXMODE(MUXMODE) \
( ( MUXMODE ) < = ( OPAMP_TIMERCONTROLLEDMUXMODE_TIM1_CH6 | \
OPAMP_TIMERCONTROLLEDMUXMODE_TIM8_CH6 | \
OPAMP_TIMERCONTROLLEDMUXMODE_TIM20_CH6 ) )
# else
# define IS_OPAMP_TIMERCONTROLLED_MUXMODE(MUXMODE) \
( ( MUXMODE ) < = ( OPAMP_TIMERCONTROLLEDMUXMODE_TIM1_CH6 | \
OPAMP_TIMERCONTROLLEDMUXMODE_TIM8_CH6 ) )
# endif
# define IS_OPAMP_SEC_NONINVERTING_INPUT(INPUT) (((INPUT) == OPAMP_SEC_NONINVERTINGINPUT_IO0) || \
( ( INPUT ) = = OPAMP_SEC_NONINVERTINGINPUT_IO1 ) | | \
( ( INPUT ) = = OPAMP_SEC_NONINVERTINGINPUT_IO2 ) | | \
( ( INPUT ) = = OPAMP_SEC_NONINVERTINGINPUT_IO3 ) | | \
( ( INPUT ) = = OPAMP_SEC_NONINVERTINGINPUT_DAC ) )
# define IS_OPAMP_SEC_INVERTING_INPUT(INPUT) (((INPUT) == OPAMP_SEC_INVERTINGINPUT_IO0) || \
( ( INPUT ) = = OPAMP_SEC_INVERTINGINPUT_IO1 ) | | \
( ( INPUT ) = = OPAMP_SEC_INVERTINGINPUT_PGA ) | | \
( ( INPUT ) = = OPAMP_SEC_INVERTINGINPUT_FOLLOWER ) )
# define IS_OPAMP_PGACONNECT(CONNECT) (((CONNECT) == OPAMP_PGA_CONNECT_INVERTINGINPUT_NO) || \
( ( CONNECT ) = = OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0 ) | | \
( ( CONNECT ) = = OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0_BIAS ) | | \
( ( CONNECT ) = = OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0_IO1_BIAS ) )
# define IS_OPAMP_PGA_GAIN(GAIN) (((GAIN) == OPAMP_PGA_GAIN_2_OR_MINUS_1) || \
( ( GAIN ) = = OPAMP_PGA_GAIN_4_OR_MINUS_3 ) | | \
( ( GAIN ) = = OPAMP_PGA_GAIN_8_OR_MINUS_7 ) | | \
( ( GAIN ) = = OPAMP_PGA_GAIN_16_OR_MINUS_15 ) | | \
( ( GAIN ) = = OPAMP_PGA_GAIN_32_OR_MINUS_31 ) | | \
( ( GAIN ) = = OPAMP_PGA_GAIN_64_OR_MINUS_63 ) )
2022-01-12 01:09:32 +01:00
# define IS_OPAMP_POWERMODE(POWERMODE) (((POWERMODE) == OPAMP_POWERMODE_NORMALSPEED) || \
2021-07-02 22:19:04 +02:00
( ( POWERMODE ) = = OPAMP_POWERMODE_HIGHSPEED ) )
# define IS_OPAMP_TRIMMING(TRIMMING) (((TRIMMING) == OPAMP_TRIMMING_FACTORY) || \
( ( TRIMMING ) = = OPAMP_TRIMMING_USER ) )
# define IS_OPAMP_FACTORYTRIMMING(TRIMMING) (((TRIMMING) == OPAMP_FACTORYTRIMMING_N) || \
( ( TRIMMING ) = = OPAMP_FACTORYTRIMMING_P ) )
# define IS_OPAMP_TRIMMINGVALUE(TRIMMINGVALUE) ((TRIMMINGVALUE) <= 0x1FUL)
# define IS_OPAMP_VREF(VREF) (((VREF) == OPAMP_VREF_3VDDA) || \
( ( VREF ) = = OPAMP_VREF_10VDDA ) | | \
( ( VREF ) = = OPAMP_VREF_50VDDA ) | | \
( ( VREF ) = = OPAMP_VREF_90VDDA ) )
/**
* @ }
*/
/* Exported macros -----------------------------------------------------------*/
/** @defgroup OPAMP_Exported_Macros OPAMP Exported Macros
* @ {
*/
/** @brief Reset OPAMP handle state
* @ param __HANDLE__ OPAMP handle .
* @ retval None
*/
# define __HAL_OPAMP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_OPAMP_STATE_RESET)
/**
* @ }
*/
/* Include OPAMP HAL Extended module */
# include "stm32g4xx_hal_opamp_ex.h"
/* Exported functions --------------------------------------------------------*/
/** @defgroup OPAMP_Exported_Functions OPAMP Exported Functions
* @ {
*/
/** @defgroup OPAMP_Exported_Functions_Group1 Initialization and de-initialization functions
* @ {
*/
/* Initialization/de-initialization functions **********************************/
HAL_StatusTypeDef HAL_OPAMP_Init ( OPAMP_HandleTypeDef * hopamp ) ;
HAL_StatusTypeDef HAL_OPAMP_DeInit ( OPAMP_HandleTypeDef * hopamp ) ;
void HAL_OPAMP_MspInit ( OPAMP_HandleTypeDef * hopamp ) ;
void HAL_OPAMP_MspDeInit ( OPAMP_HandleTypeDef * hopamp ) ;
/**
* @ }
*/
/** @defgroup OPAMP_Exported_Functions_Group2 Input and Output operation functions
* @ {
*/
/* I/O operation functions *****************************************************/
HAL_StatusTypeDef HAL_OPAMP_Start ( OPAMP_HandleTypeDef * hopamp ) ;
HAL_StatusTypeDef HAL_OPAMP_Stop ( OPAMP_HandleTypeDef * hopamp ) ;
HAL_StatusTypeDef HAL_OPAMP_SelfCalibrate ( OPAMP_HandleTypeDef * hopamp ) ;
/**
* @ }
*/
/** @defgroup OPAMP_Exported_Functions_Group3 Peripheral Control functions
* @ {
*/
/* Peripheral Control functions ************************************************/
# if (USE_HAL_OPAMP_REGISTER_CALLBACKS == 1)
/* OPAMP callback registering/unregistering */
HAL_StatusTypeDef HAL_OPAMP_RegisterCallback ( OPAMP_HandleTypeDef * hopamp , HAL_OPAMP_CallbackIDTypeDef CallbackId ,
pOPAMP_CallbackTypeDef pCallback ) ;
HAL_StatusTypeDef HAL_OPAMP_UnRegisterCallback ( OPAMP_HandleTypeDef * hopamp , HAL_OPAMP_CallbackIDTypeDef CallbackId ) ;
# endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */
HAL_StatusTypeDef HAL_OPAMP_Lock ( OPAMP_HandleTypeDef * hopamp ) ;
HAL_StatusTypeDef HAL_OPAMP_LockTimerMux ( OPAMP_HandleTypeDef * hopamp ) ;
/**
* @ }
*/
/** @defgroup OPAMP_Exported_Functions_Group4 Peripheral State functions
* @ {
*/
/* Peripheral State functions **************************************************/
HAL_OPAMP_StateTypeDef HAL_OPAMP_GetState ( OPAMP_HandleTypeDef * hopamp ) ;
OPAMP_TrimmingValueTypeDef HAL_OPAMP_GetTrimOffset ( OPAMP_HandleTypeDef * hopamp , uint32_t trimmingoffset ) ;
/**
* @ }
*/
/**
* @ }
*/
/**
* @ }
*/
/**
* @ }
*/
# ifdef __cplusplus
}
# endif
# endif /* STM32G4xx_HAL_OPAMP_H */