#ifndef _READER_H #define _READER_H // #include "fm15l0xx_ll_gpio.h" static const unsigned char RF_CMD_REQA = 0x26; static const unsigned char RF_CMD_WUPA = 0x52; static const unsigned char RF_CMD_ANTICOLL[3] = {0x93,0x95,0x97} ; static const unsigned char RF_CMD_SELECT[3] = {0x93,0x95,0x97} ; static const unsigned char RF_CMD_KEYA = 0x60; static const unsigned char RF_CMD_KEYB = 0x61; struct picc_b_struct { unsigned char ATQB[12];//REQBӦ�� unsigned char PUPI[4]; unsigned char APPLICATION_DATA[4]; unsigned char PROTOCOL_INF[3]; unsigned char CID;//ATTRIBӦ�� unsigned char Answer_to_HALT[1];//HALTӦ�� unsigned char SN[8];//����֤SN���� }; extern struct picc_b_struct PICC_B; struct picc_a_struct { unsigned char ATQA[2]; unsigned char CASCADE_LEVEL; unsigned char UID_Length; unsigned char UID[15]; unsigned char BCC[3]; unsigned char SAK[3]; }; extern struct picc_a_struct PICC_A; struct picc_v_struct { unsigned char UID[8]; unsigned char RESPONSE; unsigned char BLOCK_DATA[4]; }; extern struct picc_v_struct PICC_V; struct picc_f_struct { unsigned char UID[8]; }; extern struct picc_f_struct PICC_F; //���ղ������� TYPE A #define GAIN_A 7 //���÷�Χ0~7 #define HPCF_A 3 //���÷�Χ0~7 #define AMPLITUDE_A 255 //���÷�Χ0~255 //���ղ������� TYPE B #define GAIN_B 7 //���÷�Χ0~7 #define HPCF_B 3 //���÷�Χ0~7 #define AMPLITUDE_B 255 //���÷�Χ0~255������ֵԽ���ز�Խ�� #define MODULATION_B 100//���÷�Χ0~255,����ֵԽС������Խ�� //���ղ������� TYPE V #define GAIN_V 7//���÷�Χ0~7 #define HPCF_V 4//���÷�Χ0~7 #define AMPLITUDE_V 255 //���÷�Χ0~255������ֵԽ���ز�Խ�� #define MODULATION_V 10 //���÷�Χ0~255,����ֵԽС������Խ�� //���ղ������� TYPE F #define GAIN_F 7//���÷�Χ0~7 #define HPCF_F 4//���÷�Χ0~7 #define AMPLITUDE_F 255 //���÷�Χ0~255������ֵԽ���ز�Խ�� #define MODULATION_F 100//���÷�Χ0~255,����ֵԽС������Խ�� #define SPI_GPIO GPIOB #define SCK_PIN LL_GPIO_Pin1//PB1 #define MISO_PIN LL_GPIO_Pin2//PB2 #define MOSI_PIN LL_GPIO_Pin3//PB3 #define NSS_PIN LL_GPIO_Pin0//PB0 #define SCK_0 0//LL_GPIO_ResetOutputPin( SPI_GPIO, SCK_PIN ) #define SCK_1 0//LL_GPIO_SetOutputPin( SPI_GPIO, SCK_PIN ) #define MOSI_0 0//LL_GPIO_ResetOutputPin( SPI_GPIO, MOSI_PIN ) #define MOSI_1 0//LL_GPIO_SetOutputPin( SPI_GPIO, MOSI_PIN ) #define PD_GPIO GPIOA #define PD_PIN LL_GPIO_Pin7//PA7 #define NSS_0 0//LL_GPIO_ResetOutputPin( SPI_GPIO, NSS_PIN ) #define NSS_1 0//LL_GPIO_SetOutputPin( SPI_GPIO, NSS_PIN ) #define PD_0 0//LL_GPIO_ResetOutputPin( PD_GPIO, PD_PIN ) #define PD_1 0//LL_GPIO_SetOutputPin( PD_GPIO, PD_PIN ) extern void DelayMs( uint32_t xms ); extern void DelayUs( uint32_t xus ); void Reader_GPIO_Init( void ); // extern unsigned char Reader_Set_HPD( unsigned char mode ); extern unsigned char FM176XX_HardReset(void); // extern unsigned char Reader_Set_HPD( unsigned char mode ) ; // extern unsigned char SetReg(unsigned char address,unsigned char reg_data); // extern unsigned char GetReg(unsigned char address,unsigned char *reg_data); extern void ModifyReg( unsigned char reg_address, unsigned char mask, unsigned char set ); extern void Clear_FIFO(void); extern unsigned char SetCommand(unsigned char command); extern void SetParity(unsigned char state); extern void SetTimer(unsigned int timeout); extern unsigned char SetCW(unsigned char mode); extern unsigned char ReaderA_Initial(void); extern unsigned char ReaderB_Initial(void); extern unsigned char ReaderV_Initial(void); extern unsigned char ReaderF_Initial(void); extern unsigned char ReaderA_Wakeeup(struct picc_a_struct *picc_a); extern unsigned char ReaderA_Request(struct picc_a_struct *picc_a); extern unsigned char ReaderA_Anticoll(struct picc_a_struct *picc_a); extern unsigned char ReaderA_Select(struct picc_a_struct *picc_a); extern unsigned char ReaderA_CardActivate(struct picc_a_struct *picc_a); extern unsigned char ReaderB_Wakeup(struct picc_b_struct *picc_b); extern unsigned char ReaderB_Request(struct picc_b_struct *picc_b); extern unsigned char ReaderB_Attrib(struct picc_b_struct *picc_b); extern unsigned char ReaderB_Halt(struct picc_b_struct *picc_b); extern unsigned char ReaderB_Get_SN(struct picc_b_struct *picc_b); extern unsigned char ReaderV_Inventory(struct picc_v_struct *picc_v); extern unsigned char ReaderV_Select(struct picc_v_struct *picc_v); extern unsigned char ReaderV_ReadSingleBlock(unsigned char block_num,struct picc_v_struct *picc_v); extern unsigned char ReaderV_WriteSingleBlock(unsigned char block_num,struct picc_v_struct *picc_v); extern unsigned char ReaderF_Inventory(struct picc_f_struct *picc_f); #endif