256 lines
9.7 KiB
C
256 lines
9.7 KiB
C
|
/**
|
||
|
******************************************************************************
|
||
|
* @file ft32f0xx_comp.h
|
||
|
* @author FMD AE
|
||
|
* @brief This file contains all the functions prototypes for the COMP firmware
|
||
|
* library
|
||
|
* @version V1.0.0
|
||
|
* @data 2021-07-01
|
||
|
******************************************************************************
|
||
|
*/
|
||
|
|
||
|
|
||
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
||
|
#ifndef __FT32F0XX_COMP_H
|
||
|
#define __FT32F0XX_COMP_H
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/* Includes ------------------------------------------------------------------*/
|
||
|
#include "ft32f0xx.h"
|
||
|
|
||
|
/** @addtogroup COMP
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/* Exported types ------------------------------------------------------------*/
|
||
|
|
||
|
/**
|
||
|
* @brief COMP Init structure definition
|
||
|
*/
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
|
||
|
uint32_t COMP_VipSel; /*!< Select the positive input of the comparator.
|
||
|
This parameter can be a value of @ref COMP_VipSel */
|
||
|
|
||
|
uint32_t COMP_VinSel; /*!< Select the negative input of the comparator.
|
||
|
This parameter can be a value of @ref COMP_VinSel */
|
||
|
|
||
|
uint32_t COMP_OutputSel; /*!< Selects The output selection of the comparator.
|
||
|
This parameter can be a value of @ref COMP_OutputSel */
|
||
|
|
||
|
uint32_t COMP_Pol; /*!< Select the output polarity of the comparator.
|
||
|
This parameter can be a value of @ref COMP_Pol */
|
||
|
|
||
|
}COMP_InitTypeDef;
|
||
|
|
||
|
/* Exported constants --------------------------------------------------------*/
|
||
|
|
||
|
/** @defgroup COMP_Exported_Constants
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/** @defgroup COMP_Selection
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
#define NCOMP_Selection_COMP ((uint32_t)0x00000000) /*!< NCOMP Selection */
|
||
|
#define PCOMP_Selection_COMP ((uint32_t)0x00000010) /*!< PCOMP Selection */
|
||
|
#define COMP_Selection_COMP3 ((uint32_t)0x00000001) /*!< PCOMP Selection */
|
||
|
|
||
|
#define IS_COMP_ALL_PERIPH(PERIPH) (((PERIPH) == NCOMP_Selection_COMP) || \
|
||
|
((PERIPH) == PCOMP_Selection_COMP))
|
||
|
|
||
|
|
||
|
#define COMP_Selection_COMP1 NCOMP_Selection_COMP
|
||
|
#define COMP_Selection_COMP2 PCOMP_Selection_COMP
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @defgroup COMP_VipSel
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
#define NCOMP_VIP_SEL_1WIRE ((uint32_t)0x00000000)
|
||
|
#define NCOMP_VIP_SEL_PAD_PA1 ((uint32_t)0x00000002)
|
||
|
#define NCOMP_VIP_SEL_PAD_PA4 ((uint32_t)0x00000004)
|
||
|
#define NCOMP_VIP_SEL_PAD_PA13 ((uint32_t)0x00000006)
|
||
|
#define NCOMP_VIP_SEL_PAD_PB12 ((uint32_t)0x00000008)
|
||
|
|
||
|
#define PCOMP_VIP_SEL_PAD_PA3 ((uint32_t)0x00000000)
|
||
|
#define PCOMP_VIP_SEL_PAD_PA4 ((uint32_t)0x00020000)
|
||
|
#define PCOMP_VIP_SEL_PAD_PA13 ((uint32_t)0x00040000)
|
||
|
#define PCOMP_VIP_SEL_PAD_PB12 ((uint32_t)0x00060000)
|
||
|
|
||
|
#define COMP3_VIP_SEL_PAD_PF5 ((uint32_t)0x00000000)
|
||
|
#define COMP3_VIP_SEL_PAD_PB12 ((uint32_t)0x00000002)
|
||
|
#define COMP3_VIP_SEL_PAD_PA13 ((uint32_t)0x00000004)
|
||
|
#define COMP3_VIP_SEL_PAD_PA4 ((uint32_t)0x00000006)
|
||
|
|
||
|
#define IS_COMP_VIP_SEL(INPUT) (((INPUT) == NCOMP_VIP_SEL_1WIRE) || \
|
||
|
((INPUT) == NCOMP_VIP_SEL_PAD_PA1) || \
|
||
|
((INPUT) == NCOMP_VIP_SEL_PAD_PA4) || \
|
||
|
((INPUT) == NCOMP_VIP_SEL_PAD_PA13) || \
|
||
|
((INPUT) == NCOMP_VIP_SEL_PAD_PB12) || \
|
||
|
((INPUT) == PCOMP_VIP_SEL_PAD_PA3) || \
|
||
|
((INPUT) == PCOMP_VIP_SEL_PAD_PA4) || \
|
||
|
((INPUT) == PCOMP_VIP_SEL_PAD_PA13) || \
|
||
|
((INPUT) == PCOMP_VIP_SEL_PAD_PB12) )
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @defgroup COMP_VinSel
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
#define NCOMP_VIN_SEL_DAC1_OUT ((uint32_t)0x00000000)
|
||
|
#define NCOMP_VIN_SEL_PAD_PA0 ((uint32_t)0x00000010)
|
||
|
#define NCOMP_VIN_SEL_PAD_PA4 ((uint32_t)0x00000020)
|
||
|
#define NCOMP_VIN_SEL_PAD_PA5 ((uint32_t)0x00000030)
|
||
|
|
||
|
#define PCOMP_VIN_SEL_DAC2_OUT ((uint32_t)0x00000000)
|
||
|
#define PCOMP_VIN_SEL_PAD_PA2 ((uint32_t)0x00080000)
|
||
|
#define PCOMP_VIN_SEL_PAD_PA4 ((uint32_t)0x00100000)
|
||
|
#define PCOMP_VIN_SEL_PAD_PA5 ((uint32_t)0x00180000)
|
||
|
|
||
|
#define COMP3_VIN_SEL_PAD_PF4 ((uint32_t)0x00000000)
|
||
|
#define COMP3_VIN_SEL_DAC2_OUT ((uint32_t)0x00000010)
|
||
|
#define COMP3_VIN_SEL_PAD_PA4 ((uint32_t)0x00000020)
|
||
|
#define COMP3_VIN_SEL_PAD_PA5 ((uint32_t)0x00000030)
|
||
|
|
||
|
#define IS_COMP_VINSEL(INPUT) (((INPUT) == NCOMP_VIN_SEL_DAC1_OUT) || \
|
||
|
((INPUT) == NCOMP_VIN_SEL_PAD_PA0) || \
|
||
|
((INPUT) == NCOMP_VIN_SEL_PAD_PA4) || \
|
||
|
((INPUT) == NCOMP_VIN_SEL_PAD_PA5) || \
|
||
|
((INPUT) == PCOMP_VIN_SEL_DAC2_OUT)|| \
|
||
|
((INPUT) == PCOMP_VIN_SEL_PAD_PA2) || \
|
||
|
((INPUT) == PCOMP_VIN_SEL_PAD_PA4) || \
|
||
|
((INPUT) == PCOMP_VIN_SEL_PAD_PA5) )
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @defgroup COMP_OutputSel
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
#define COMP_OUTPUT_NO_SELECTION ((uint32_t)0x00000000)
|
||
|
#define NCOMP_OUTPUT_SEL_TIM1_CAPTURE1 ((uint32_t)0x00000200)
|
||
|
#define NCOMP_OUTPUT_SEL_TIM1_OCREFCLEAR ((uint32_t)0x00000300)
|
||
|
#define NCOMP_OUTPUT_SEL_TIM3_CAPTURE1 ((uint32_t)0x00000600)
|
||
|
#define NCOMP_OUTPUT_SEL_TIM3_OCREFCLEAR ((uint32_t)0x00000700)
|
||
|
|
||
|
#define PCOMP_OUTPUT_SEL_TIM1_BREAK ((uint32_t)0x01000000)
|
||
|
#define PCOMP_OUTPUT_SEL_TIM1_CAPTURE1 ((uint32_t)0x02000000)
|
||
|
#define PCOMP_OUTPUT_SEL_TIM1_OCREFCLEAR ((uint32_t)0x03000000)
|
||
|
#define PCOMP_OUTPUT_SEL_TIM3_CAPTURE1 ((uint32_t)0x06000000)
|
||
|
#define PCOMP_OUTPUT_SEL_TIM3_OCREFCLEAR ((uint32_t)0x07000000)
|
||
|
|
||
|
#define COMP3_OUTPUT_SEL_TIM1_CAPTURE1 ((uint32_t)0x00000200)
|
||
|
#define COMP3_OUTPUT_SEL_TIM1_OCREFCLEAR ((uint32_t)0x00000300)
|
||
|
#define COMP3_OUTPUT_SEL_TIM3_CAPTURE1 ((uint32_t)0x00000600)
|
||
|
#define COMP3_OUTPUT_SEL_TIM3_OCREFCLEAR ((uint32_t)0x00000700)
|
||
|
|
||
|
#define IS_COMP_OUTPUT_SEL(SEL) ( ((SEL) == NCOMP_OUTPUT_SEL_TIM1_CAPTURE1) || \
|
||
|
((SEL) == NCOMP_OUTPUT_SEL_TIM1_OCREFCLEAR) ||\
|
||
|
((SEL) == NCOMP_OUTPUT_SEL_TIM3_CAPTURE1) ||\
|
||
|
((SEL) == NCOMP_OUTPUT_SEL_TIM3_OCREFCLEAR) ||\
|
||
|
((SEL) == PCOMP_OUTPUT_SEL_TIM1_BREAK) ||\
|
||
|
((SEL) == PCOMP_OUTPUT_SEL_TIM1_CAPTURE1) ||\
|
||
|
((SEL) == PCOMP_OUTPUT_SEL_TIM1_OCREFCLEAR) ||\
|
||
|
((SEL) == PCOMP_OUTPUT_SEL_TIM3_CAPTURE1) ||\
|
||
|
((SEL) == PCOMP_OUTPUT_SEL_TIM3_OCREFCLEAR) ||\
|
||
|
((SEL) == COMP_OUTPUT_NO_SELECTION) )
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @defgroup COMP_Pol
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
#define NCOMP_POL_NOT_INVERT ((uint32_t)0x00000000)
|
||
|
#define NCOMP_POL_INVERT ((uint32_t)0x00000800)
|
||
|
|
||
|
#define PCOMP_POL_NOT_INVERT ((uint32_t)0x00000000)
|
||
|
#define PCOMP_POL_INVERT ((uint32_t)0x08000000)
|
||
|
|
||
|
#define COMP3_POL_NOT_INVERT ((uint32_t)0x00000000)
|
||
|
#define COMP3_POL_INVERT ((uint32_t)0x00000800)
|
||
|
|
||
|
#define IS_COMP_POL(POL) ( ((POL) == NCOMP_POL_NOT_INVERT) || \
|
||
|
((POL) == NCOMP_POL_INVERT) || \
|
||
|
((POL) == PCOMP_POL_NOT_INVERT) || \
|
||
|
((POL) == PCOMP_POL_INVERT) )
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @defgroup COMP_OutputLevel
|
||
|
* @{
|
||
|
*/
|
||
|
/* When output polarity is not inverted, comparator output is high when
|
||
|
the non-inverting input is at a higher voltage than the inverting input */
|
||
|
#define COMP_OutputLevel_High COMP_CSR_COMP1OUT
|
||
|
/* When output polarity is not inverted, comparator output is low when
|
||
|
the non-inverting input is at a lower voltage than the inverting input*/
|
||
|
#define COMP_OutputLevel_Low ((uint32_t)0x00000000)
|
||
|
|
||
|
|
||
|
#define IS_COMP_OUTPUT_LEVEL(LEVEL) (((LEVEL) == COMP_CSR_COMP1OUT) || \
|
||
|
((LEVEL) == COMP_CSR_COMP2OUT))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/* Exported macro ------------------------------------------------------------*/
|
||
|
/* Exported functions ------------------------------------------------------- */
|
||
|
|
||
|
/* Function used to set the COMP configuration to the default reset state ****/
|
||
|
void COMP_DeInit(void);
|
||
|
|
||
|
/* Initialization and Configuration functions *********************************/
|
||
|
void COMP_Init(uint32_t COMP_Selection, COMP_InitTypeDef* COMP_InitStruct);
|
||
|
void COMP_StructInit(COMP_InitTypeDef* COMP_InitStruct);
|
||
|
void COMP_Cmd(uint32_t COMP_Selection, FunctionalState NewState);
|
||
|
uint32_t COMP_GetOutputLevel(uint32_t COMP_Selection);
|
||
|
|
||
|
/* Window mode control function ***********************************************/
|
||
|
void COMP_WindowCmd(FunctionalState NewState);
|
||
|
|
||
|
/* COMP configuration locking function ****************************************/
|
||
|
void COMP_LockConfig(uint32_t COMP_Selection);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /*__FT32F0XX_COMP_H */
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/************************ (C) COPYRIGHT FMD *****END OF FILE****/
|