/**
|
******************************************************************************
|
* @file xl_acmp.h
|
* @author software group
|
* @brief This file contains all the functions prototypes for the ACMP
|
* firmware library.
|
******************************************************************************
|
* @attention
|
*
|
* 2019 by Chipways Communications,Inc. All Rights Reserved.
|
* This software is supplied under the terms of a license
|
* agreement or non-disclosure agreement with Chipways.
|
* Passing on and copying of this document,and communication
|
* of its contents is not permitted without prior written
|
* authorization.
|
*
|
* <h2><center>© COPYRIGHT 2019 Chipways</center></h2>
|
******************************************************************************
|
*/
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
#ifndef __XL_ACMP_H__
|
#define __XL_ACMP_H__
|
|
#ifdef __cplusplus
|
extern "C" {
|
#endif
|
|
/* Includes ---------------------------------------------------------------*/
|
#include "XL6600.h"
|
|
/* Register define ------------------------------------------------------------*/
|
|
/* CS Bit Fields */
|
#define ACMP_CS_ACMOD_MASK 0x3u
|
#define ACMP_CS_ACMOD_SHIFT 0
|
#define ACMP_CS_ACOPE_MASK 0x4u
|
#define ACMP_CS_ACOPE_SHIFT 2
|
#define ACMP_CS_ACO_MASK 0x8u
|
#define ACMP_CS_ACO_SHIFT 3
|
#define ACMP_CS_ACIE_MASK 0x10u
|
#define ACMP_CS_ACIE_SHIFT 4
|
#define ACMP_CS_ACF_MASK 0x20u
|
#define ACMP_CS_ACF_SHIFT 5
|
#define ACMP_CS_HYST_MASK 0x40u
|
#define ACMP_CS_HYST_SHIFT 6
|
#define ACMP_CS_ACE_MASK 0x80u
|
#define ACMP_CS_ACE_SHIFT 7
|
/* C0 Bit Fields */
|
#define ACMP_C0_ACNSEL_MASK 0x3u
|
#define ACMP_C0_ACNSEL_SHIFT 0
|
#define ACMP_C0_ACPSEL_MASK 0x30u
|
#define ACMP_C0_ACPSEL_SHIFT 4
|
/* C1 Bit Fields */
|
#define ACMP_C1_DACVAL_MASK 0x3Fu
|
#define ACMP_C1_DACVAL_SHIFT 0
|
#define ACMP_C1_DACREF_MASK 0x40u
|
#define ACMP_C1_DACREF_SHIFT 6
|
#define ACMP_C1_DACEN_MASK 0x80u
|
#define ACMP_C1_DACEN_SHIFT 7
|
/* C2 Bit Fields */
|
#define ACMP_C2_ACIPE_MASK 0x7u
|
#define ACMP_C2_ACIPE_SHIFT 0
|
|
/** ACMP - Register Layout Typedef */
|
typedef struct {
|
__IO uint8_t CS; /*!< ACMP¿ØÖƺÍ״̬¼Ä´æÆ÷, offset: 0x0 */
|
__IO uint8_t C0; /*!< ACMP¿ØÖƼĴæÆ÷0, offset: 0x1 */
|
__IO uint8_t C1; /*!< ACMP¿ØÖƼĴæÆ÷1, offset: 0x2 */
|
__IO uint8_t C2; /*!< ACMP¿ØÖƼĴæÆ÷2, offset: 0x3 */
|
} ACMP_Type;
|
extern ACMP_Type* ACMP0;
|
extern ACMP_Type* ACMP1;
|
|
|
/** @addtogroup XL6600_StdPeriph_Driver
|
* @{
|
*/
|
|
/** @addtogroup ACMP
|
* @{
|
*/
|
|
/* Exported types ------------------------------------------------------------*/
|
|
/**
|
* @brief ACMP ³õʼ»¯½á¹¹Ì嶨Òå
|
*/
|
typedef struct
|
{
|
FunctionalState ACMP_DACEN; /*!< ʹÄÜÄÚ²¿6λDAC */
|
uint8_t ACMP_DACRefVoltage; /*!< ΪDACÑ¡Ôñ²Î¿¼µçѹ */
|
uint8_t ACMP_DACValue; /*!< ΪÄÚ²¿DACÉèÖµ */
|
|
uint8_t ACMP_HystMode; /*!< Ä£Äâ±È½ÏÆ÷³ÙÖÍÑ¡Ôñ */
|
uint8_t ACMP_IntTrigMode; /*!< ʹÄÜÖжϴ¥·¢ */
|
|
uint8_t ACMP_InputP; /*!< ÉèÖÃÉÏÉýÑØÊäÈëµ½±È½ÏÆ÷ */
|
uint8_t ACMP_InputN; /*!< ÉèÖÃϽµÑØÊäÈëµ½±È½ÏÆ÷ */
|
|
uint8_t ACMP_InputPin; /*!< ACMPÊäÈëÒý½ÅʹÄÜ */
|
|
}ACMP_InitTypeDef;
|
|
/* Exported constants --------------------------------------------------------*/
|
/** @defgroup ACMP_Exported_Constants ACMPÄ£¿éʹÓòÎÊý¶¨Òå
|
* @{
|
*/
|
|
/**
|
* @defgroup ACMP_Hyst ACMPÄ£Äâ±È½ÏÆ÷³ÙÖÍÑ¡Ôñ
|
* @{
|
*/
|
#define ACMP_Hyst_20mv 0 /*!< ACMP³ÙÖÍ20mv */
|
#define ACMP_Hyst_30mv 1 /*!< ACMP³ÙÖÍ30mv */
|
/**
|
* @}
|
*/
|
|
/**
|
* @defgroup ACMP_InterruptEdge_Seclect ACMPÖжϴ¥·¢·½Ê½
|
* @{
|
*/
|
#define ACMP_Int_FallEdge 0 /*!< ACMPÖжÏÔÚÊä³öϽµÑØ·¢Éú */
|
#define ACMP_Int_RiseEdge 1 /*!< ACMPÖжÏÔÚÊä³öÉÏÉýÑØ·¢Éú */
|
#define ACMP_Int_FallEdge_1 2 /*!< ACMPÖжÏÔÚÊä³öϽµÑØ·¢Éú */
|
#define ACMP_Int_FallorRiseEdge 3 /*!< ACMPÖжÏÔÚÊä³öϽµÑØ»òÉÏÉýÑØ·¢Éú */
|
/**
|
* @}
|
*/
|
|
/**
|
* @defgroup ACMP_PositiveChannel_Seclect ACMPÕý¼«ÊäÈëÑ¡Ôñ
|
* @{
|
*/
|
#define ACMP_Positive_EXT0 0 /*!< ÕýÊäÈëÍⲿ»ù×¼0 */
|
#define ACMP_Positive_EXT1 1 /*!< ÕýÊäÈëÍⲿ»ù×¼1 */
|
#define ACMP_Positive_EXT2 2 /*!< ÕýÊäÈëÍⲿ»ù×¼2 */
|
#define ACMP_Positive_DAC 3 /*!< ÕýÊäÈëDACÊä³ö */
|
/**
|
* @}
|
*/
|
|
/**
|
* @defgroup ACMP_NegativeChannel_Seclect ACMP¸º¼«ÊäÈëÑ¡Ôñ
|
* @{
|
*/
|
#define ACMP_Negative_EXT0 0 /*!< ¸ºÊäÈëÍⲿ»ù×¼0 */
|
#define ACMP_Negative_EXT1 1 /*!< ¸ºÊäÈëÍⲿ»ù×¼1 */
|
#define ACMP_Negative_EXT2 2 /*!< ¸ºÊäÈëÍⲿ»ù×¼2 */
|
#define ACMP_Negative_DAC 3 /*!< ¸ºÊäÈëDACÊä³ö */
|
/**
|
* @}
|
*/
|
|
/**
|
* @defgroup ACMP_DAC_Reference_Seclect ACMPµÄDAC²Î¿¼µçѹѡÔñ
|
* @{
|
*/
|
#define ACMP_DACRef_BANDGAP 0 /*!< DACÑ¡Ôñ´øÏ¶»ù×¼×÷Ϊ»ù×¼ */
|
#define ACMP_DACRef_VDDA 1 /*!< DACÑ¡ÔñVDDA×÷Ϊ»ù×¼ */
|
/**
|
* @}
|
*/
|
|
/**
|
* @defgroup ACMP_Channel_Seclect ACMPµÄͨµÀÑ¡Ôñ
|
* @{
|
*/
|
#define ACMP_INNUll 0 /*!< ACMPÍⲿÊä³öÒý½Å½ûÓà */
|
#define ACMP_IN0 1 /*!< ACMPÍⲿÊä³öÒý½Å0 */
|
#define ACMP_IN1 2 /*!< ACMPÍⲿÊä³öÒý½Å1 */
|
#define ACMP_IN1IN0 3 /*!< ACMPÍⲿÊä³öÒý½Å0ºÍ1 */
|
#define ACMP_IN2 4 /*!< ACMPÍⲿÊä³öÒý½Å2 */
|
#define ACMP_IN2IN0 5 /*!< ACMPÍⲿÊä³öÒý½Å0ºÍ2 */
|
#define ACMP_IN2IN1 6 /*!< ACMPÍⲿÊä³öÒý½Å1ºÍ2 */
|
#define ACMP_IN2IN1IN0 7 /*!< ACMPÍⲿÊä³öÒý½Å0¡¢1ºÍ2 */
|
/**
|
* @}
|
*/
|
|
/**
|
* @}
|
*/
|
|
/* Exported macro ------------------------------------------------------------*/
|
/* Exported functions --------------------------------------------------------*/
|
void ACMP_DeInit(ACMP_Type *ACMPx);
|
void ACMP_Init(ACMP_Type *ACMPx,const ACMP_InitTypeDef *ACMP_InitStruct);
|
void ACMP_EnableCmd(ACMP_Type *ACMPx,FunctionalState NewState);
|
void ACMP_InterruptEn(ACMP_Type *ACMPx,FunctionalState NewState);
|
void ACMP_OutputPinEn(ACMP_Type *ACMPx,FunctionalState NewState);
|
uint8_t ACMP_GetOutPutLogic(const ACMP_Type *ACMPx);
|
uint8_t ACMP_GetIntFlag(const ACMP_Type *ACMPx);
|
void ACMP_ClearIntFlag(ACMP_Type *ACMPx);
|
|
#ifdef __cplusplus
|
}
|
#endif
|
|
#endif /*__XL_ACMP_H__ */
|
|
/**
|
* @}
|
*/
|
|
/**
|
* @}
|
*/
|