#ifndef _READER_H #define _READER_H #include "fm15l0xx_ll_gpio.h" #include "function.h" extern unsigned char ATQA[2]; extern unsigned char UID[8]; extern unsigned char UID_SIZE; extern unsigned char SAK[1]; #define CWN 8 //1~15 #define CWP 32 //1~63 #define RX_GAIN 4 //0~7 #define RX_MINLEVEL 8//1~15 #define RX_COLLLEVEL 4 //1~15 #define NPD_GPIO GPIOA #define NPD_PIN LL_GPIO_Pin7//PA5 #define IRQ_GPIO GPIOA #define IRQ_PIN LL_GPIO_Pin6//PC7 #define NPD_0 LL_GPIO_ResetOutputPin( NPD_GPIO, NPD_PIN ) #define NPD_1 LL_GPIO_SetOutputPin( NPD_GPIO, NPD_PIN ) #define I2C_ADDRESS 0x28 #define I2C_Write 0x00 #define I2C_Read 0x01 #define SDA_PIN LL_GPIO_Pin0 #define SDA_GPIO GPIOB #define SCL_PIN LL_GPIO_Pin2 #define SCL_GPIO GPIOB #define SCL_0 LL_GPIO_ResetOutputPin( SCL_GPIO, SCL_PIN ) #define SCL_1 LL_GPIO_SetOutputPin( SCL_GPIO, SCL_PIN ) #define SDA_0 LL_GPIO_ResetOutputPin( SDA_GPIO, SDA_PIN ) #define SDA_1 LL_GPIO_SetOutputPin( SDA_GPIO, SDA_PIN ) #define I2C_SCL( x ) (x ? SCL_1 : SCL_0) #define I2C_SDA( x ) (x ? SDA_1 : SDA_0) #define RD_I2C_SDA LL_GPIO_IsInputPinSet( SDA_GPIO, SDA_PIN ) #define I2C_SDA_OUT() LL_GPIO_SetPinMode( SDA_GPIO, SDA_PIN, LL_GPIO_PINxMODE_OUTPUT ); #define I2C_SDA_IN() LL_GPIO_SetPinMode( SDA_GPIO, SDA_PIN, LL_GPIO_PINxMODE_INPUT ); #define I2C_DELAY( n ) DelayUs( n ); extern void DelayMs( uint32_t xms ); extern void DelayUs( uint32_t xus ); void Reader_GPIO_Init( void ); extern unsigned int Reader_ADC(void); extern unsigned char Reader_HardReset( void ); extern unsigned char Reader_SoftReset( void ); extern unsigned char Reader_Set_HPD( unsigned char mode ) ; extern unsigned char GetReg( unsigned char reg_address, unsigned char* reg_data ); extern unsigned char SetReg( unsigned char reg_address, unsigned char reg_data ); extern void ModifyReg( unsigned char reg_address, unsigned char mask, unsigned char set ); extern unsigned char GetReg_Ext( unsigned char ExtRegAddr, unsigned char* ExtRegData ); extern unsigned char SetReg_Ext( unsigned char ExtRegAddr, unsigned char ExtRegData ); extern void ModifyReg_Ext( unsigned char ExtRegAddr, unsigned char mask, unsigned char set ); extern unsigned char Lpcd_Card_Event(void); extern unsigned char Lpcd_Init_Register(void); extern void Lpcd_IRQ_Event(void); extern unsigned char ReaderA_CW(unsigned char mode); extern unsigned char ReaderA_Initial(void); extern unsigned char ReaderA_Request(unsigned char *atqa); extern unsigned char ReaderA_Anticol(unsigned char cmd,unsigned char *uid); extern unsigned char ReaderA_Select(unsigned char cmd,unsigned char *uid,unsigned char *sak); extern unsigned char Read_Page(unsigned char page_num,unsigned char *page_data,unsigned char encrypt); extern unsigned char FastRead_Page(unsigned char page_num1,unsigned char page_num2,unsigned char *page_data,unsigned char encrypt); extern unsigned char Write_Page(unsigned char page_num,unsigned char *page_data,unsigned char encrypt); extern unsigned char Triple_Auth(unsigned char *key,unsigned char *PCD_random); #endif