📄 rc531.h
字号:
#ifndef _rc531_H
#define _rc531_H
//rc531设置参数
#define RF_TimeOut 0xff //发送命令延时时间
extern char tagtype[2]; //卡片标识字符
//******************* RC531变量定义********************
extern char PRO_SendBuf[]; //发送处理缓冲区 32 BYTE
extern char PRO_RecvBuf[]; //接收处理缓冲区 32 BYTE
extern char buffer[12]; //RC531命令发送接收缓冲区
extern char UID[5]; //序列号
extern char Secnr; //扇区号
extern char w;
extern char spi_byte_transceive(char sendbyte);
extern void rc531_register_write(char reg_ad,char reg_data);
extern char rc531_register_read(char reg_ad);
extern char rc531_reset(void);
extern char Rc531_Bus_Sel(void);
extern void rc531_init(void);
extern char Clear_FIFO(void);
extern void Write_FIFO(char count,char *buff);
extern void Read_FIFO(char * buff);
extern char Command_Send(char count,char * buff,char Comm_Set);
extern char Judge_Req(char * buff);
extern void Save_UID(char row,char col,char length);
extern char Check_UID(void);
extern char Request(char mode);
extern char Select_Card(void);
extern void Set_BitFraming(char row,char col);
extern char AntiColl(void);
extern char Read_E2(char lsb,char msb,char count,char *buff);
extern char Write_E2(char lsb,char msb,char count,char *buff);
extern char Load_key_CPY(char *keybuff);
extern char Load_keyE2_CPY(char Secnr,char Mode);
extern char Authentication(char *UID,char SecNR,char mode);
extern char MIF_READ(char *buff,char Block_Adr);
extern char MIF_Write(char *buff,char Block_Adr);
extern char MIF_Halt(void);
extern char MIF_Initival(char *buff,char Block_Adr);
extern char MIF_Increment(char *buff,char Block_Adr);
extern char MIF_Decrement(char *buff,char Block_Adr);
extern char MIF_Restore(char Block_Adr);
extern char MIF_Transfer(char Block_Adr);
extern char HL_Initial(char *buff,char Block_Adr,char Mode);
extern char HL_Read(char *buff,char Block_Adr,char Mode);
extern char HL_Write(char *buff,char Block_Adr,char Mode);
extern char HL_Increment(char *buff,char Block_Adr,char Mode);
extern char HL_Decrement(char *buff,char Block_Adr,char Mode);
//*******************函数错误代码定义********************
#define RC531_OK 0 //正确
#define RC531_NOTAGERR 1 //无卡
#define RC531_CRCERR 2 //卡片CRC校验错误
#define RC531_EMPTY 3 //数值溢出错误
#define RC531_AUTHERR 4 //验证不成功
#define RC531_PARITYERR 5 //卡片奇偶校验错误
#define RC531_CODEERR 6 //通讯错误(BCC校验错)
#define RC531_SERNRERR 8 //卡片序列号错误(anticol错误)
#define RC531_SELECTERR 9 //卡片数据长度字节错误(SELECT错误)
#define RC531_NOTAUTHERR 10 //卡片没有通过验证
#define RC531_BITCOUNTERR 11 //从卡片接收到的位数错误
#define RC531_BYTECOUNTERR 12 //从卡片接收到的字节数错误(仅仅读函数有效)
#define RC531_RESTERR 13 //调用restore函数出错
#define RC531_TRANSERR 14 //调用transfer函数出错
#define RC531_WRITEERR 15 //调用write函数出错
#define RC531_INCRERR 16 //调用increment函数出错
#define RC531_DECRERR 17 //调用decrement函数出错
#define RC531_READERR 18 //调用read函数出错
#define RC531_LOADKEYERR 19 //调用LOADKEY函数出错
#define RC531_FRAMINGERR 20 //RC531帧错误
#define RC531_REQERR 21 //调用req函数出错
#define RC531_SELERR 22 //调用sel函数出错
#define RC531_ANTICOLLERR 23 //调用anticoll函数出错
#define RC531_INTIVALERR 24 //调用初始化函数出错
#define RC531_READVALERR 25 //调用高级读块值函数出错
#define RC531_CMD_ERR 42 //命令错误
#define RC531_COLLERR 26
//*******************RC531 管脚定义*******************
//just for test
#define RC531_Transceive_FLAG_SEL P5SEL &= ~BIT4
#define RC531_Transceive_FLAG_OUT P5DIR |= BIT4
#define RC531_Transceive_FLAG_HIGH P5OUT |= BIT4
#define RC531_Transceive_FLAG_LOW P5OUT &= ~BIT4
// IRQ
#define RC531_IRQ_SEL P2SEL &= ~BIT0
#define RC531_IRQ_IN P2DIR &= ~BIT0
#define RC531_IRQ P2IN | BIT0
//RSTPD
#define RC531_RSTPD_SEL P2SEL &= ~BIT1
#define RC531_RSTPD_OUT P2DIR |= BIT1
#define RC531_RSTPD_RESET P2OUT |= BIT1
#define RC531_RSTPD_WORK P2OUT &= ~BIT1
// 并行通讯
//NCS
#define RC531_NCS_SEL P2SEL &= ~BIT6
#define RC531_NCS_OUT P2DIR |= BIT6
#define RC531_NCS_HIGH P2OUT |= BIT6
#define RC531_NCS_LOW P2OUT &= ~BIT6
//NWR
#define RC531_NWR_SEL P2SEL &= ~BIT5
#define RC531_NWR_OUT P2DIR |= BIT5
#define RC531_NWR_HIGH P2OUT |= BIT5
#define RC531_NWR_LOW P2OUT &= ~BIT5
//NRD
#define RC531_NRD_SEL P2SEL &= ~BIT4
#define RC531_NRD_OUT P2DIR |= BIT4
#define RC531_NRD_HIGH P2OUT |= BIT4
#define RC531_NRD_LOW P2OUT &= ~BIT4
//ALE
#define RC531_ALE_SEL P3SEL &= ~BIT0
#define RC531_ALE_OUT P3DIR |= BIT0
#define RC531_ALE_HIGH P3OUT |= BIT0
#define RC531_ALE_LOW P3OUT &= ~BIT0
//A0
#define RC531_A0_SEL P3SEL &= ~BIT1
#define RC531_A0_OUT P3DIR |= BIT1
#define RC531_A0_HIGH P3OUT |= BIT1
#define RC531_A0_LOW P3OUT &= ~BIT1
//A1
#define RC531_A1_SEL P2SEL &= ~BIT7
#define RC531_A1_OUT P2DIR |= BIT7
#define RC531_A1_HIGH P2OUT |= BIT7
#define RC531_A1_LOW P2OUT &= ~BIT7
//A2
#define RC531_A2_SEL P3SEL &= ~BIT3
#define RC531_A2_OUT P3DIR |= BIT3
#define RC531_A2_HIGH P3OUT |= BIT3
#define RC531_A2_LOW P3OUT &= ~BIT3
//D0-D7
#define RC531_DATA_SEL P4SEL = 0x00
#define RC531_DATA_OUT P4DIR = 0xFF
#define RC531_DATA_IN P4DIR = 0x00
#define RC531_DIN P4IN
#define RC531_DOUT P4OUT
//spi 通讯
//SCK
#define RC531_SCK_HIGH P3OUT |= BIT3
#define RC531_SCK_LOW P3OUT &= ~BIT3
//MOSI
#define RC531_MOSI_HIGH P3OUT |= BIT1
#define RC531_MOSI_LOW P3OUT &= ~BIT1
//MISO
#define RC531_MISO_SEL P3SEL &= ~BIT2
#define RC531_MISO_IN P3DIR &= ~BIT2
#define RC531_MISO P3IN & BIT2
//NSS
#define RC531_NSS_HIGH P3OUT |= BIT0
#define RC531_NSS_LOW P3OUT &= ~BIT0
//*******************RC531地址定义********************
#define Page_Sel 0x00 //页写寄存器
#define Command 0x01 //命令寄存器
#define FIFO 0x02 //FIFO缓冲
#define PrimaryStatus 0x03 //状态寄存器1
#define FIFO_Length 0x04 //FIFO长度寄存器
#define SecondaryStatus 0x05 //状态寄存器2
#define InterruptEn 0x06 //中断允许寄存器
#define Int_Req 0x07 //中断申请标记寄存器
#define Control 0x09 //控制寄存器
#define ErrorFlag 0x0A //错误状态寄存器
#define CollPos 0x0B //冲突检测寄存器
#define TimerValue 0x0C //定时器当前值
#define CRCResultLSB 0x0D
#define CRCResultMSB 0x0E
#define Bit_Frame 0x0F //位帧调整寄存器
#define TxControl 0x11 //发送控制寄存器
#define CwConductance 0x12 //
#define ModConductance 0x13 //
#define CoderControl 0x14 //波特率与编码选择寄存器
#define ModWidth 0x15
#define TypeBFraming 0x17
#define RxControl1 0x19
#define DecoderControl 0x1A
#define BitPhase 0x1B
#define RxThreshold 0x1C
#define BPSKDemControl 0x1D
#define RxControl2 0x1E
#define ClockQControl 0x1F
#define RxWait 0x21 //
#define ChannelRedundancy 0x22 //RF通道检验模式设置寄存器
#define CRCPresetLSB 0x23
#define CRCPresetMSB 0x24
#define MFOUTSelect 0x26
#define TimerClock 0x2A //定时器周期设置寄存器
#define TimerControl 0x2B //定时器控制寄存器
#define TimerReload 0x2C //定时器初值寄存器
#define IRQPinConfig 0x2D
#define TestAnaSelect 0x3A
#define TestDigiSelect 0x3D //测试管脚配置寄存器
//*******************RC531命令寄存器命令码 *******************
#define Idle 0x00
#define Transmit 0x1A
#define Receive 0x16
#define Transceive 0x1E //发送接收命令
#define ReadE2 0x03 //读rc531 e2命令
#define WriteE2 0x01 //写rc531 e2命令
#define Authent1 0x0C //
#define Authent2 0x14
#define LoadKeyE2 0x0B
#define LoadKey 0x19
#define LoadConfig 0x07
#define CalcCRC 0x12
//*******************ISO/IEC FDIS 14443 相关定义 *******************
// TYPE A
#define REQA 0x26
#define WUPA 0x52
#define ATQA_BYTE0 0x04
#define ATQA_BYTE1 0x00
#define SAK_BYTE0 0x80
#define SAK_BYTE1 0x88
#define HLTA_BYTE0 0x50
#define HLTA_BYTE1 0x00
// TYPE B
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -