#ifndef __CMP_H__ #define __CMP_H__ #include <stdint.h> #include "common.h" #include "sci_common.h" /* Comparator 1 monitor flag bit (C1MON) */ #define _00_COMP1_FLAG_REFERENCE_0 (0x00U) // IVCMP1 less than comparator 1 reference voltage or comparator 1 stopped #define _80_COMP1_FLAG_REFERENCE_1 (0x80U) // IVCMP1 more than comparator 1 reference voltage /* Comparator 1 operation enable bit (C1ENB) */ #define _00_COMP1_OPERATION_DISABLED (0x00U) // comparator 1 operation disabled #define _10_COMP1_OPERATION_ENABLED (0x10U) // comparator 1 operation enabled /* Comparator 0 monitor flag bit (C0MON) */ #define _00_COMP0_FLAG_REFERENCE_0 (0x00U) // IVCMP0 less than comparator 0 reference voltage or comparator 0 stopped #define _08_COMP0_FLAG_REFERENCE_1 (0x08U) // IVCMP0 more than comparator 0 reference voltage /* Comparator 0 operation enable bit (C0ENB) */ #define _00_COMP0_OPERATION_DISABLED (0x00U) // comparator 0 operation disabled #define _01_COMP0_OPERATION_ENABLED (0x01U) // comparator 0 operation enabled /* Comparator 1 edge detectioin selection (C1EDG) */ #define _00_COMP1_ONE_EDGE_INTERRUPT (0x00U) // interrupt request by comparator 1 one-edge detection #define _80_COMP1_BOTH_EDGES_INTERRUPT (0x80U) // interrupt request by comparator 1 both-edge detection /* Comparator 1 edges polarity selection (C1EPO) */ #define _00_COMP1_RISING_INTERRUPT (0x00U) // interrupt request at comparator 1 rising edge #define _40_COMP1_FALLING_INTERRUPT (0x40U) // interrupt request at comparator 1 falling edge #define _00_COMP0_OUTPUT_DISABLE (0x00U) // comparator 0 VCOUT0 pin output disabled #define _02_COMP0_OUTPUT_ENABLE (0x02U) // comparator 0 VCOUT0 pin output enabled #define _00_COMP1_OUTPUT_DISABLE (0x00U) // comparator 1 VCOUT1 pin output disabled #define _20_COMP1_OUTPUT_ENABLE (0x20U) // comparator 1 VCOUT1 pin output enabled #define _00_COMP1_INTERRUPT_DISABLE (0x00U) //comparator 1 interrupt request disabled #define _10_COMP1_INTERRPUT_ENABLE (0x10U) // comparator 1 interrupt request enabled #define _00_COMP0_INTERRUPT_DISABLE (0x00U) // comparator 0 interrupt request disabled #define _01_COMP0_INTERRPUT_ENABLE (0x01U) // comparator 0 interrupt request enabled /* Power supply of internal reference voltage (CVRVS0) */ #define _00_VDD_INTERNAL_REFERVOL (0x00U) // VDD is selected as power supply of internal reference voltage #define _01_AVREFP_INTERNAL_REFERVOL (0x01U) // AVREFP is selected as power supply of internal reference voltage /* Control bit for internal reference voltage 0 (CVRE0) */ #define _00_COMP0_REFVOLTAGE_DISABLE (0x00U) // internal reference voltage 0 operation stopped #define _02_COMP0_REFVOLTAGE_ENABLE (0x02U) // internal reference voltage 0 operation enabled /* Ground selection bit for internal reference voltage (CVRVS1) */ #define _00_VSS_INTERNAL_REFERVOL (0x00U) // VSS selected as ground for internal reference voltage #define _10_AVREFM_INTERNAL_REFERVOL (0x10U) // AVREFM selected as ground for internal reference voltage /* Control bit for internal reference voltage 1 (CVRE1) */ #define _00_COMP1_REFVOLTAGE_DISABLE (0x00U) // internal reference voltage 1 operation stopped #define _20_COMP1_REFVOLTAGE_ENABLE (0x20U) // internal reference voltage 1 operation enabled typedef enum { CMP_Vref_VDD_VSS = 0U, // VDD/VSS selected as power/ground for internal reference voltage CMP_Vref_AVREFP_AVREFM = 1U // AVREFP/AVREFM selected as power/ground for internal reference voltage }CMP_Vref_t; typedef enum { CMP_Channel_0 = 1, CMP_Channel_1 = 2, CMP_Channel_2 = 3, } CMP_Channel_t; typedef enum { CMP0_PositiveSide_VCIN0 = 0, // external VCIN0 PIN CMP0_PositiveSide_PGAO = 1, // PGA0OUT signal CMP0_NegativeSide_IVREF = 0, //bulit-in reference voltage,it can choose 256 steps CMP0_NegativeSide_BGR = 1, // internal voltage reference 1.45v CMP0_NegativeSide_VREF = 2, //external voltage reference CMP1_PositiveSide_VCIN10 = 0, // external VCIN10 PIN CMP1_PositiveSide_VCIN11 = 1, // external VCIN11 PIN CMP1_PositiveSide_VCIN12 = 2, // external VCIN12 PIN CMP1_PositiveSide_VCIN13 = 3, // external VCIN13 PIN CMP1_NegativeSide_IVREF = 0, //internal voltage reference 1.45v,it can choose 256 steps CMP1_NegativeSide_BGR = 1, // cmp1 negative can choose internal voltage reference 1.45v CMP1_NegativeSide_VCIN10 = 2, //cmp1 negative can choose external VCIN10 PIN CMP1_NegativeSide_VCIN11 = 3, //cmp1 negative can choose external VCIN11 PIN CMP1_NegativeSide_VCIN12 = 4, //cmp1 negative can choose external VCIN12 PIN CMP1_NegativeSide_VCIN13 = 5, //cmp1 negative can choose external VCIN13 PIN }CMP_Side_t; typedef enum { CMP_HyMode_None = 0, // None Hy CMP_HyMode_Postive = 1, //positive hy CMP_HyMode_Negative =2, //negative hy CMP_HyMode_Both = 3, //both side hy }CMP_HyMode_t; typedef enum { CMP_HyVal_None = 0, // None Hy CMP_HyVal_20mv = 1, //Comparator Hy 20mV CMP_HyVal_40mv = 2, //Comparator Hy 40mV CMP_HyVal_60mv = 3, //Comparator Hy 60mV }CMP_HyVal_t; typedef enum { CMP_IntReq_Rising = 0, // Interrupt request at comparator rising edge CMP_IntReq_Falling = 1, //Interrupt request at comparator falling edge CMP_IntReq_Both = 2, //Interrupt request at comparator both edge }CMP_IntReq_t; typedef enum { CMP_Int_Disable = 0, // Interrupt disable CMP_Int_Enable = 1, //Interrupt enable }CMP_Int_t; typedef enum { CMP_Filter_None = 0, // None Filter CMP_Filter_Fclk = 1, // Comparator filter enabled, sampling at fCLK CMP_Filter_Fclk8 = 2, // Comparator filter enabled, sampling at fCLK/8 CMP_Filter_Fclk32= 3, // Comparator filter enabled, sampling at fCLK/32 }CMP_Filter_t; typedef enum { CMP_Out_Disable = 0, // Disable cmp result to outport CMP_Out_Enable = 1, //Enable cmp result to outport }CMP_Out_t; typedef enum { CMP_Out_Noraml = 0, CMP_Out_Reverse = 1, }CMP_Polarity_t; typedef struct { CMP_Channel_t CMP_Channel; /*!< Specifies the channel of comparator.*/ CMP_Side_t CMP_PositiveSide;/*!< Specifies the input signal of positive side of comparator This parameter can be a value of @ref CMP_Side_t */ CMP_Side_t CMP_NegativeSide;/*!< Specifies the input signal of negative side of comparator This parameter can be a value of @ref CMP_Side_t */ CMP_Vref_t CMP_NegVref; /*!< Specifies the comparator use vdd or avrefp when negative side is CMP0_NegativeSide_IVREF This parameter can be a value of @ref CMP_Vref_t */ uint8_t CMP_NegVrefVol; /*!< Specifies the negative side voltage */ CMP_HyMode_t CMP_HyMode; /*!< Specifies the comparator hy mode This parameter can be a value of @ref CMP_HyMode_t */ CMP_HyVal_t CMP_HyVal; /*!< Specifies the comparator hy voltage This parameter can be a value of @ref CMP_HyVal_t */ CMP_Filter_t CMP_Filter; /*!< Specifies the comparator hy voltage This parameter can be a value of @ref CMP_HyVal_t */ CMP_IntReq_t CMP_IntReq;/*!< Specifies generate comparator interrupt request condition This parameter can be a value of @ref CMP_IntReq_t */ CMP_Int_t CMP_Int;/*!< Specifies generate comparator interrupt diasble or enbale This parameter can be a value of @ref CMP_Int_t */ CMP_Out_t CMP_Out2port; /*!< Specifies the comparator result whether output to port or not This parameter can be a value of @ref CMP_Out_t */ CMP_Polarity_t CMP_Polarity; /*!< Specifies the comparator result whether output to port or not This parameter can be a value of @ref CMP_Out_t */ }CMP_InitTypeDef; void CMP_Init(CMP_InitTypeDef* CMP_InitStruct); void CMP_Start(CMP_Channel_t ch); void CMP_Stop(CMP_Channel_t ch); void CMP_VREF_Set_Value(CMP_Channel_t ch, uint8_t regvalue); void CMP_Filter_Setting(CMP_Channel_t ch, CMP_Filter_t fck, CMP_IntReq_t edge); #endif