419 lines
13 KiB
C
419 lines
13 KiB
C
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @file ciu32l051_std_comp.h
|
|||
|
* @author MCU Ecosystem Development Team
|
|||
|
* @brief COMP STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD>ṩCOMP<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>塣
|
|||
|
*
|
|||
|
*
|
|||
|
**************************************************************************************************
|
|||
|
* @attention
|
|||
|
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
|
|||
|
*
|
|||
|
**************************************************************************************************
|
|||
|
*/
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#ifndef CIU32L051_STD_COMP_H
|
|||
|
#define CIU32L051_STD_COMP_H
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @addtogroup CIU32L051_STD_Driver
|
|||
|
* @{
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @defgroup COMP COMP
|
|||
|
* @brief <EFBFBD>Ƚ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
|
|||
|
/*------------------------------------------includes--------------------------------------------*/
|
|||
|
#include "ciu32l051_std_common.h"
|
|||
|
|
|||
|
/*-----------------------------------------type define------------------------------------------*/
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup COMP_Types COMP Types
|
|||
|
* @brief COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @brief COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<EFBFBD>嶨<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
uint32_t inpsel; /**< COMP<4D><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
@arg COMP_INPSEL_IO1 ... */
|
|||
|
|
|||
|
uint32_t inmsel; /**< COMP<4D><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
@arg COMP_INMSEL_VBGR ... */
|
|||
|
|
|||
|
uint32_t speed; /**< COMP<4D><50>Ӧ<EFBFBD>ٶȣ<D9B6><C8A3><EFBFBD>Ӧ<EFBFBD>ٶ<EFBFBD>Խ<EFBFBD>죬<EFBFBD><ECA3AC><EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><F3A1A3BF><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>١<EFBFBD><D9A1><EFBFBD><EFBFBD>١<EFBFBD><D9A1><EFBFBD><EFBFBD>١<EFBFBD><D9A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>
|
|||
|
@arg COMP_VERYLOWSPEED ... */
|
|||
|
|
|||
|
uint32_t hyst; /**< COMP<4D><50><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3>͵<EFBFBD>ѹΪ10mV<6D><56>20mV<6D><56>30mV<6D><56>
|
|||
|
@arg COMP_HYST_NONE ... */
|
|||
|
|
|||
|
uint32_t outpol; /**< COMP<4D><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>ࡱ<EFBFBD><E0A1B1>
|
|||
|
@arg COMP_OUTPOL_INVERTED ... */
|
|||
|
} std_comp_init_t;
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/*--------------------------------------------define--------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup COMP_Constants COMP Constants
|
|||
|
* @brief COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>弰<EFBFBD>궨<EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
/* <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define COMP_INPSEL_IO1 COMP_CSR_INP_IO1 /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> COMP1 = PC4, COMP2 = PA1 */
|
|||
|
#define COMP_INPSEL_IO2 COMP_CSR_INP_IO2 /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> COMP1 = PA5, COMP2 = PD5 */
|
|||
|
#define COMP_INPSEL_IO3 COMP_CSR_INP_IO3 /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> COMP1 = PB2 */
|
|||
|
#define COMP_INPSEL_IO4 COMP_CSR_INP_IO4 /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> COMP1 = PA8 */
|
|||
|
|
|||
|
/* <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define COMP_INMSEL_VBGR COMP_CSR_INM_VBGR /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> VBGR */
|
|||
|
#define COMP_INMSEL_6BIT_DAC COMP_CSR_INM_6BIT_DAC /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 6BIT_DAC */
|
|||
|
#define COMP_INMSEL_IO1 COMP_CSR_INM_IO1 /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> COMP1 = PC3, COMP2 = PA2 */
|
|||
|
#define COMP_INMSEL_IO2 COMP_CSR_INM_IO2 /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> COMP1 = PA4, COMP2 = PD4 */
|
|||
|
#define COMP_INMSEL_IO3 COMP_CSR_INM_IO3 /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> COMP1 = PB1 */
|
|||
|
#define COMP_INMSEL_IO4 COMP_CSR_INM_IO4 /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> COMP1 = PA9 */
|
|||
|
|
|||
|
/* <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽѡ<CABD><EFBFBD><F1A3ACBF><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD>ڱȽ<DAB1><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define COMP_INPMODE_EACH_INPUT (0x00000000U) /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD>inpsel<65><6C><EFBFBD><EFBFBD> */
|
|||
|
#define COMP_INPMODE_COMMON_INPUT COMP_CSR_INPMOD /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0BBA5><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱȽ<DAB1><C8BD><EFBFBD>ģʽ */
|
|||
|
|
|||
|
/* <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ٶ<EFBFBD> */
|
|||
|
#define COMP_VERYLOWSPEED COMP_CSR_VERY_LOW_SPEED /**< <20><>Ӧ<EFBFBD>ٶ<EFBFBD>ģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define COMP_LOWSPEED COMP_CSR_LOW_SPEED /**< <20><>Ӧ<EFBFBD>ٶ<EFBFBD>ģʽ <20><><EFBFBD><EFBFBD> */
|
|||
|
#define COMP_MEDIUMSPEED COMP_CSR_MEDIUM_SPEED /**< <20><>Ӧ<EFBFBD>ٶ<EFBFBD>ģʽ <20><><EFBFBD><EFBFBD> */
|
|||
|
#define COMP_HIGHSPEED COMP_CSR_HIGH_SPEED /**< <20><>Ӧ<EFBFBD>ٶ<EFBFBD>ģʽ <20><><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/* <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ */
|
|||
|
#define COMP_HYST_NONE COMP_CSR_HYST_NONE /**< <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><DEB3><EFBFBD> */
|
|||
|
#define COMP_HYST_LOW COMP_CSR_HYST_LOW /**< <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>10mV */
|
|||
|
#define COMP_HYST_MEDIUM COMP_CSR_HYST_MEDIUM /**< <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>20mV */
|
|||
|
#define COMP_HYST_HIGH COMP_CSR_HYST_HIGH /**< <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>30mV */
|
|||
|
|
|||
|
/* <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>˲<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define COMP_FILTER_DISABLE (0x00000000U) /**< <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD>ֹ */
|
|||
|
#define COMP_FILTER_ENABLE COMP_CSR_FLTEN /**< <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>˲<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
|
|||
|
/* <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1> */
|
|||
|
#define COMP_FLTIME_2CYCLE COMP_CSR_FLTIME_2CYCLE /**< <20>˲<EFBFBD>ʱ<EFBFBD><CAB1> 2<><32>CYCLE */
|
|||
|
#define COMP_FLTIME_4CYCLE COMP_CSR_FLTIME_4CYCLE /**< <20>˲<EFBFBD>ʱ<EFBFBD><CAB1> 4<><34>CYCLE */
|
|||
|
#define COMP_FLTIME_8CYCLE COMP_CSR_FLTIME_8CYCLE /**< <20>˲<EFBFBD>ʱ<EFBFBD><CAB1> 8<><38>CYCLE */
|
|||
|
#define COMP_FLTIME_16CYCLE COMP_CSR_FLTIME_16CYCLE /**< <20>˲<EFBFBD>ʱ<EFBFBD><CAB1> 16<31><36>CYCLE */
|
|||
|
#define COMP_FLTIME_32CYCLE COMP_CSR_FLTIME_32CYCLE /**< <20>˲<EFBFBD>ʱ<EFBFBD><CAB1> 32<33><32>CYCLE */
|
|||
|
#define COMP_FLTIME_64CYCLE COMP_CSR_FLTIME_64CYCLE /**< <20>˲<EFBFBD>ʱ<EFBFBD><CAB1> 64<36><34>CYCLE */
|
|||
|
#define COMP_FLTIME_128CYCLE COMP_CSR_FLTIME_128CYCLE /**< <20>˲<EFBFBD>ʱ<EFBFBD><CAB1> 128<32><38>CYCLE */
|
|||
|
#define COMP_FLTIME_256CYCLE COMP_CSR_FLTIME_256CYCLE /**< <20>˲<EFBFBD>ʱ<EFBFBD><CAB1> 256<35><36>CYCLE */
|
|||
|
|
|||
|
/* <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define COMP_OUTPOL_NON_INVERTED (0x00000000U) /**< <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define COMP_OUTPOL_INVERTED COMP_CSR_POL /**< <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/* <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1> */
|
|||
|
#define COMP_OUTMODE_EACH_OUT (0x00000000U) /**< <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ԭʼ<D4AD><CABC>ѹ<EFBFBD>ȽϽ<C8BD><CFBD><EFBFBD> */
|
|||
|
#define COMP_OUTMODE_COMMON_XOR_OUT COMP_CSR_OUTMOD /**< <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>1<EFBFBD><31>2<EFBFBD><32>ѹ<EFBFBD>ȽϽ<C8BD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/* <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define COMP_OUTPUT_LEVEL_LOW (0x00000000UL) /**< <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD> */
|
|||
|
#define COMP_OUTPUT_LEVEL_HIGH (0x00000001UL) /**< <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD> */
|
|||
|
|
|||
|
/* <20>ȴ<EFBFBD>COMP1ʹ<31><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
<EFBFBD><EFBFBD>Ӧ<EFBFBD>ٶ<EFBFBD>ģʽΪ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>23US
|
|||
|
<EFBFBD><EFBFBD>Ӧ<EFBFBD>ٶ<EFBFBD>ģʽΪ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>24US
|
|||
|
<EFBFBD><EFBFBD>Ӧ<EFBFBD>ٶ<EFBFBD>ģʽΪ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>30US
|
|||
|
<EFBFBD><EFBFBD>Ӧ<EFBFBD>ٶ<EFBFBD>ģʽΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>39US
|
|||
|
*/
|
|||
|
#define COMP_EN_DELAY (30U) /**< COMPʹ<50><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/*-------------------------------------------functions------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup COMP_External_Functions COMP External Functions
|
|||
|
* @brief COMP<EFBFBD><EFBFBD><EFBFBD>⺯<EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>COMP
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_enable(COMP_t *compx)
|
|||
|
{
|
|||
|
compx->CSR |= (COMP_CSR_EN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹCOMP
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_disable(COMP_t *compx)
|
|||
|
{
|
|||
|
compx->CSR &= (~COMP_CSR_EN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param input_minus <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg COMP_INMSEL_VBGR
|
|||
|
* @arg COMP_INMSEL_6BIT_DAC
|
|||
|
* @arg COMP_INMSEL_IO1
|
|||
|
* @arg COMP_INMSEL_IO2
|
|||
|
* @arg COMP_INMSEL_IO3
|
|||
|
* @arg COMP_INMSEL_IO4
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_set_input_minus(COMP_t *compx, uint32_t input_minus)
|
|||
|
{
|
|||
|
MODIFY_REG(compx->CSR, COMP_CSR_INM, input_minus);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡCOMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg COMP_INMSEL_VBGR
|
|||
|
* @arg COMP_INMSEL_6BIT_DAC
|
|||
|
* @arg COMP_INMSEL_IO1
|
|||
|
* @arg COMP_INMSEL_IO2
|
|||
|
* @arg COMP_INMSEL_IO3
|
|||
|
* @arg COMP_INMSEL_IO4
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_comp_get_input_minus(COMP_t *compx)
|
|||
|
{
|
|||
|
return(compx->CSR & COMP_CSR_INM);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param input_plus <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg COMP_INPSEL_IO1
|
|||
|
* @arg COMP_INPSEL_IO2
|
|||
|
* @arg COMP_INPSEL_IO3
|
|||
|
* @arg COMP_INPSEL_IO4
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_set_input_plus(COMP_t *compx, uint32_t input_plus)
|
|||
|
{
|
|||
|
MODIFY_REG(compx->CSR, COMP_CSR_INP, input_plus);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡCOMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg COMP_INPSEL_IO1
|
|||
|
* @arg COMP_INPSEL_IO2
|
|||
|
* @arg COMP_INPSEL_IO3
|
|||
|
* @arg COMP_INPSEL_IO4
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_comp_get_input_plus(COMP_t *compx)
|
|||
|
{
|
|||
|
return(compx->CSR & COMP_CSR_INP);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param input_mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg COMP_INPMODE_EACH_INPUT
|
|||
|
* @arg COMP_INPMODE_COMMON_INPUT
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_set_input_plus_mode(COMP_t *compx, uint32_t input_mode)
|
|||
|
{
|
|||
|
MODIFY_REG(compx->CSR, COMP_CSR_INPMOD, input_mode);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param output_mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg COMP_OUTMODE_EACH_OUT
|
|||
|
* @arg COMP_OUTMODE_COMMON_XOR_OUT
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_set_output_mode(COMP_t *compx, uint32_t output_mode)
|
|||
|
{
|
|||
|
MODIFY_REG(compx->CSR, COMP_CSR_OUTMOD, output_mode);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param output_polarity <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg COMP_OUTPOL_NON_INVERTED
|
|||
|
* @arg COMP_OUTPOL_INVERTED
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_set_output_polarity(COMP_t *compx, uint32_t output_polarity)
|
|||
|
{
|
|||
|
MODIFY_REG(compx->CSR, COMP_CSR_POL, output_polarity);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡCOMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg COMP_OUTPOL_NON_INVERTED
|
|||
|
* @arg COMP_OUTPOL_INVERTED
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_comp_get_output_polarity(COMP_t *compx)
|
|||
|
{
|
|||
|
return(compx->CSR & COMP_CSR_POL);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param input_hysteresis <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg COMP_HYST_NONE
|
|||
|
* @arg COMP_HYST_LOW
|
|||
|
* @arg COMP_HYST_MEDIUM
|
|||
|
* @arg COMP_HYST_HIGH
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_set_input_hysteresis(COMP_t *compx, uint32_t input_hysteresis)
|
|||
|
{
|
|||
|
MODIFY_REG(compx->CSR, COMP_CSR_HYST, input_hysteresis);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>COMP<EFBFBD><EFBFBD>Ӧ<EFBFBD>ٶ<EFBFBD>ģʽ
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param speed_mode <EFBFBD><EFBFBD>Ӧ<EFBFBD>ٶ<EFBFBD>
|
|||
|
* @arg COMP_VERYLOWSPEED
|
|||
|
* @arg COMP_LOWSPEED
|
|||
|
* @arg COMP_MEDIUMSPEED
|
|||
|
* @arg COMP_HIGHSPEED
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_set_speed_mode(COMP_t *compx, uint32_t speed_mode)
|
|||
|
{
|
|||
|
MODIFY_REG(compx->CSR, COMP_CSR_SPEED, speed_mode);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param filter_time <EFBFBD>˲<EFBFBD>ʱ<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg COMP_FLTIME_2CYCLE
|
|||
|
* @arg COMP_FLTIME_4CYCLE
|
|||
|
* @arg ...
|
|||
|
* @arg COMP_FLTIME_256CYCLE
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_set_output_filter_time(COMP_t *compx, uint32_t filter_time)
|
|||
|
{
|
|||
|
MODIFY_REG(compx->CSR, COMP_CSR_FLTIME, filter_time);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_output_filter_enable(COMP_t *compx)
|
|||
|
{
|
|||
|
compx->CSR |= (COMP_CSR_FLTEN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD>ֹ
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_output_filter_disable(COMP_t *compx)
|
|||
|
{
|
|||
|
compx->CSR &= (~COMP_CSR_FLTEN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡCOMPʹ<EFBFBD><EFBFBD>״̬
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>жϽ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg true<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ʾCOMP<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|||
|
* @arg false<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾCOMPδʹ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_comp_get_enable_status(COMP_t *compx)
|
|||
|
{
|
|||
|
return ((compx->CSR & COMP_CSR_EN) == COMP_CSR_EN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief COMP<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @note ֻ<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_comp_lock(COMP_t *compx)
|
|||
|
{
|
|||
|
compx->CSR |= (COMP_CSR_LOCK);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡCOMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param compx COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD>COMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg COMP_OUTPUT_LEVEL_LOW
|
|||
|
* @arg COMP_OUTPUT_LEVEL_HIGH
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_comp_get_output_result(COMP_t *compx)
|
|||
|
{
|
|||
|
return ((compx->CSR & COMP_CSR_VAL) >> COMP_CSR_VAL_POS);
|
|||
|
}
|
|||
|
|
|||
|
/* COMP<4D><50>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
void std_comp_init(COMP_t *compx, std_comp_init_t *comp_init_param);
|
|||
|
/* COMP<4D>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
void std_comp_struct_init(std_comp_init_t *comp_init_struct);
|
|||
|
/* COMPȥ<50><C8A5>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
void std_comp_deinit(COMP_t *compx);
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
#endif /* CIU32L051_STD_COMP_H */
|