51单片机RC522射频卡驱动.docx
《51单片机RC522射频卡驱动.docx》由会员分享,可在线阅读,更多相关《51单片机RC522射频卡驱动.docx(17页珍藏版)》请在冰豆网上搜索。
![51单片机RC522射频卡驱动.docx](https://file1.bdocx.com/fileroot1/2022-11/2/078b2865-2350-4d0e-b45b-39e7f70234a9/078b2865-2350-4d0e-b45b-39e7f70234a91.gif)
/*-----------------------------------------------.H文件-----------------------------------------*/
#ifndef__RC522_H_
#define__RC522_H_
/////////////////////////////////////////////////////////////////////
//MF522命令字
/////////////////////////////////////////////////////////////////////
#definePCD_IDLE0x00//取消当前命令
#definePCD_AUTHENT0x0E//验证密钥
#definePCD_RECEIVE0x08//接收数据
#definePCD_TRANSMIT0x04//发送数据
#definePCD_TRANSCEIVE0x0C//发送并接收数据
#definePCD_RESETPHASE0x0F//复位
#definePCD_CALCCRC0x03//CRC计算
/////////////////////////////////////////////////////////////////////
//Mifare_One卡片命令字
/////////////////////////////////////////////////////////////////////
#definePICC_REQIDL0x26//寻天线区内未进入休眠状态
#definePICC_REQALL0x52//寻天线区内全部卡
#definePICC_ANTICOLL10x93//防冲撞
#definePICC_ANTICOLL20x95//防冲撞
#definePICC_AUTHENT1A0x60//验证A密钥
#definePICC_AUTHENT1B0x61//验证B密钥
#definePICC_READ0x30//读块
#definePICC_WRITE0xA0//写块
#definePICC_DECREMENT0xC0//扣款
#definePICC_INCREMENT0xC1//充值
#definePICC_RESTORE0xC2//调块数据到缓冲区
#definePICC_TRANSFER0xB0//保存缓冲区中数据
#definePICC_HALT0x50//休眠
/////////////////////////////////////////////////////////////////////
//MF522FIFO长度定义
/////////////////////////////////////////////////////////////////////
#defineDEF_FIFO_LENGTH64//FIFOsize=64byte
#defineMAXRLEN18
/////////////////////////////////////////////////////////////////////
//MF522寄存器定义
/////////////////////////////////////////////////////////////////////
//PAGE0
#defineRFU000x00
#defineCommandReg0x01
#defineComIEnReg0x02
#defineDivlEnReg0x03
#defineComIrqReg0x04
#defineDivIrqReg0x05
#defineErrorReg0x06
#defineStatus1Reg0x07
#defineStatus2Reg0x08
#defineFIFODataReg0x09
#defineFIFOLevelReg0x0A
#defineWaterLevelReg0x0B
#defineControlReg0x0C
#defineBitFramingReg0x0D
#defineCollReg0x0E
#defineRFU0F0x0F
//PAGE1
#defineRFU100x10
#defineModeReg0x11
#defineTxModeReg0x12
#defineRxModeReg0x13
#defineTxControlReg0x14
#defineTxAutoReg0x15
#defineTxSelReg0x16
#defineRxSelReg0x17
#defineRxThresholdReg0x18
#defineDemodReg0x19
#defineRFU1A0x1A
#defineRFU1B0x1B
#defineMifareReg0x1C
#defineRFU1D0x1D
#defineRFU1E0x1E
#defineSerialSpeedReg0x1F
//PAGE2
#defineRFU200x20
#defineCRCResultRegM0x21
#defineCRCResultRegL0x22
#defineRFU230x23
#defineModWidthReg0x24
#defineRFU250x25
#defineRFCfgReg0x26
#defineGsNReg0x27
#defineCWGsCfgReg0x28
#defineModGsCfgReg0x29
#defineTModeReg0x2A
#defineTPrescalerReg0x2B
#defineTReloadRegH0x2C
#defineTReloadRegL0x2D
#defineTCounterValueRegH0x2E
#defineTCounterValueRegL0x2F
//PAGE3
#defineRFU300x30
#defineTestSel1Reg0x31
#defineTestSel2Reg0x32
#defineTestPinEnReg0x33
#defineTestPinValueReg0x34
#defineTestBusReg0x35
#defineAutoTestReg0x36
#defineVersionReg0x37
#defineAnalogTestReg0x38
#defineTestDAC1Reg0x39
#defineTestDAC2Reg0x3A
#defineTestADCReg0x3B
#defineRFU3C0x3C
#defineRFU3D0x3D
#defineRFU3E0x3E
#defineRFU3F 0x3F
/////////////////////////////////////////////////////////////////////
//和MF522通讯时返回的错误代码
/////////////////////////////////////////////////////////////////////
#define MI_OK0
#define MI_NOTAGERR(-1)
#define MI_ERR(-2)
#define SHAQU1 0X01
#define KUAI4 0X04
#de