Files
99_7018_lmx/apps/earphone/RFID/include/READER.h

157 lines
4.9 KiB
C
Raw Normal View History

2025-11-24 13:55:10 +08:00
#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