#ifndef _RC531_H #define _RC531_H //------------------------------------------------------------------------------------------------------- #define RC531_CS1 (GPIO_Pin_2) //PA2 //******************************************************************************************************************** #define RC531_CS(x) ((x>0)? (GPIO_SetBits(GPIOA, RC531_CS1)) : (GPIO_ResetBits(GPIOA, RC531_CS1) ))//设置1,0 //------------------------------------------------------------------------------------------------------- //IRQ 估计是用中断,请注意!!!! #define RC531_IRQ1 (GPIO_Pin_1) //PA1 //******************************************************************************************************************** #define RC531_IRQ(x) ((x>0)? (GPIO_SetBits(GPIOA, RC531_IRQ1)) : (GPIO_ResetBits(GPIOA, RC531_IRQ1) ))//设置1,0 //------------------------------------------------------------------------------------------------------- #define RC531_RSTPD1 (GPIO_Pin_3) //PA3 //******************************************************************************************************************** #define RC531_RSTPD(x) ((x>0)? (GPIO_SetBits(GPIOA, RC531_RSTPD1)) : (GPIO_ResetBits(GPIOA, RC531_RSTPD1) ))//设置1,0 //****************************************************************************** #define READER_ERR_BASE_START 0 #define MI_OK 0 #define MI_CHK_OK 0 #define MI_CRC_ZERO 0 #define MI_CRC_NOTZERO 1 #define MI_NOTAGERR 1 #define MI_CHK_FAILED 1 #define MI_CRCERR 2 #define MI_CHK_COMPERR 2 #define MI_EMPTY 3 #define MI_AUTHERR 4 #define MI_PARITYERR 5 #define MI_CODEERR 6 #define MI_SERNRERR 8 #define MI_KEYERR 9 #define MI_NOTAUTHERR 10 #define MI_BITCOUNTERR 11 #define MI_BYTECOUNTERR 12 #define MI_IDLE 13 #define MI_TRANSERR 14 #define MI_WRITEERR 15 #define MI_INCRERR 16 #define MI_DECRERR 17 #define MI_READERR 18 #define MI_OVFLERR 19 #define MI_POLLING 20 #define MI_FRAMINGERR 21 #define MI_ACCESSERR 22 #define MI_UNKNOWN_COMMAND 23 #define MI_COLLERR 24 #define MI_RESETERR 25 #define MI_INITERR 25 #define MI_INTERFACEERR 26 #define MI_ACCESSTIMEOUT 27 #define MI_NOBITWISEANTICOLL 28 #define MI_QUIT 30 #define MI_RECBUF_OVERFLOW 50 #define MI_SENDBYTENR 51 #define MI_SENDBUF_OVERFLOW 53 #define MI_BAUDRATE_NOT_SUPPORTED 54 #define MI_SAME_BAUDRATE_REQUIRED 55 #define MI_WRONG_PARAMETER_VALUE 60 #define MI_BREAK 99 #define MI_NY_IMPLEMENTED 100 #define MI_NO_MFRC 101 #define MI_MFRC_NOTAUTH 102 #define MI_WRONG_DES_MODE 103 #define MI_HOST_AUTH_FAILED 104 #define MI_WRONG_LOAD_MODE 106 #define MI_WRONG_DESKEY 107 #define MI_MKLOAD_FAILED 108 #define MI_FIFOERR 109 #define MI_WRONG_ADDR 110 #define MI_DESKEYLOAD_FAILED 111 #define MI_WRONG_SEL_CNT 114 #define MI_WRONG_TEST_MODE 117 #define MI_TEST_FAILED 118 #define MI_TOC_ERROR 119 #define MI_COMM_ABORT 120 #define MI_INVALID_BASE 121 #define MI_MFRC_RESET 122 #define MI_WRONG_VALUE 123 #define MI_VALERR 124 #define MI_SAKERR 0x46 //added by robbie #define RegPage 0x00 #define RegCommand 0x01 #define RegFIFOData 0x02 #define RegPrimaryStatus 0x03 #define RegFIFOLength 0x04 #define RegSecondaryStatus 0x05 #define RegInterruptEn 0x06 #define RegInterruptRq 0x07 #define RegControl 0x09 #define RegErrorFlag 0x0A #define RegCollPos 0x0B #define RegTimerValue 0x0C #define RegCRCResultLSB 0x0D #define RegCRCResultMSB 0x0E #define RegBitFraming 0x0F #define RegTxControl 0x11 #define RegCwConductance 0x12 #define RFU13 0x13 #define RegModConductance 0x13 //驱动电导系数寄存器 #define RegCoderControl 0x14 #define RegModWidth 0x15 #define RFU16 0x16 #define RFU17 0x17 #define RegTypeBFraming 0x17 //TypeB帧设置寄存器 #define RegRxControl1 0x19 #define RegDecoderControl 0x1A #define RegBitPhase 0x1B #define RegRxThreshold 0x1C #define RFU1D 0x1D #define RegBPSKDemControl 0x1D //BPSK解调控制寄存器 #define RegRxControl2 0x1E #define RegClockQControl 0x1F #define RegRxWait 0x21 #define RegChannelRedundancy 0x22 #define RegCRCPresetLSB 0x23 #define RegCRCPresetMSB 0x24 #define RFU25 0x25 #define RegMfOutSelect 0x26 #define RFU27 0x27 #define RegFIFOLevel 0x29 #define RegTimerClock 0x2A #define RegTimerControl 0x2B #define RegTimerReload 0x2C #define RegIRqPinConfig 0x2D #define RFU2E 0x2E #define RFU2F 0x2F #define RFU31 0x31 #define RFU32 0x32 #define RFU33 0x33 #define RFU34 0x34 #define RFU35 0x35 #define RFU36 0x36 #define RFU37 0x37 #define RFU39 0x39 #define RegTestAnaSelect 0x3A #define RFU3B 0x3B #define RFU3C 0x3C #define RegTestDigiSelect 0x3D #define RFU3E 0x3E #define RegTestDigiAccess 0x3F #define DEF_FIFO_LENGTH 64 #define  CD_IDLE 0x00 #define  CD_WRITEE2 0x01 #define  CD_READE2 0x03 #define  CD_LOADCONFIG 0x07 #define  CD_LOADKEYE2 0x0B #define  CD_AUTHENT1 0x0C #define  CD_CALCCRC 0x12 #define  CD_AUTHENT2 0x14 #define  CD_RECEIVE 0x16 #define  CD_LOADKEY 0x19 #define  CD_TRANSMIT 0x1A #define  CD_TRANSCEIVE 0x1E #define  CD_RESETPHASE 0x3F #define  ICC_REQIDL 0x26 #define  ICC_REQALL 0x52 #define  ICC_ANTICOLL1 0x93 #define  ICC_ANTICOLL2 0x95 #define  ICC_ANTICOLL3 0x97 #define  ICC_AUTHENT1A 0x60 #define  ICC_AUTHENT1B 0x61 #define  ICC_READ 0x30 #define  ICC_WRITE 0xA0 #define  ICC_DECREMENT 0xC0 #define  ICC_INCREMENT 0xC1 #define  ICC_RESTORE 0xC2 #define  ICC_TRANSFER 0xB0 #define  ICC_HALT 0x50 #define mifare1 1 #define mifarepro 2 #define mifarelight 3 #define unkowncard 4 #define GetRegPage(addr) (0x80 | (addr>>3)) typedef struct { unsigned char cmd; char status; unsigned char nBytesSent; unsigned char nBytesToSend; unsigned char nBytesReceived; unsigned short nBitsReceived; unsigned char irqSource; unsigned char collPos; } MfCmdInfo; //#define ResetInfo(info) (info.cmd= 0; info.status= MI_OK; info.irqSource = 0;info.nBytesSent = 0; info.nBytesToSend= 0;info.nBytesReceived = 0; info.nBitsReceived = 0;info.collPos= 0;) #endif /**************************************************************************** * 名 称:Rc500Init * 功 能:外部中断的初始化。 * 入口参数:无 * 出口参数:0正常,其它错误码 ****************************************************************************/ extern unsigned char Rc500Init(void); /////////////////////////////////////////////////////////////////////// // 14443-3函数 /////////////////////////////////////////////////////////////////////// /**************************************************************************** * 名 称:fine * 功 能:寻卡 * 入口参数:req_code 寻卡指令 request code ALL = 0x52 or IDLE = 0x26 agq 返回卡类型 * 出口参数:0正常,其它错误码 ****************************************************************************/ extern char fine(unsigned char req_code,unsigned char *atq) ; /**************************************************************************** * 名 称:CascAnticoll * 功 能:防碰撞 * 入口参数:bcnt 0 snr 卡序列号 * 出口参数:0正常,其它错误码 ****************************************************************************/ extern char CascAnticoll(unsigned char bcnt,unsigned char *snr); /**************************************************************************** * 名 称:SelectTag * 功 能:选技卡 * 入口参数:snr 卡序列号 返回值 * 出口参数:0正常,其它错误码 ****************************************************************************/ extern char SelectTag(unsigned char *snr, unsigned char *sak); /**************************************************************************** * 名 称:Fine_Card * 功 能:寻卡,碰撞,选卡 * 入口参数:CardSN 卡序列号 cardtype 返回卡类型 * 出口参数:0正常 0x10,无卡, 0x11,碰撞失败 0x12,选卡失败 ****************************************************************************/ extern unsigned char Fine_Card(unsigned char *CardSN,unsigned char *cardtype); /**************************************************************************** * 名 称:ReadCard * 功 能:读卡 * 入口参数:ReadData 卡数据 bank 块号 * 出口参数:0正常,其它错误码 ****************************************************************************/ extern unsigned char ReadCard( unsigned char *ReadData,unsigned char bank); /**************************************************************************** * 名 称:WriteCard * 功 能:写卡 * 入口参数:WriteData 卡数据 bank 块号 * 出口参数:0正常,其它错误码 ****************************************************************************/ extern unsigned char WriteCard(unsigned char *WriteData,unsigned char bank); /**************************************************************************** * 名 称:M500PiccHalt * 功 能:终止卡的操作 * 入口参数:无 * 出口参数:0正常,其它错误码 ****************************************************************************/ extern char M500PiccHalt(void); /**************************************************************************** * 名 称:DownloadPassWord * 功 能:内部效验密码 * 入口参数:bank 所使用的块号 * 出口参数:0正常,其它错误码 ****************************************************************************/ extern unsigned char DownloadPassWord(unsigned char bank); /**************************************************************************** * 名 称:DownloadPassWord2 * 功 能:直接效验密码 * 入口参数:bank 所使用的块号 * 出口参数:0正常,其它错误码 ****************************************************************************/ unsigned char DownloadPassWord2(unsigned char *password ,unsigned char bank); /**************************************************************************** * 名 称:ChangePassWord * 功 能:修改内部密码 * 入口参数:password 密码 bank 所使用的块号 * 出口参数:0正常,其它错误码 ****************************************************************************/ extern unsigned char ChangePassWord(unsigned char *password,unsigned char bank); /////////////////////////////////////////////////////////////////////// // 14443-4函数 /////////////////////////////////////////////////////////////////////// /**************************************************************************** * 名 称:PiccCMD14443_4 * 功 能:14443-4指令的发送与接收 * 入口参数:senddata 发送的数据 readdata 接收的数据 sendlen 发送的字节数 readlen 接收到的字节数 * 出口参数:0正常,,其它错误码 ****************************************************************************/ extern char PiccCMD14443_4(unsigned char *senddata,unsigned char *readdata,unsigned char sendlen,unsigned char *readlen); /**************************************************************************** * 名 称:Select_3f02() * 功 能:外部中断EINT3服务函数,取反B1控制口。 * 入口参数:指令执行状态 * 出口参数:0正常,,其它错误码 ****************************************************************************/ extern unsigned char Select_3f02(unsigned char *p); /**************************************************************************** * 名 称:read_ls() * 功 能:读历吏字节。 * 入口参数:olddata 历吏字节 * 出口参数:0正常,,其它错误码 ****************************************************************************/ extern unsigned char read_ls(unsigned char *olddata); /**************************************************************************** * 名 称:GetCardSN() * 功 能:取卡序列号 * 入口参数:SN 卡序列号 * 出口参数:0正常,,其它错误码 ****************************************************************************/ extern unsigned char GetCardSN(unsigned char *SN); /////////////////////////////////////////////////////////////////////// // 14443-4函数 // 国家建设部消费协议 /////////////////////////////////////////////////////////////////////// /**************************************************************************** * 名 称:Cash_Withdraw() * 功 能:消费初始化 * 入口参数:sn 终端编号 money 交易金额 passwordtype 密码类型 p 卡返回的数据 len 卡返回数据的长度 * 出口参数:0正常,,其它错误码 ****************************************************************************/ extern unsigned char Cash_Withdraw( unsigned char *sn,//终端编号 unsigned char *money,//交易金额 unsigned char passwordtype, unsigned char *p, unsigned char *len);//消费初始? /**************************************************************************** * 名 称:charCash_Withdraw2() * 功 能:消费 * 入口参数:je_sn 义易序列号 je_data 交易日期 je_time 交易时间 mac1 MAC1 * 出口参数:0正常,,其它错误码 ****************************************************************************/ extern unsigned char charCash_Withdraw2( unsigned char *je_sn, unsigned char *je_data, unsigned char *je_time, unsigned char *mac1 ); /**************************************************************************** * 名 称:GetName() * 功 能:取姓名 * 入口参数:name 名字 * 出口参数:0正常,,其它错误码 ****************************************************************************/ extern unsigned char GetName( unsigned short *name ); /**************************************************************************** * 名 称:RC531_IRQ_Lib() * 功 能:中断处理程序 * 入口参数:无 * 出口参数:无 内部处理全局变量 MInfo ****************************************************************************/ extern void RC531_IRQ_Lib(void); //************************************************************************* //读取IRQ的状态!!!!也可中断判别!!! 返回=1 已经有中断,=0 无!!! unsigned char Read_RC531_IRQ(void);
所在话题
参与活动
-
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
线下 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
网络 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
网络 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
网络 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
线下 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
线下 2020-10-16