#ifndef __LPCD_H__ #define __LPCD_H__ #ifdef __cplusplus extern "C" { #endif /******************************************************************************/ /* Include files */ /******************************************************************************/ #include #include #include #include #include #include #define LPCD_TIMER1_CFG 1 //LPCD休眠阶段时间设置 //0=0秒;1=300毫秒;2=400毫秒;3=500毫秒;4=600毫秒;5=700毫秒;6=800毫秒;7=900毫秒; //8=1秒;9=1.1秒;10=1.2秒;11=1.3秒;12=1.4秒;13=1.5秒;14=1.6秒;15=1.7秒; #define LPCD_TIMER2_CFG 13//13 //LPCD准备阶段时间设置 //0=0ms;1=0ms;2=0.4ms;3=0.5ms;4=0.6ms;5=0.7ms;6=0.8ms;7=0.9ms;8=1.0ms; //9=1.1ms;10=1.2ms;11=1.3ms;12=1.4ms;13=1.5ms;14=1.6ms;15=1.7ms;16=1.8ms; //17=1.9ms;18=2.0ms;19=2.1ms;20=2.2ms;21=2.3ms;22=2.4ms;23=2.5ms;24=2.6ms; //25=2.7ms;26=2.8ms;27=2.9ms;28=3.0ms;29=3.1ms;30=3.2ms;31=3.3ms; #define LPCD_TIMER3_CFG 4//4 //LPCD检测阶段时间设置 //0=0us;1=0us;2=4.7us;3=9.4us;4=14.1us;5=18.8us;6=23.5us;7=28.2us;8=32.9us; //9=37.6us;10=42.3us;11=47us;12=51.7us;13=56.8us;14=61.1us;15=65.8us;16=70.5us; //17=75.2us;18=79.9us;19=84.6us;20=89.3us;21=94us;22=98.7us;23=103.4us;24=108.1us; //25=112.8us;26=117.5us;27=122.2us;28=126.9us;29=131.6us;30=136.3us;31=141us; #define LPCD_TIMER_VMID_CFG 3 //VMID准备时间设置 //0=0ms;1=0ms;2=0.4ms;3=0.5ms;4=0.6ms;5=0.7ms;6=0.8ms;7=0.9ms;8=1.0ms; //9=1.1ms;10=1.2ms;11=1.3ms;12=1.4ms;13=1.5ms;14=1.6ms;15=1.7ms;16=1.8ms; //17=1.9ms;18=2.0ms;19=2.1ms;20=2.2ms;21=2.3ms;22=2.4ms;23=2.5ms;24=2.6ms; //25=2.7ms;26=2.8ms;27=2.9ms;28=3.0ms;29=3.1ms;30=3.2ms;31=3.3ms; #define LPCD_TX2RF_EN 1 //LPCD功能TX2发射输出使能 //0=Disable;1=Enable #define LPCD_AUTO_DETECT_TIMES 1 //LPCD检测次数设置 //0 = 3次;1 = 1次 #define LPCD_AUTO_WUP_EN 0 //自动校准使能 //0=Disable;1=Enable #define LPCD_AUTO_WUP_CFG 3 //自动校准时间设置 //0=6秒;1=12秒;2=15分钟;3=30分钟;4=1小时;5=1.8小时;6==3.6小时;7=7.2小时 #define LPCD_AUX_EN 0 //AUX通道使能 //0=Disbale;1=Enable #define LPCD_BIAS_CURRENT 3//3 //偏置电流 //0=50nA;1=100nA;2=150nA;3=200nA;4=250nA;5=300nA;6=350nA;7=400nA; #define LPCD_REFERENCE 6 //0x00~0x7F #define LPCD_THRESHOLD 4 //4 //LPCD检测灵敏度设置 #define LPCD_DELTA 8 //LPCD检测线性度 #define LPCD_CALIBRA_IRQ_TIMEOUT 255 //LPCD校准中断超时设置 1~255us #define LPCD_GAIN_INDEX 3 #define LPCD_MODE 0 //LPCD模式 //0=模式0;1=模式1;2=模式2 static const uint8_t LPCD_GAIN[11] = {0x00,0x02,0x01,0x03,0x07,0x0B,0x0F,0x13,0x17,0x1B,0x1F}; //0.4x 0.5x 0.6x 1.0x 1.2x 1.4x 2.0x 2.2x 2.6x 3.2x 4.0x static const uint8_t LPCD_P_DRIVER[7]={0x01,0x02,0x03,0x04,0x05,0x06,0x07}; static const uint8_t LPCD_N_DRIVER[7]={0x01,0x04,0x06,0x08,0x0A,0x0C,0x0F}; //0=180欧姆;1=90欧姆;2=46欧姆;3=23欧姆;4=12欧姆;5=6欧姆;6=3欧姆;7=1.5欧姆; //static const uint8_t LPCD_N_DRIVE[7]={0x01,0x02,0x03,0x04,0x05,0x06,0x07}; //static const uint8_t LPCD_P_DRIVE[16]={0x00,0x00,0x01,0x01,0x02,0x02,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,0x07,0x07}; //0=180欧姆;1=90欧姆;2=46欧姆;3=23欧姆;4=12欧姆;5=6欧姆;6=3欧姆;7=1.5欧姆; //static const uint8_t LPCD_N_DRIVE[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F}; struct calibration_struct { uint8_t Reference;//基准电容 uint8_t Value; //LPCD校准数值 uint8_t Threshold_Max;//LPCD阈值 uint8_t Threshold_Min;//LPCD阈值 uint8_t Gain_Index;//LPCD校准Gain的序号 uint8_t Driver_Index; //LPCD校准Drive的序号 uint8_t Range_L; uint8_t Range_H; }; struct calibration_backup_struct { uint8_t Reference;//基准电容 uint8_t Gain_Index;//LPCD校准Gain的序号 uint8_t Driver_Index; //LPCD校准Drive的序号 }; struct lpcd_struct { uint8_t Timer1;//T1休眠时间 uint8_t Timer2;//T2启动时间 uint8_t Timer3;//T3发射时间 uint8_t Timer3_Div ;//T3分频系数 uint8_t Timer3_Offset; uint8_t TimerVmid;//VMID启动时间 uint8_t Fullscale_Value; //T3时间的满程数值 uint8_t Value; uint8_t Irq;//LPCD中断 struct calibration_struct Calibration; struct calibration_backup_struct Calibration_Backup; }; extern struct lpcd_struct Lpcd; bool Lpcd_Init_Register(void); bool Lpcd_Set_Aux(uint8_t mode); bool Lpcd_Set_IE(uint8_t mode); bool Lpcd_Reset_Status(void);//LPCD功能复位 void Lpcd_IRQ_Event(void); bool Lpcd_Calibration_Event(void); void Lpcd_Get_IRQ(uint8_t *irq); void Lpcd_Set_Mode(uint8_t mode); void Lpcd_Calibration_Backup(void); void Lpcd_Calibration_Restore(void); bool Lpcd_Get_Calibration_Value(uint8_t *value); bool Lpcd_Get_Value(uint8_t *value); bool TyteA_Read(uint8_t *picc_atqa, uint8_t *picc_uid); #ifdef __cplusplus } #endif #endif /* __LPCD_H__ */