Files
99_7018_lmx/apps/earphone/RFID/include/READER.h
2025-11-24 13:55:10 +08:00

157 lines
4.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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