157 lines
4.9 KiB
C
157 lines
4.9 KiB
C
|
||
#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Ӧ<42><D3A6>
|
||
unsigned char PUPI[4];
|
||
unsigned char APPLICATION_DATA[4];
|
||
unsigned char PROTOCOL_INF[3];
|
||
unsigned char CID;//ATTRIBӦ<42><D3A6>
|
||
unsigned char Answer_to_HALT[1];//HALTӦ<54><D3A6>
|
||
unsigned char SN[8];//<2F><><EFBFBD><EFBFBD>֤SN<53><4E><EFBFBD><EFBFBD>
|
||
};
|
||
|
||
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;
|
||
|
||
|
||
//<2F><><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TYPE A
|
||
#define GAIN_A 7 //<2F><><EFBFBD>÷<EFBFBD>Χ0~7
|
||
#define HPCF_A 3 //<2F><><EFBFBD>÷<EFBFBD>Χ0~7
|
||
#define AMPLITUDE_A 255 //<2F><><EFBFBD>÷<EFBFBD>Χ0~255
|
||
|
||
|
||
//<2F><><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TYPE B
|
||
#define GAIN_B 7 //<2F><><EFBFBD>÷<EFBFBD>Χ0~7
|
||
#define HPCF_B 3 //<2F><><EFBFBD>÷<EFBFBD>Χ0~7
|
||
#define AMPLITUDE_B 255 //<2F><><EFBFBD>÷<EFBFBD>Χ0~255<35><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԽ<D6B5><D4BD><EFBFBD>ز<EFBFBD>Խ<EFBFBD><D4BD>
|
||
|
||
#define MODULATION_B 100//<2F><><EFBFBD>÷<EFBFBD>Χ0~255,<2C><><EFBFBD><EFBFBD>ֵԽС<D4BD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||
|
||
//<2F><><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TYPE V
|
||
#define GAIN_V 7//<2F><><EFBFBD>÷<EFBFBD>Χ0~7
|
||
#define HPCF_V 4//<2F><><EFBFBD>÷<EFBFBD>Χ0~7
|
||
#define AMPLITUDE_V 255 //<2F><><EFBFBD>÷<EFBFBD>Χ0~255<35><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԽ<D6B5><D4BD><EFBFBD>ز<EFBFBD>Խ<EFBFBD><D4BD>
|
||
#define MODULATION_V 10 //<2F><><EFBFBD>÷<EFBFBD>Χ0~255,<2C><><EFBFBD><EFBFBD>ֵԽС<D4BD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||
|
||
|
||
//<2F><><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TYPE F
|
||
#define GAIN_F 7//<2F><><EFBFBD>÷<EFBFBD>Χ0~7
|
||
#define HPCF_F 4//<2F><><EFBFBD>÷<EFBFBD>Χ0~7
|
||
#define AMPLITUDE_F 255 //<2F><><EFBFBD>÷<EFBFBD>Χ0~255<35><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԽ<D6B5><D4BD><EFBFBD>ز<EFBFBD>Խ<EFBFBD><D4BD>
|
||
|
||
#define MODULATION_F 100//<2F><><EFBFBD>÷<EFBFBD>Χ0~255,<2C><><EFBFBD><EFBFBD>ֵԽС<D4BD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||
|
||
#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
|
||
|