607 lines
20 KiB
C
607 lines
20 KiB
C
/**
|
|
*******************************************************************************************************
|
|
* @file fm33lg0xx_fl_opa.h
|
|
* @author FMSH Application Team
|
|
* @brief Head file of OPA FL Module
|
|
*******************************************************************************************************
|
|
* @attention
|
|
*
|
|
* Copyright (c) [2021] [Fudan Microelectronics]
|
|
* THIS SOFTWARE is licensed under Mulan PSL v2.
|
|
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
* You may obtain a copy of Mulan PSL v2 at:
|
|
* http://license.coscl.org.cn/MulanPSL2
|
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
* See the Mulan PSL v2 for more details.
|
|
*
|
|
*******************************************************************************************************
|
|
*/
|
|
|
|
|
|
/* Define to prevent recursive inclusion---------------------------------------------------------------*/
|
|
#ifndef __FM33LG0XX_FL_OPA_H
|
|
#define __FM33LG0XX_FL_OPA_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
/* Includes -------------------------------------------------------------------------------------------*/
|
|
#include "fm33lg0xx_fl_def.h"
|
|
/** @addtogroup FM33LG0XX_FL_Driver
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup OPA OPA
|
|
* @brief OPA FL driver
|
|
* @{
|
|
*/
|
|
|
|
/* Exported types -------------------------------------------------------------------------------------*/
|
|
/** @defgroup OPA_FL_ES_INIT OPA Exported Init structures
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief FL OPA Init Sturcture definition
|
|
*/
|
|
typedef struct
|
|
{
|
|
/*! 正向输入选择 */
|
|
uint32_t INP;
|
|
/*! 反向输入选择*/
|
|
uint32_t INN;
|
|
/*! OPA 工作模式*/
|
|
uint32_t mode;
|
|
/*! PGA反向输入到选择由Pin输入 */
|
|
uint32_t negtiveToPin;
|
|
/*! PGA模式下的放大倍数*/
|
|
uint32_t gain;
|
|
/*! 低功耗模式使能 */
|
|
uint32_t lowPowermode;
|
|
/*PGA模式选择*/
|
|
uint32_t PGAModeSelect;
|
|
|
|
} FL_OPA_InitTypeDef;
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
/* Exported constants ---------------------------------------------------------------------------------*/
|
|
/** @defgroup OPA_FL_Exported_Constants OPA Exported Constants
|
|
* @{
|
|
*/
|
|
|
|
#define OPA_CR_MSEL_Pos (14U)
|
|
#define OPA_CR_MSEL_Msk (0x3U << OPA_CR_MSEL_Pos)
|
|
#define OPA_CR_MSEL OPA_CR_MSEL_Msk
|
|
|
|
#define OPA_CR_VNSEL_Pos (10U)
|
|
#define OPA_CR_VNSEL_Msk (0x3U << OPA_CR_VNSEL_Pos)
|
|
#define OPA_CR_VNSEL OPA_CR_VNSEL_Msk
|
|
|
|
#define OPA_CR_VPSEL_Pos (8U)
|
|
#define OPA_CR_VPSEL_Msk (0x3U << OPA_CR_VPSEL_Pos)
|
|
#define OPA_CR_VPSEL OPA_CR_VPSEL_Msk
|
|
|
|
#define OPA_CR_VN_EXC_Pos (6U)
|
|
#define OPA_CR_VN_EXC_Msk (0x1U << OPA_CR_VN_EXC_Pos)
|
|
#define OPA_CR_VN_EXC OPA_CR_VN_EXC_Msk
|
|
|
|
#define OPA_CR_PGA_GAIN_Pos (4U)
|
|
#define OPA_CR_PGA_GAIN_Msk (0x3U << OPA_CR_PGA_GAIN_Pos)
|
|
#define OPA_CR_PGA_GAIN OPA_CR_PGA_GAIN_Msk
|
|
|
|
#define OPA_CR_FBSEL_Pos (2U)
|
|
#define OPA_CR_FBSEL_Msk (0x3U << OPA_CR_FBSEL_Pos)
|
|
#define OPA_CR_FBSEL OPA_CR_FBSEL_Msk
|
|
|
|
#define OPA_CR_LPM_Pos (1U)
|
|
#define OPA_CR_LPM_Msk (0x1U << OPA_CR_LPM_Pos)
|
|
#define OPA_CR_LPM OPA_CR_LPM_Msk
|
|
|
|
#define OPA_CR_EN_Pos (0U)
|
|
#define OPA_CR_EN_Msk (0x1U << OPA_CR_EN_Pos)
|
|
#define OPA_CR_EN OPA_CR_EN_Msk
|
|
|
|
#define OPA_CALR_NCAL_Pos (16U)
|
|
#define OPA_CALR_NCAL_Msk (0xffU << OPA_CALR_NCAL_Pos)
|
|
#define OPA_CALR_NCAL OPA_CALR_NCAL_Msk
|
|
|
|
#define OPA_CALR_PCAL_Pos (8U)
|
|
#define OPA_CALR_PCAL_Msk (0xffU << OPA_CALR_PCAL_Pos)
|
|
#define OPA_CALR_PCAL OPA_CALR_PCAL_Msk
|
|
|
|
#define OPA_CALR_NCAL_EN_Pos (2U)
|
|
#define OPA_CALR_NCAL_EN_Msk (0x1U << OPA_CALR_NCAL_EN_Pos)
|
|
#define OPA_CALR_NCAL_EN OPA_CALR_NCAL_EN_Msk
|
|
|
|
#define OPA_CALR_PCAL_EN_Pos (1U)
|
|
#define OPA_CALR_PCAL_EN_Msk (0x1U << OPA_CALR_PCAL_EN_Pos)
|
|
#define OPA_CALR_PCAL_EN OPA_CALR_PCAL_EN_Msk
|
|
|
|
#define OPA_CALR_TRIM_MODE_Pos (0U)
|
|
#define OPA_CALR_TRIM_MODE_Msk (0x1U << OPA_CALR_TRIM_MODE_Pos)
|
|
#define OPA_CALR_TRIM_MODE OPA_CALR_TRIM_MODE_Msk
|
|
|
|
#define OPA_COR_OUT_Pos (0U)
|
|
#define OPA_COR_OUT_Msk (0x1U << OPA_COR_OUT_Pos)
|
|
#define OPA_COR_OUT OPA_COR_OUT_Msk
|
|
|
|
|
|
|
|
#define FL_OPA_GAIN_NOINVERT_X2 (0x0U << 4U)
|
|
#define FL_OPA_GAIN_NOINVERT_X4 (0x1U << 4U)
|
|
#define FL_OPA_GAIN_NOINVERT_X8 (0x2U << 4U)
|
|
#define FL_OPA_GAIN_NOINVERT_X16 (0x3U << 4U)
|
|
#define FL_OPA_GAIN_INVERT_X1 (0x0U << 4U)
|
|
#define FL_OPA_GAIN_INVERT_X3 (0x1U << 4U)
|
|
#define FL_OPA_GAIN_INVERT_X7 (0x2U << 4U)
|
|
#define FL_OPA_GAIN_INVERT_X15 (0x3U << 4U)
|
|
|
|
|
|
|
|
#define FL_OPA_PGA_MODE_FB_TO_NEGATIVE (0x1U << OPA_CR_MSEL_Pos)
|
|
#define FL_OPA_PGA_MODE_FB_TO_GND (0x2U << OPA_CR_MSEL_Pos)
|
|
|
|
|
|
#define FL_OPA_INN_SOURCE_INN1 (0x0U << OPA_CR_VNSEL_Pos)
|
|
#define FL_OPA_INN_SOURCE_INN2 (0x1U << OPA_CR_VNSEL_Pos)
|
|
|
|
|
|
#define FL_OPA_INP_SOURCE_INP1 (0x0U << OPA_CR_VPSEL_Pos)
|
|
#define FL_OPA_INP_SOURCE_INP2 (0x1U << OPA_CR_VPSEL_Pos)
|
|
#define FL_OPA_INP_SOURCE_DAC (0x2U << OPA_CR_VPSEL_Pos)
|
|
|
|
|
|
#define FL_OPA_MODE_STANDALONE (0x0U << OPA_CR_FBSEL_Pos)
|
|
#define FL_OPA_MODE_PGA (0x2U << OPA_CR_FBSEL_Pos)
|
|
#define FL_OPA_MODE_BUFFER (0x3U << OPA_CR_FBSEL_Pos)
|
|
|
|
|
|
#define FL_OPA_TRIM_MODE_EXTERNAL (0x0U << OPA_CALR_TRIM_MODE_Pos)
|
|
#define FL_OPA_TRIM_MODE_AUTO (0x1U << OPA_CALR_TRIM_MODE_Pos)
|
|
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
/* Exported functions ---------------------------------------------------------------------------------*/
|
|
/** @defgroup OPA_FL_Exported_Functions OPA Exported Functions
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief Set PGA Mode
|
|
* @rmtoll CR MSEL FL_OPA_PGA_SetMode
|
|
* @param OPAx OPA instance
|
|
* @param mode This parameter can be one of the following values:
|
|
* @arg @ref FL_OPA_PGA_MODE_FB_TO_NEGATIVE
|
|
* @arg @ref FL_OPA_PGA_MODE_FB_TO_GND
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_PGA_SetMode(OPA_Type *OPAx, uint32_t mode)
|
|
{
|
|
MODIFY_REG(OPAx->CR, OPA_CR_MSEL_Msk, mode);
|
|
}
|
|
|
|
/**
|
|
* @brief Get PGA Mode
|
|
* @rmtoll CR MSEL FL_OPA_PGA_GetMode
|
|
* @param OPAx OPA instance
|
|
* @retval Returned value can be one of the following values:
|
|
* @arg @ref FL_OPA_PGA_MODE_FB_TO_NEGATIVE
|
|
* @arg @ref FL_OPA_PGA_MODE_FB_TO_GND
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_PGA_GetMode(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_MSEL_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Set OPA Negative Input Channel
|
|
* @rmtoll CR VNSEL FL_OPA_SetINNSource
|
|
* @param OPAx OPA instance
|
|
* @param source This parameter can be one of the following values:
|
|
* @arg @ref FL_OPA_INN_SOURCE_INN1
|
|
* @arg @ref FL_OPA_INN_SOURCE_INN2
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_SetINNSource(OPA_Type *OPAx, uint32_t source)
|
|
{
|
|
MODIFY_REG(OPAx->CR, OPA_CR_VNSEL_Msk, source);
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA Negative Input Channel Setting
|
|
* @rmtoll CR VNSEL FL_OPA_GetINNSource
|
|
* @param OPAx OPA instance
|
|
* @retval Returned value can be one of the following values:
|
|
* @arg @ref FL_OPA_INN_SOURCE_INN1
|
|
* @arg @ref FL_OPA_INN_SOURCE_INN2
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_GetINNSource(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_VNSEL_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Set OPA Positive Input Channel
|
|
* @rmtoll CR VPSEL FL_OPA_SetINPSource
|
|
* @param OPAx OPA instance
|
|
* @param source This parameter can be one of the following values:
|
|
* @arg @ref FL_OPA_INP_SOURCE_INP1
|
|
* @arg @ref FL_OPA_INP_SOURCE_INP2
|
|
* @arg @ref FL_OPA_INP_SOURCE_DAC
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_SetINPSource(OPA_Type *OPAx, uint32_t source)
|
|
{
|
|
MODIFY_REG(OPAx->CR, OPA_CR_VPSEL_Msk, source);
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA Positive Input Channel Setting
|
|
* @rmtoll CR VPSEL FL_OPA_GetINPSource
|
|
* @param OPAx OPA instance
|
|
* @retval Returned value can be one of the following values:
|
|
* @arg @ref FL_OPA_INP_SOURCE_INP1
|
|
* @arg @ref FL_OPA_INP_SOURCE_INP2
|
|
* @arg @ref FL_OPA_INP_SOURCE_DAC
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_GetINPSource(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_VPSEL_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Enable OPA Negative Input Connected to GPIO
|
|
* @rmtoll CR VN_EXC FL_OPA_PGA_EnableINNConnectToPin
|
|
* @param OPAx OPA instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_PGA_EnableINNConnectToPin(OPA_Type *OPAx)
|
|
{
|
|
SET_BIT(OPAx->CR, OPA_CR_VN_EXC_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA Negative Input Connected to GPIO Enable Status
|
|
* @rmtoll CR VN_EXC FL_OPA_PGA_IsEnabledINNConnectToPin
|
|
* @param OPAx OPA instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_PGA_IsEnabledINNConnectToPin(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_VN_EXC_Msk) == OPA_CR_VN_EXC_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Disable OPA Negative Input Connected to GPIO
|
|
* @rmtoll CR VN_EXC FL_OPA_PGA_DisableINNConnectToPin
|
|
* @param OPAx OPA instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_PGA_DisableINNConnectToPin(OPA_Type *OPAx)
|
|
{
|
|
CLEAR_BIT(OPAx->CR, OPA_CR_VN_EXC_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Set OPA PGA Mode Gain
|
|
* @rmtoll CR PGA_GAIN FL_OPA_PGA_SetGain
|
|
* @param OPAx OPA instance
|
|
* @param value This parameter can be one of the following values:
|
|
* @arg @ref FL_OPA_GAIN_NOINVERT_X2
|
|
* @arg @ref FL_OPA_GAIN_NOINVERT_X4
|
|
* @arg @ref FL_OPA_GAIN_NOINVERT_X8
|
|
* @arg @ref FL_OPA_GAIN_NOINVERT_X16
|
|
* @arg @ref FL_OPA_GAIN_INVERT_X1
|
|
* @arg @ref FL_OPA_GAIN_INVERT_X3
|
|
* @arg @ref FL_OPA_GAIN_INVERT_X7
|
|
* @arg @ref FL_OPA_GAIN_INVERT_X15
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_PGA_SetGain(OPA_Type *OPAx, uint32_t value)
|
|
{
|
|
MODIFY_REG(OPAx->CR, OPA_CR_PGA_GAIN_Msk, value);
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA PGA Mode Gain Setting
|
|
* @rmtoll CR PGA_GAIN FL_OPA_PGA_GetGain
|
|
* @param OPAx OPA instance
|
|
* @retval Returned value can be one of the following values:
|
|
* @param value This parameter can be one of the following values:
|
|
* @arg @ref FL_OPA_GAIN_NOINVERT_X2
|
|
* @arg @ref FL_OPA_GAIN_NOINVERT_X4
|
|
* @arg @ref FL_OPA_GAIN_NOINVERT_X8
|
|
* @arg @ref FL_OPA_GAIN_NOINVERT_X16
|
|
* @arg @ref FL_OPA_GAIN_INVERT_X1
|
|
* @arg @ref FL_OPA_GAIN_INVERT_X3
|
|
* @arg @ref FL_OPA_GAIN_INVERT_X7
|
|
* @arg @ref FL_OPA_GAIN_INVERT_X15
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_PGA_GetGain(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_PGA_GAIN_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Set OPA Mode
|
|
* @rmtoll CR FBSEL FL_OPA_SetMode
|
|
* @param OPAx OPA instance
|
|
* @param mode This parameter can be one of the following values:
|
|
* @arg @ref FL_OPA_MODE_STANDALONE
|
|
* @arg @ref FL_OPA_MODE_PGA
|
|
* @arg @ref FL_OPA_MODE_BUFFER
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_SetMode(OPA_Type *OPAx, uint32_t mode)
|
|
{
|
|
MODIFY_REG(OPAx->CR, OPA_CR_FBSEL_Msk, mode);
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA Mode Setting
|
|
* @rmtoll CR FBSEL FL_OPA_GetMode
|
|
* @param OPAx OPA instance
|
|
* @retval Returned value can be one of the following values:
|
|
* @arg @ref FL_OPA_MODE_STANDALONE
|
|
* @arg @ref FL_OPA_MODE_PGA
|
|
* @arg @ref FL_OPA_MODE_BUFFER
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_GetMode(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_FBSEL_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Enable OPA Low Power Mode
|
|
* @rmtoll CR LPM FL_OPA_EnableLowPowerMode
|
|
* @param OPAx OPA instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_EnableLowPowerMode(OPA_Type *OPAx)
|
|
{
|
|
SET_BIT(OPAx->CR, OPA_CR_LPM_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA Low Power Mode Enable Status
|
|
* @rmtoll CR LPM FL_OPA_IsEnabledLowPowerMode
|
|
* @param OPAx OPA instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_IsEnabledLowPowerMode(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_LPM_Msk) == OPA_CR_LPM_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Disable OPA Low Power Mode
|
|
* @rmtoll CR LPM FL_OPA_DisableLowPowerMode
|
|
* @param OPAx OPA instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_DisableLowPowerMode(OPA_Type *OPAx)
|
|
{
|
|
CLEAR_BIT(OPAx->CR, OPA_CR_LPM_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Enable OPA
|
|
* @rmtoll CR EN FL_OPA_Enable
|
|
* @param OPAx OPA instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_Enable(OPA_Type *OPAx)
|
|
{
|
|
SET_BIT(OPAx->CR, OPA_CR_EN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA Enable Status
|
|
* @rmtoll CR EN FL_OPA_IsEnabled
|
|
* @param OPAx OPA instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_IsEnabled(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CR, OPA_CR_EN_Msk) == OPA_CR_EN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Disable OPA
|
|
* @rmtoll CR EN FL_OPA_Disable
|
|
* @param OPAx OPA instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_Disable(OPA_Type *OPAx)
|
|
{
|
|
CLEAR_BIT(OPAx->CR, OPA_CR_EN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Set OPA Negative Trim Value
|
|
* @rmtoll CALR NCAL FL_OPA_WriteNegativeTrim
|
|
* @param OPAx OPA instance
|
|
* @param value
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_WriteNegativeTrim(OPA_Type *OPAx, uint32_t value)
|
|
{
|
|
MODIFY_REG(OPAx->CALR, (0xffU << 16U), (value << 16U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA Negative Trim Value
|
|
* @rmtoll CALR NCAL FL_OPA_ReadNegativeTrim
|
|
* @param OPAx OPA instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_ReadNegativeTrim(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CALR, (0xffU << 16U)) >> 16U);
|
|
}
|
|
|
|
/**
|
|
* @brief Set OPA Positive Trim Value
|
|
* @rmtoll CALR PCAL FL_OPA_WritePositiveTrim
|
|
* @param OPAx OPA instance
|
|
* @param value
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_WritePositiveTrim(OPA_Type *OPAx, uint32_t value)
|
|
{
|
|
MODIFY_REG(OPAx->CALR, (0xffU << 8U), (value << 8U));
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA Positive Trim Value
|
|
* @rmtoll CALR PCAL FL_OPA_ReadPositiveTrim
|
|
* @param OPAx OPA instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_ReadPositiveTrim(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CALR, (0xffU << 8U)) >> 8U);
|
|
}
|
|
|
|
/**
|
|
* @brief Enable OPA Negative Input Calibration
|
|
* @rmtoll CALR NCAL_EN FL_OPA_EnableINNTrim
|
|
* @param OPAx OPA instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_EnableINNTrim(OPA_Type *OPAx)
|
|
{
|
|
SET_BIT(OPAx->CALR, OPA_CALR_NCAL_EN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA Negative Input Calibration Enable Status
|
|
* @rmtoll CALR NCAL_EN FL_OPA_IsEnabledINNTrim
|
|
* @param OPAx OPA instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_IsEnabledINNTrim(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CALR, OPA_CALR_NCAL_EN_Msk) == OPA_CALR_NCAL_EN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Disable OPA Negative Input Calibration
|
|
* @rmtoll CALR NCAL_EN FL_OPA_DisableINNTrim
|
|
* @param OPAx OPA instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_DisableINNTrim(OPA_Type *OPAx)
|
|
{
|
|
CLEAR_BIT(OPAx->CALR, OPA_CALR_NCAL_EN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Enable OPA Positive Input Calibration
|
|
* @rmtoll CALR PCAL_EN FL_OPA_EnableINPTrim
|
|
* @param OPAx OPA instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_EnableINPTrim(OPA_Type *OPAx)
|
|
{
|
|
SET_BIT(OPAx->CALR, OPA_CALR_PCAL_EN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA Positive Input Calibration Enable Status
|
|
* @rmtoll CALR PCAL_EN FL_OPA_IsEnabledINPTrim
|
|
* @param OPAx OPA instance
|
|
* @retval State of bit (1 or 0).
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_IsEnabledINPTrim(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CALR, OPA_CALR_PCAL_EN_Msk) == OPA_CALR_PCAL_EN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Disable OPA Positive Input Calibration
|
|
* @rmtoll CALR PCAL_EN FL_OPA_DisableINPTrim
|
|
* @param OPAx OPA instance
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_DisableINPTrim(OPA_Type *OPAx)
|
|
{
|
|
CLEAR_BIT(OPAx->CALR, OPA_CALR_PCAL_EN_Msk);
|
|
}
|
|
|
|
/**
|
|
* @brief Set OPA Trim mode
|
|
* @rmtoll CALR TRIM_MODE FL_OPA_SetTrimMode
|
|
* @param OPAx OPA instance
|
|
* @param mode This parameter can be one of the following values:
|
|
* @arg @ref FL_OPA_TRIM_MODE_EXTERNAL
|
|
* @arg @ref FL_OPA_TRIM_MODE_AUTO
|
|
* @retval None
|
|
*/
|
|
__STATIC_INLINE void FL_OPA_SetTrimMode(OPA_Type *OPAx, uint32_t mode)
|
|
{
|
|
MODIFY_REG(OPAx->CALR, OPA_CALR_TRIM_MODE_Msk, mode);
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA Trim mode
|
|
* @rmtoll CALR TRIM_MODE FL_OPA_GetTrimMode
|
|
* @param OPAx OPA instance
|
|
* @retval Returned value can be one of the following values:
|
|
* @arg @ref FL_OPA_TRIM_MODE_EXTERNAL
|
|
* @arg @ref FL_OPA_TRIM_MODE_AUTO
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_GetTrimMode(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->CALR, OPA_CALR_TRIM_MODE_Msk));
|
|
}
|
|
|
|
/**
|
|
* @brief Get OPA operational flag
|
|
* @rmtoll COR OUT FL_OPA_ReadTrimOutput
|
|
* @param OPAx OPA instance
|
|
* @retval
|
|
*/
|
|
__STATIC_INLINE uint32_t FL_OPA_ReadTrimOutput(OPA_Type *OPAx)
|
|
{
|
|
return (uint32_t)(READ_BIT(OPAx->COR, (0x1U << 0U)) >> 0U);
|
|
}
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup OPA_FL_EF_Init Initialization and de-initialization functions
|
|
* @{
|
|
*/
|
|
FL_ErrorStatus FL_OPA_DeInit(OPA_Type *OPAx);
|
|
void FL_OPA_StructInit(FL_OPA_InitTypeDef *initStruct);
|
|
FL_ErrorStatus FL_OPA_Init(OPA_Type *OPAx, FL_OPA_InitTypeDef *initStruct);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __FM33LG0XX_FL_OPA_H*/
|
|
|
|
/*************************Py_Code_Generator Version: 0.1-0.11-0.1 @ 2020-09-12*************************/
|
|
/*************************(C) COPYRIGHT Fudan Microelectronics **** END OF FILE*************************/
|