⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rc531.h

📁 采用TI公司MSP430来控制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 + -