RFID_MFRC522_一卡通
RFID MFRC522
2. General description
The MFRC522 is a highly integrated reader/writer IC for contactless communication at 13.56 MHz. The MFRC522 reader supports ISO/IEC 14443 A/MIFARE mode. The MFRC522’s internal transmitter is able to drive a reader/writer antenna designed to communicate with ISO/IEC 14443 A/MIFARE cards and transponders without additional active circuitry. The receiver module provides a robust and efficient implementation for demodulating and decoding signals from ISO/IEC 14443 A/MIFARE compatible cards and transponders. The digital module manages the complete ISO/IEC 14443 A framing and error detection (parity and CRC) functionality. The MFRC522 supports MF1xxS20, MF1xxS70 and MF1xxS50 products. The MFRC522 supports contactless communication and uses MIFARE higher transfer speeds up to 848 kBd in both directions. The following host interfaces are provided:
mfrc522串口读写例程
mfrc522串口读写例程MFRC522是一款经典的13.56MHz射频芯片,常用于NFC和RFID应用中。
我们可以通过它实现IC卡读写、身份验证、门禁控制等功能。
本篇文章将介绍如何使用MFRC522进行串口读写操作。
在使用MFRC522之前,需要事先准备好硬件环境。
将MFRC522模块连接到Arduino板上,其中VCC连接到Arduino的3.3V电源,GND与Arduino的GND相连,SDA接口可以连接到任意一个数字输入引脚上,由于本例中我们将使用串口进行读写操作,因此不需要连接IRQ或RST 引脚。
接下来,打开Arduino IDE,新建一个空白项目,并添加MFRC522的库文件。
从代码库的示例中选择一个基于串口读写的例程,例如"examples/ReadWrite"。
将其复制到新建的项目中,并在"setup"函数中初始化MFRC522模块和串口,代码如下:```c++void setup() {Serial.begin(9600);while (!Serial) {}SPI.begin();mfrc522.PCD_Init();}```在"loop"函数中,通过调用MFRC522库中的函数实现读写操作。
例如,如果我们要读取存储在IC卡中的数据块,可以通过调用"mfrc522.PICC_ReadCardSerial()"函数获得卡片的序列号,通过"mfrc522.MIFARE_Read()"函数读取指定块的数据,然后通过串口打印出来。
代码如下:```c++void loop() {if (mfrc522.PICC_IsNewCardPresent() &&mfrc522.PICC_ReadCardSerial()) {Serial.print(F("Card UID: "));printHex(mfrc522.uid.uidByte, mfrc522.uid.size);Serial.println();byte block = 1;byte data[16];byte len = sizeof(data);if (mfrc522.MIFARE_Read(block, data, &len) ==MFRC522::STATUS_OK) {Serial.print(F("Block ")); Serial.print(block);Serial.print(F(" Data: "));printHex(data, len);Serial.println();}}}```以上是一个基于串口的MFRC522读写例程。
mfrc522程序注释
#include <intrins.h>#include "reg52.h"#include "main.h"#include "mfrc522.h"#include <string.h>#define MAXRLEN 18/******* RxModeReg默认为106kbit/s的通信速率 ******************//************************************************************************ 功能:寻卡* 参数说明: req_code[IN]:寻卡方式* 0x52 = 寻感应区内所有符合14443A标准的卡* 0x26 = 寻未进入休眠状态的卡* pTagType[OUT]:卡片类型代码* 0x4400 = Mifare_UltraLight* 0x0400 = Mifare_One(S50)* 0x0200 = Mifare_One(S70)* 0x0800 = Mifare_Pro(X)* 0x4403 = Mifare_DESFire* 返回: 成功返回MI_OK***********************************************************************/char PcdRequest(unsigned char req_code,unsigned char *pTagType){char status;unsigned int unLen;unsigned char ucComMF522Buf[MAXRLEN];// unsigned char xTest ;ClearBitMask(Status2Reg,0x08); // 清MFCrypto1On,只能通过软件清零,该位用来指示Crypto1的接通情况,MFAuthent(验证密钥)命令成功执行后置1WriteRawRC(BitFramingReg,0x07); // TxLastBits([2-0])表示发送的最后一个字节7位发送// xTest = ReadRawRC(BitFramingReg);// if(xTest == 0x07 )// { LED_GREEN =0 ;}// else {LED_GREEN =1 ;while(1){}}SetBitMask(TxControlReg,0x03); // TxControlReg低2位(Tx2RFEn和Tx1RFEn)置1,Tx2和Tx1管脚输出信号调制在13.56MHz的载波上ucComMF522Buf[0] = req_code;status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen); // PCD_TRANSCEIVE == 0x0c发送并接收数据// if(status == MI_OK )// { LED_GREEN =0 ;}// else {LED_GREEN =1 ;}if ((status == MI_OK) && (unLen == 0x10)) // 发送成功并且接收16位数据{*pTagType = ucComMF522Buf[0];*(pTagType+1) = ucComMF522Buf[1]; // 接收的卡片类型保存在pTagType中}else{ status = MI_ERR; }return status;}/*********************************************************************** 功能:防冲撞* 参数说明: pSnr[OUT]:卡片序列号,4字节* 返回: 成功返回MI_OK**********************************************************************/char PcdAnticoll(unsigned char *pSnr){char status;unsigned char i,snr_check=0;unsigned int unLen;unsigned char ucComMF522Buf[MAXRLEN];ClearBitMask(Status2Reg,0x08); // 清MFCrypto1On,只能通过软件清零,该位用来指示Crypto1的接通情况,MFAuthent(验证密钥)命令成功执行后置1WriteRawRC(BitFramingReg,0x00); // TxLastBits([2-0])表示发送的最后一个字节的所有位都发送ClearBitMask(CollReg,0x80); // 高位置0,所有接收的位在冲突后清除ucComMF522Buf[0] = PICC_ANTICOLL1; // 防冲撞(0x93)ucComMF522Buf[1] = 0x20;status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen);if (status == MI_OK){for (i=0; i<4; i++){*(pSnr+i) = ucComMF522Buf[i]; // 读取卡片序列号snr_check ^= ucComMF522Buf[i];}if (snr_check != ucComMF522Buf[i]){ status = MI_ERR; }}SetBitMask(CollReg,0x80); // 置1,回归正常return status;}/*********************************************************************** 功能:选定卡片* 参数说明: pSnr[IN]:卡片序列号,4字节* 返回: 成功返回MI_OK**********************************************************************/char PcdSelect(unsigned char *pSnr){char status;unsigned char i;unsigned int unLen;unsigned char ucComMF522Buf[MAXRLEN];ucComMF522Buf[0] = PICC_ANTICOLL1; // 防冲撞ucComMF522Buf[1] = 0x70;ucComMF522Buf[6] = 0;for (i=0; i<4; i++){ucComMF522Buf[i+2] = *(pSnr+i); // 将卡片序列号写进去ucComMF522Buf[6] ^= *(pSnr+i);}CalulateCRC(ucComMF522Buf,7,&ucComMF522Buf[7]); // CRC校验卡片序列号ClearBitMask(Status2Reg,0x08); // 清MFCrypto1On,只能通过软件清零,该位用来指示Crypto1的接通情况,MFAuthent(验证密钥)命令成功执行后置1status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf,&unLen); // 发送卡片的序列号及其校验码if ((status == MI_OK) && (unLen == 0x18)) // 接收24位{ status = MI_OK; }else{ status = MI_ERR; }return status;}/*********************************************************************** 功能:验证卡片密码* 参数说明: auth_mode[IN]: 密码验证模式* 0x60 = 验证A密钥* 0x61 = 验证B密钥* addr[IN]:块地址* pKey[IN]:密码* pSnr[IN]:卡片序列号,4字节* 返回: 成功返回MI_OK**********************************************************************/ char PcdAuthState(unsigned char auth_mode,unsigned char addr,unsigned char*pKey,unsigned char *pSnr){char status;unsigned int unLen;unsigned char i,ucComMF522Buf[MAXRLEN];ucComMF522Buf[0] = auth_mode; // 验证模式ucComMF522Buf[1] = addr; // 块地址for (i=0; i<6; i++){ ucComMF522Buf[i+2] = *(pKey+i); } // 密码for (i=0; i<4; i++) /*源代码是6,不知道正不正确*/{ ucComMF522Buf[i+8] = *(pSnr+i); } // 防冲撞卡号// memcpy(&ucComMF522Buf[2], pKey, 6);// memcpy(&ucComMF522Buf[8], pSnr, 4);status = PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,&unLen);if ((status != MI_OK) || (!(ReadRawRC(Status2Reg) & 0x08))){ status = MI_ERR; }return status;}/*********************************************************************** 功能:读取M1卡一块数据* 参数说明: addr[IN]:块地址* pData[OUT]:读出的数据,16字节* 返回: 成功返回MI_OK***********************************************************************/char PcdRead(unsigned char addr,unsigned char *pData){char status;unsigned int unLen;unsigned char i,ucComMF522Buf[MAXRLEN];ucComMF522Buf[0] = PICC_READ; // 0x30,读块ucComMF522Buf[1] = addr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]); // 计算CRC,存放在ucComMF522Buf[2]和ucComMF522Buf[3]中status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);// 将4个字节放松出去,并接收数据if ((status == MI_OK) && (unLen == 0x90)) // 接收144位(18字节)// { memcpy(pData, ucComMF522Buf, 16); }{for (i=0; i<16; i++){ *(pData+i) = ucComMF522Buf[i]; } // 将前16字节读出}else{ status = MI_ERR; }return status;}/********************************************************************* 功能:写数据到M1卡一块* 参数说明: addr[IN]:块地址* pData[IN]:写入的数据,16字节* 返回: 成功返回MI_OK********************************************************************/ char PcdWrite(unsigned char addr,unsigned char *pData){char status;unsigned int unLen;unsigned char i,ucComMF522Buf[MAXRLEN];ucComMF522Buf[0] = PICC_WRITE; // 0xa0 写块ucComMF522Buf[1] = addr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]); // 计算CRCstatus = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);// 发送写命令和地址if ((status != MI_OK) || (unLen != 4) || ((ucComMF522Buf[0] & 0x0F) != 0x0A))// 接收低四位为1010{ status = MI_ERR; }if (status == MI_OK){//memcpy(ucComMF522Buf, pData, 16);for (i=0; i<16; i++){ ucComMF522Buf[i] = *(pData+i); } // 16字节数据CalulateCRC(ucComMF522Buf,16,&ucComMF522Buf[16]); // 两位CRC计算字节status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,18,ucComMF522Buf,&unLen); // 发送18字节if ((status != MI_OK) || (unLen != 4) || ((ucComMF522Buf[0] & 0x0F) != 0x0A)) // 返回低四位为1010{ status = MI_ERR; }}return status;}/********************************************************************** 功能:命令卡片进入休眠状态* 返回: 成功返回MI_OK*********************************************************************/char PcdHalt(void){char status;unsigned int unLen;unsigned char ucComMF522Buf[MAXRLEN];ucComMF522Buf[0] = PICC_HALT; // 0x50,休眠ucComMF522Buf[1] = 0;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]); // 计算校验位status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen); // 发送return MI_OK;}/********************************************************************** 用MF522计算CRC16函数*********************************************************************/void CalulateCRC(unsigned char *pIndata,unsigned char len,unsigned char *pOutData) {unsigned char i,n;ClearBitMask(DivIrqReg,0x04); // CRCIRQ清零WriteRawRC(CommandReg,PCD_IDLE); // 空闲命令SetBitMask(FIFOLevelReg,0x80); // FIFOLevelReg中FlushBuffer位置1,表示缓冲区读和写指针清除,即缓冲区无数据,用来存放一下批数据,ErrReg的BufferOvfl清楚 for (i=0; i<len; i++){ WriteRawRC(FIFODataReg, *(pIndata+i)); } // 将数据写入缓冲区WriteRawRC(CommandReg, PCD_CALCCRC); // 启动CRC计算,结果存于CRCResultReg中i = 0xFF;do{n = ReadRawRC(DivIrqReg);i--;}while ((i!=0) && !(n&0x04)); // CRCIRQ置位,当CRC有效且所有数据被处理则需要置1,退出循环,或者是执行了127次读取认为完成CRC也退出循环pOutData[0] = ReadRawRC(CRCResultRegL);pOutData[1] = ReadRawRC(CRCResultRegM); // 计算结果输出到pOutData中}/********************************************************************** 功能:复位RC522* 返回: 成功返回MI_OK*********************************************************************/char PcdReset(void){MF522_RST=1;_nop_();MF522_RST=0; // 复位_nop_();MF522_RST=1;_nop_();WriteRawRC(CommandReg,PCD_RESETPHASE); // 0x0F,软件复位_nop_();WriteRawRC(ModeReg,0x3D); // 和Mifare卡通讯,CRC初始值0x6363WriteRawRC(TReloadRegL,30); // 48WriteRawRC(TReloadRegH,0);WriteRawRC(TModeReg,0x8D); // 10001101(141):发送完开始计时,接收时停止计时,自动重装WriteRawRC(TPrescalerReg,0x3E); // 00111110(62),3390 定时时间:3391*49/6.78=24.5msWriteRawRC(TxAutoReg,0x40); // 控制驱动天线return MI_OK;}/********************************************************************** 设置RC632的工作方式*********************************************************************/char M500PcdConfigISOType(unsigned char type){if (type == 'A') //ISO14443_A{ClearBitMask(Status2Reg,0x08);/* WriteRawRC(CommandReg,0x20); //as defaultWriteRawRC(ComIEnReg,0x80); //as defaultWriteRawRC(DivlEnReg,0x0); //as defaultWriteRawRC(ComIrqReg,0x04); //as defaultWriteRawRC(DivIrqReg,0x0); //as defaultWriteRawRC(Status2Reg,0x0);//80 //trun off temperature sensorWriteRawRC(WaterLevelReg,0x08); //as defaultWriteRawRC(ControlReg,0x20); //as defaultWriteRawRC(CollReg,0x80); //as default*/WriteRawRC(ModeReg,0x3D);//3F/* WriteRawRC(TxModeReg,0x0); //as default???WriteRawRC(RxModeReg,0x0); //as default???WriteRawRC(TxControlReg,0x80); //as default???WriteRawRC(TxSelReg,0x10); //as default???*/WriteRawRC(RxSelReg,0x86);//84 // 内部模拟部分的调制信号作为非接触式UART输入,发送后接收器启动延时6个位时钟// WriteRawRC(RxThresholdReg,0x84);//as default// WriteRawRC(DemodReg,0x4D); //as default// WriteRawRC(ModWidthReg,0x13);//26WriteRawRC(RFCfgReg,0x7F); //4F // 接收信号电压增益23dB /* WriteRawRC(GsNReg,0x88); //as default???WriteRawRC(CWGsCfgReg,0x20); //as default???WriteRawRC(ModGsCfgReg,0x20); //as default???*/WriteRawRC(TReloadRegL,30);//tmoLength);// TReloadVal = 'h6a =tmoLength(dec)WriteRawRC(TReloadRegH,0);WriteRawRC(TModeReg,0x8D);WriteRawRC(TPrescalerReg,0x3E);// PcdSetTmo(106);delay(10);PcdAntennaOn();}else{ return -1; }return MI_OK;}/******************************************************************** * 功能:读RC632寄存器 SPI方式* 参数说明:Address[IN]:寄存器地址* 返回:读出的值*********************************************************************/ unsigned char ReadRawRC(unsigned char Address){unsigned char i, ucAddr;unsigned char ucResult=0;MF522_SCK = 0;MF522_NSS = 0;ucAddr = ((Address<<1)&0x7E)|0x80;for(i=8;i>0;i--){MF522_SI = ((ucAddr&0x80)==0x80);MF522_SCK = 1;ucAddr <<= 1;MF522_SCK = 0;}for(i=8;i>0;i--){MF522_SCK = 1;ucResult <<= 1;ucResult|=(bit)MF522_SO;MF522_SCK = 0;}MF522_NSS = 1;MF522_SCK = 1;return ucResult;}/********************************************************************* * 功能:写RC632寄存器* 参数说明:Address[IN]:寄存器地址* value[IN]:写入的值**********************************************************************/ void WriteRawRC(unsigned char Address, unsigned char value){unsigned char i, ucAddr;MF522_SCK = 0;MF522_NSS = 0;ucAddr = ((Address<<1)&0x7E); // 地址高位为0表示写,地位必须为0for(i=8;i>0;i--){MF522_SI = ((ucAddr&0x80)==0x80);MF522_SCK = 1;ucAddr <<= 1;MF522_SCK = 0;}for(i=8;i>0;i--){MF522_SI = ((value&0x80)==0x80);MF522_SCK = 1;value <<= 1;MF522_SCK = 0;}MF522_NSS = 1;MF522_SCK = 1;}/********************************************************************* * 功能:置RC522寄存器位* 参数说明:reg[IN]:寄存器地址* mask[IN]:置位值*********************************************************************/ void SetBitMask(unsigned char reg,unsigned char mask){char tmp = 0x0;tmp = ReadRawRC(reg);WriteRawRC(reg,tmp | mask); // set bit mask}/********************************************************************* * 功能:清RC522寄存器位* 参数说明:reg[IN]:寄存器地址* mask[IN]:清位值*********************************************************************/ void ClearBitMask(unsigned char reg,unsigned char mask){char tmp = 0x0;tmp = ReadRawRC(reg);WriteRawRC(reg, tmp & ~mask); // clear bit mask}/********************************************************************* * 功能:通过RC522和ISO14443卡通讯* 参数说明:Command[IN]:RC522命令字* pInData[IN]:通过RC522发送到卡片的数据* InLenByte[IN]:发送数据的字节长度* pOutData[OUT]:接收到的卡片返回数据* *pOutLenBit[OUT]:返回数据的位长度*********************************************************************/ char PcdComMF522(unsigned char Command,unsigned char *pInData,unsigned char InLenByte,unsigned char *pOutData,unsigned int *pOutLenBit){char status = MI_ERR;unsigned char irqEn = 0x00;unsigned char waitFor = 0x00;unsigned char lastBits;unsigned char n;unsigned int i;switch (Command){case PCD_AUTHENT: // 验证密钥irqEn = 0x12;waitFor = 0x10;break;case PCD_TRANSCEIVE: // 发送并接收数据irqEn = 0x77;waitFor = 0x30;break;default:break;}WriteRawRC(ComIEnReg,irqEn|0x80); // ComIEnReg:中断请求的使能位。
MFRC522 IC卡模块使用手册V1.0
MFRC522 IC 卡模块使用手册 V1.0嵌达科技,快乐生活 欢迎访问:/shop/view_shop.htm?tracelog=twddp 程序功能: 当 IC 卡放在模块上时,先把预先赋值给 Write_Data[16]这个数组中的数据写 到 IC 卡中,然后马上把写入的数据读出来,显示在 PC 机的串口调试助手上。
操作步骤: 1、 下载程序到单片机中。
我们设计的电路板使用的是 AT89S52,因此只能通过 ISP 下载,为了布线方 便,我只引出了必须的 6 根线供下载,图如下:程 序 下 载 接 口 程 序 下 载 接我们都知道 ISP 下载器都是 10 脚的,从 10 脚转变成 6 脚就必须有所转换, 一般有两种解决方法:1)通过杜邦线一对一连,这种方法的前提是你必须知道 自己手上的 ISP 下载器引脚定义;2)通过另一块转接板把 10 脚转换为 6 脚,并 附加上开关功能,这种方法比较方便,如下图:由于此转换电路板制作费用较小,如果您买了 ISP 下载器或者买了读写卡模 块,我们将免费赠送。
2、 准备工作 ① 将读写卡模块插在电路板上; ② 将串口线连接电路板和电脑,保证可以实现串口通信的硬件连接; ③ 打开 PC 机上的串口调试助手,并打开对应端口,开启 16 进制显示,准 备接收数据。
口3、 实现读写卡 ① 给电路板通电; ② 把卡放在读卡器模块上,当绿灯亮时表示读写卡结束,此时串口调试助 手会显示出卡对应数据块中的数据,如下图:1、工程文件说明:我们的程序只用了四个文件,分别为:读写卡.c、read_card.h、read_card.c和 rc522.h。
下面我来介绍一下这四个文件的作用,各位亲,这部份仔细看哦, 尤其是那些还执着于在一个文件中实现所的函数编写的朋友们, 下面我们所展示 的文件架构可以适用于小中型工程的实现, 这会让您的程序看上去更有条理性和 逻辑性,更容易调试和修改程序,这对于您自身编程能力的提升是无往不利的。
rc522读卡工作原理
rc522读卡工作原理RC522读卡器是一种基于射频识别(RFID)技术的设备,常用于无线智能卡和非接触式读卡。
RC522读卡器的核心部件是MFRC522芯片,它由射频模块、数字控制器和接口电路等组成。
射频模块用于发送和接收射频信号,数字控制器负责控制读卡器的整个工作流程,接口电路用于与外部设备进行通信。
RC522读卡器的工作原理如下:1. 射频信号传输:读卡器通过射频模块发送射频信号,一般工作在13.56MHz的频率范围内。
射频信号会被传输到读卡器附近的智能卡上。
2. 卡片回应:智能卡接收到射频信号后,会进行解调和回应。
卡片内部的天线会将射频信号转换为电能,然后供电给卡片的电路系统。
卡片的电路系统会对射频信号进行解调和处理,并返回相关的信息。
3. 信号接收:读卡器的射频模块接收到智能卡回应的射频信号后,将其经过解调和处理后传递给芯片的数字控制器。
4. 信息解码:芯片的数字控制器对接收到的射频信号进行解码和处理,将卡片回应的信息转换为可读取的格式。
5. 数据处理:读卡器将解码后的信息进行处理,并根据协议规定的方式提取出所需的数据,如卡片的唯一标识符等。
6. 数据传输:读卡器通过接口电路将提取出的数据传输给外部设备,如电脑或其他终端设备。
需要注意的是,RC522读卡器一般采用SPI接口与外部设备进行通信,SPI是一种同步的串行通信协议,通过时钟和数据传输线进行数据传输。
读卡器还可以通过修改寄存器的值,设置不同的参数和工作模式。
综上所述,RC522读卡器的工作原理是通过射频信号传输、卡片回应、信号接收、信息解码、数据处理和数据传输等过程,实现对智能卡的无线识别和数据读取。
这种技术在许多领域得到应用,如门禁系统、智能支付、物流追踪等。
基于MFRC522的Mifare射频卡读写模块开发
基于MFRC522的Mifare射频卡读写模块开发IC卡按卡与外界数据传送的形式不同,分为接触式 IC卡和非接触式IC卡。
接触式IC卡通过触点从读写模块获取能量和交换数据;非接触式IC卡通过射频感应从读写模块获取能量和交换数据,所以非接触式IC卡又叫射频卡。
与传统的接触式IC卡、磁卡相比较,利用射频识别技术(radio frequency identification)开发的非接触式IC识别器,在系统寿命、防监听、防解密等性能上具有很大的优势。
目前我国引进的射频 IC卡主要有 Philips公司的 Mifare卡和 ATMEL公司的 Temic 卡。
而PHILIPS公司的 Mifare卡现在是市场的主流产品,应用越来越广。
本文介绍的是利用基于 ARM7 CPU 的 LPC2132、MF RC522、Mifare卡等构建射频识别模块的设计,并在该读写模块基础上能很容易地开发出适用于各方面的自动识别系统。
1 MF RC522介绍MF RC522是 Philips公司针对三表最新推出的一款非接触式低功耗读写基站芯片,它是应用于13.56MHz非接触式通信中高集成读卡芯片系列中的一员。
该读卡芯片系列利用了先进的调制和解调概念,完全集成了13.56MHz下所有类型的被动非接触式通读方式和协议。
MF RC522支持ISO14443A所有的层,传输速度最高达424kbps,内部的发送器部分不需要增加有源电路就能够直接驱动近距离天线,接收部分提供了一个坚固而有效的解调和解码电路,用于接收ISO14443A兼容的应答信号。
数字处理部分提供奇偶和CRC检测功能。
RC522具有三种接口方式可方便地与任何 MCU通讯:SPI模式、UART模式、I2C模式。
甚至可通过RS232或 RS485通讯方式直接与PC机相联,给终端设计提供了前所未有的灵活性。
2 系统组成如图1所示,系统主要由MCU LPC2132、MF RC522、人机接口以及通信模块组成。
MFRC522数据手册_引脚图_参数
The MFRC522 is available in two versions:
• MFRC52201HN1, hereafter referred to version 1.0 and • MFRC52202HN1, hereafter referred to version 2.0.
MFRC522
Standard 3V MIFARE reader solution
Rev. 3.7 — 26 March 2014 112137
Product data sheet COMPANY PUBLIC
1. Introduction
This document describes the functionality and electrical specifications of the contactless reader/writer MFRC522.
83 of 94
NXP Semiconductors
MFRC522
Standard 3V MIFARE reader solution
001aak598 (1) (2)
(3)
10 μs/div (1) MinLevel (1 V/div) on pin AUX2. (2) Corr1 (1 V/div) on pin AUX1. (3) RF field.
All information provided in this document is subject to legal disclaimers.
Rev. 3.7 — 26 March 2014 112137
© NXP Semiconductors N.V. 2014. All rights reserved.
mfrc522原理
“mfrc522”原理如下:MFRC522芯片采用13.56 MHz的频率进行射频通信。
它包括一个调制解调器,一个13.56 MHz的射频前端,以及一个用于处理命令和数据的控制单元。
MFRC522与标签之间的通信是通过电磁感应实现的。
MFRC522使用电磁场与附近的RFID标签进行通信。
它通过感应线圈产生一个13.56 MHz的高频电磁场。
当RFID标签进入这个电磁场时,它会从电磁场中吸收能量,并利用这个能量启动其自己的电路。
在通信开始时,MFRC522将发送一系列初始化命令,以确保与标签之间的正常通信。
然后,MFRC522将发送一条脉冲,激活附近的标签。
标签接收到脉冲后,开始回复MFRC522的请求。
标签回复的过程中,会回传一些关键的信息,比如标签的序列号、容量和状态等。
MFRC522将这些信息解码并存储在其内存中。
同时,MFRC522还会计算校验和,并与标签回传的校验和进行比对,以确保数据的完整性和准确性。
一旦标签的信息被成功读取并验证,MFRC522将向控制单元发送一个信号,表示读取操作成功。
控制单元可以基于读取到的信息执行相应的操作,比如开启门禁系统、记录车辆信息等。
除了读取标签信息,MFRC522还支持向标签写入数据。
写入操作是通过向标签发送写入命令,并将要写入的数据放入MFRC522的内存中实现的。
MFRC522将向标签发送数据,并等待标签的确认。
当MFRC522与标签之间的通信结束时,它会切断电磁场并进入待机状态,以节省能量并延长芯片的寿命。
总结起来,MFRC522工作原理如下:通过产生13.56 MHz的射频电磁场与附近的RFID标签进行通信。
通过发送初始化命令和脉冲,MFRC522激活标签并读取其信息。
MFRC522将读取到的信息存储在内存中,并进行校验和比对。
MFRC522可以执行读取、写入等操作,并向控制单元发送相应的信号。
通信结束后,MFRC522切断电磁场并进入待机状态。
校园一卡通系统中RFID读写器的设计
校园一卡通系统中RFID读写器的设计欧阳宏志;肖玉明【摘要】为了加速校园信息化建设,实现校园一卡通系统,设计了RFID读写器.首先概述了RFID读写器的基本原理及结构框架,并对MFRC522芯片做了简单的介绍和说明,然后给出了实际的电路原理图及天线计算方法,并根据关键寄存器的设置给出了对Mifare卡完成读写基本功能的流程图,完成了基本的身份识别和电子钱包等应用.结果表明,读写器读写数据准确,易于扩展,有一定的发展空间.【期刊名称】《电子设计工程》【年(卷),期】2014(022)016【总页数】4页(P109-112)【关键词】校园一卡通;RFID;读写器;MFRC522【作者】欧阳宏志;肖玉明【作者单位】南华大学电气工程学院,湖南衡阳421001;南华大学电气工程学院,湖南衡阳421001【正文语种】中文【中图分类】TN92射频识别(Radio Frequency Identification,RFID)技术是一种非接触自动识别技术,利用射频信号通过空间耦合(电感或电磁耦合)实现无接触信息传递并通过所传递的信息达到识别目的。
近年来,随着校园数字化、信息化建设的逐步深入,校园内的各种信息资源整合已经进入全面规划和实施阶段,校园一卡通以结合学校正在进行的统一身份认证、人事、学工等应用系统建设,通过共同的身份认证机制,实现数据管理的集成与共享。
校园一卡通系统已经成为校园信息化建设有机的组成部分。
RFID技术的广泛应用,让师生使用一张卡就能够在校内消费、考勤、就医、借书以及办理其他所有事务,从而实现“一卡在手,走遍校园”。
本文设计的RFID读写器系统以STC89C52单片机作为主控芯片,选用高度集成的非接触式读写芯片MFRC522与ISO 14443A/Mifare卡进行无线通信,通过芯片内部发送器驱动读写器天线与Mifare卡和应答机进行通信,同时接收器部分提供一个功能强大和高效的解调和译码电路,用来处理Mifare卡和应答机的信号,实现读卡过程中的防冲撞处理和对卡内E2PROM块内容的读写等功能。
RFID-MFRC522
RFID一、概述 (2)二、系统组成 (2)三、非接触式IC卡—M1卡 (3)1、外观 (3)2、结构 (3)3、功能 (4)4、Mifare 1 S50卡存储EEPROM (7)四、读卡器—MFRC522 (9)1、内部框图 (10)2、电路图 (11)3、MFRC522支持的三种接口 (12)4、工作过程 (12)五、结果 (17)一、概述通过点名、磁卡和接触式IC卡等方式对学生的到课情况进行考勤、记录管理,既耗时又相互干扰;而非接触式RFID学生考勤系统实现了利用无线射频识别技术对学生考勤管理,既方便、快捷,又省时。
而且通过物联网和PC机终端对数据进行处理。
二、系统组成学生智能考勤系统由四大部分组成,非接触式IC卡、读卡器、单片机及PC 终端。
如下图学生考勤系统组成1.当保存有学生基本信息的IC卡进入读卡器天线作用范围内时,卡片获得能量以维持卡内部电路工作;2.单片机负责控制读卡器进行一系列“寻卡→防冲突→选卡→读/写卡”操作,如果成功,将读取到卡片上的学生信息;3.单片机将学生信息发送到PC终端,由PC机对一步对数据进行处理。
三、非接触式IC卡—Mifare One卡1、外观非接触式IC卡2、结构非接触式IC卡的薄膜结构卡内部结构3、功能功能框图读卡器通过天线发射激励信号(一组固定频率的电磁波),IC卡进入读写器工作区内,被读写器信号激励。
在电磁波的激励下,卡内的LC串联谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2 V时,此电容可以作为电源为其他电路提供工作电压,供卡内集成电路工作所需。
(1)ATR模块:Answer To Request(“请求之应答”)当一张MIFARE 1卡处在读写器的天线工作范围之内时,程序员控制读写器向卡发出Request all(或Request std)命令后,卡的ATR将启动,将卡片块0 中2个字节的卡类型号(TagType)传送给读写器,建立卡与读写器的第一步通信联络。
RC522读卡模块使用说明
TJDZ-RC522 RFID 读卡模块
用户操作手册
Ver_1.0_20121101
RC522 RFID 读卡模块使用说明
(以 MSP430F149 处理器为例)
第一步:将 RFID 模块与 MSP430F149 最小系统板采用杜邦线连接;
RC522 接口MSP430F149 接口
SDA(数据接口) P2.7
SCK(时钟接口)P2.6
MOSI(SPI 接口主出从入)P2.5
MISO(SPI 接口主入从出)P2.1
NC(悬空)
GND(地)GND
RST(复位信号)P2.3
3.3V(电源) 3.3V
第二步:程序通过 BSL 下载到 MSP430F149 中;
第三步:将串口线 USB-RS232 连接计算机与开发板;
第四步:打开串口调试手(正确设置波特率以及串口号);
第五步:按 MSP430F149 最小系统板上的复位键,则串口调试手出现如下画面:
第六步:在串口发送区,输入 A 点击发送,为自动寻卡模式;若输入F 点击发送则为单次寻卡模式;
第七步:将卡片放到读卡模块上,则可以看到读出卡的 ID 号。
测试完毕。
RFID-RC522
/* * 函 数 名:ClearBitMask * 功能描述:清 RC522 寄存器位 * 输入参数:reg--寄存器地址;mask--清位值 * 返 回 值:无 */ void ClearBitMask(uchar reg, uchar mask) {
uchar tmp; tmp = Read_MFRC522(reg); Write_MFRC522(reg, tmp & (~mask)); // clear bit mask }
/* * 函 数 名:Write_MFRC5200 * 功能描述:向 MFRC522 的某一寄存器写一个字节数据 * 输入参数:addr--寄存器地址;val--要写入的值 * 返 回 值:无 */ void Write_MFRC522(uchar addr, uchar val) { CS = 0; //地址格式:0XXXXXX0 SPI_Write((addr<<1)&0x7E); SPI_Write(v0 //RxWait = RxSelReg[5..0] //RxGain = 48dB
/* * * * * * * * * * *
函 数 名:MFRC522_Request 功能描述:寻卡,读取卡类型号 输入参数:reqMode--寻卡方式, TagType--返回卡片类型 0x4400 = Mifare_UltraLight 0x0400 = Mifare_One(S50) 0x0200 = Mifare_One(S70) 0x0800 = Mifare_Pro(X) 0x4403 = Mifare_DESFire 返 回 值:成功返回 MI_OK
/* * 函 数 名:Read_MFRC522 * 功能描述:从 MFRC522 的某一寄存器读一个字节数据 * 输入参数:addr--寄存器地址 * 返 回 值:返回读取到的一个字节数据 */ uchar Read_MFRC522(uchar addr) { uchar val; CS = 0; //地址格式:1XXXXXX0 SPI_Write(((addr<<1)&0x7E) | 0x80); val = SPI_Read(); CS = 1; return val; } /* * 函 数 名:SetBitMask * 功能描述:置 RC522 寄存器位 * 输入参数:reg--寄存器地址;mask--置位值 * 返 回 值:无 */ void SetBitMask(uchar reg, uchar mask) { uchar tmp; tmp = Read_MFRC522(reg); Write_MFRC522(reg, tmp | mask); // set bit mask }
MFRC522 读卡器设计重点讲义资料
第2部分——射频能量和信号接口;
第3部分——初始化和防冲突;
第4部分——传输协议。
近耦合IC卡的物理特性及尺寸与ISO/IEC 7810中的规定相符,为85.72mm×54.03mm×0.76mm±容差。与磁卡、接触型IC卡标准尺寸完全一致,为兼容接触型IC卡和磁卡提供了有效途径和方案,使得非接触型的双界面卡、多功能组合卡的推出成为可能。
(2)RFID卡读写设备
RFID卡读写设备(读写器)是连接RFID卡与应用系统间的桥梁,是RFID卡应用中至关重要的一个环节。RFID卡读写设备的基本任务就是启动RFID卡,与RFID卡建立通信,在应用系统和卡片间传递数据。
RFID卡读写器将要发送的信息编码后加载到一固定频率的载波上,当RFID卡(卡片内有一个谐振电路,其频率与读写器发送的载波频率相同)进入读写器的工作区域后,谐振电路产生共振并产生电荷积累,当电荷积累到一定数值时,就能为RFID卡内的电路提供工作电压,使IC卡内的芯片开始正常工作,处理读写器发送的数据信息。
与接触式IC卡相比,RFID卡具有以下优点:
(1)高可靠性:由于无触点,避免了由接触读写而产生的各种故障。提高了抗静电和环境污染(如油烟、灰尘、水汽等)的能力,因此提高了使用的可靠性、读写设备和卡片的使用寿命。
(2)易用性:操作方便、快捷,无需插拔卡,完成—次操作只需0.1~0.3秒。使用时,卡片可以任意方向掠过读写设备表面。
摘要
射频识别卡读写模块的设计与应用
随着电子信息技术的发展,智能卡(IC卡)已经在我们的生活中随处可见。射频识别卡正逐渐取代传统的接触式IC卡,成为智能卡领域的新潮流。研究、开发射频识别卡的读写技术与读写设备,对其推广有着重要的实际意义。
基于MFRC522的RFID读卡器模块设计及实现
基于MFRC522的RFID读卡器模块设计及实现RFID是射频识别的英文缩写。
通俗地说,RFID读卡器是一种能阅读电子标签数据的自动识别设备。
RFID读卡器RFID射频识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可工作于各种恶劣环境。
RFID技术可识别高速运动物体并可同时识别多个标签,操作快捷方便。
目前国内的13.56MHzRFID读卡器芯片市场上,荷兰恩智浦公司的Mifare非接触读卡芯片系列中MFRC522系列具有低电压、低功耗、小尺寸、低成本等优点。
采用3.3V统一供电,工作频率为13.56MHz,兼容ISO/IEC14443A及MIFARE模式。
MFRC522主要包括两部分,其中数字部分由状态机、编码解码逻辑等组成;模拟部分由调制器、天线驱动器、接收器和放大器组成。
MFRC522的内部发送器无需外部有源电路即可驱动读写天线实现与符合ISO/IEC14443A或MIFARE标准的卡片的通讯。
接收器模块提供了一个强健而高效的解调和解码电路,用于接收兼容ISO/IEC14443A和MIFARE的卡片信号。
数字模块控制全部ISO/IEC14443A帧和错误检测(奇偶和CRC)功能。
模拟接口负责处理模拟信号的调制和解调。
非接触式异步收发模块配合主机处理通信协议所需要的协议。
FIFO(先进先出)缓存使得主机与非接触式串行收发模块之间的数据传输变得更加快速方便。
1 系统组成如图1所示,读卡器模块包括MCU、读卡器芯片、天线及其滤波匹配电路。
MCU选用TI公司的超低功耗单片机MSP430F149,该单片机支持多种低功耗模式,并能够快速唤醒,具有60KB+256B的Flash、2KB的RAM、两个既可做异步UART又可以做SPI使用的串行通讯口、6组I/O口、一个内部DCO和2个外部时钟,非常适合开发低功耗高性能的产品。
在本模块中MCU通过SPI方式与MFRC522连接,供电电压均为3.3V,所以不再需要外围的电压转换电路,外接一个天线及简单的滤波匹配电路,即可实现与卡片的通信。
RFID-MFRC522
RFID一、概述 (2)二、系统组成 (2)三、非接触式IC卡—M1卡 (3)1、外观 (3)2、结构 (3)3、功能 (4)4、Mifare 1 S50卡存储EEPROM (7)四、读卡器—MFRC522 (9)1、内部框图 (10)2、电路图 (11)3、MFRC522支持的三种接口 (12)4、工作过程 (12)五、结果 (17)一、概述通过点名、磁卡和接触式IC卡等方式对学生的到课情况进行考勤、记录管理,既耗时又相互干扰;而非接触式RFID学生考勤系统实现了利用无线射频识别技术对学生考勤管理,既方便、快捷,又省时。
而且通过物联网和PC机终端对数据进行处理。
二、系统组成学生智能考勤系统由四大部分组成,非接触式IC卡、读卡器、单片机及PC 终端。
如下图学生考勤系统组成1.当保存有学生基本信息的IC卡进入读卡器天线作用范围内时,卡片获得能量以维持卡内部电路工作;2.单片机负责控制读卡器进行一系列“寻卡→防冲突→选卡→读/写卡”操作,如果成功,将读取到卡片上的学生信息;3.单片机将学生信息发送到PC终端,由PC机对一步对数据进行处理。
三、非接触式IC卡—Mifare One卡1、外观非接触式IC卡2、结构非接触式IC卡的薄膜结构卡内部结构3、功能功能框图读卡器通过天线发射激励信号(一组固定频率的电磁波),IC卡进入读写器工作区内,被读写器信号激励。
在电磁波的激励下,卡内的LC串联谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2 V时,此电容可以作为电源为其他电路提供工作电压,供卡内集成电路工作所需。
(1)ATR模块:Answer To Request(“请求之应答”)当一张MIFARE 1卡处在读写器的天线工作范围之内时,程序员控制读写器向卡发出Request all(或Request std)命令后,卡的ATR将启动,将卡片块0 中2个字节的卡类型号(TagType)传送给读写器,建立卡与读写器的第一步通信联络。
mfrc522 手册
mfrc522手册MFRC522是一款常用的RFID读卡器模块,广泛应用于身份识别、门禁控制、移动支付等领域。
以下是对MFRC522的详细介绍:MFRC522是一款由NXP公司生产的低功耗、高灵敏度的RFID读卡器模块,其工作频率为13.56MHz,支持ISO14443A/MIFARE标准。
该模块具有SPI接口,可方便地与微控制器进行通信,从而实现快速、可靠地读取RFID卡的信息。
MFRC522的主要特点包括:1、支持多种RFID卡类型:MFRC522支持ISO14443A标准的RFID卡,包括MIFARE Classic、MIFARE Ultralight等常用卡型。
此外,它还支持多种加密算法,如DES、3DES等,确保数据的安全性。
2、高速数据传输:MFRC522的SPI接口数据传输速率最高可达800kbps,使得读卡器能够快速读取RFID卡的标签信息,提高了系统的响应速度。
3、自动寻卡功能:MFRC522具有自动寻卡功能,当有RFID卡靠近时,读卡器会自动唤醒并读取卡的信息,进一步简化了系统的设计。
4、低功耗设计:MFRC522采用低功耗设计,工作电流较小,有利于延长系统的使用寿命。
5、易于集成:MFRC522具有紧凑的尺寸和易于集成的特点,可方便地与其他电子元件一起应用于各种RFID读卡器设备中。
MFRC522的应用场景非常广泛,包括但不限于:1、身份识别:在门禁控制、考勤系统等应用中,MFRC522可以快速、准确地读取用户的RFID卡信息,从而实现身份的识别和验证。
2、移动支付:通过集成MFRC522,移动设备可以实现非接触式支付功能,为用户带来便捷的支付体验。
3、物流管理:在物流领域,MFRC522可以用于跟踪包裹的位置和状态,提高物流效率。
4、资产管理:在图书馆、仓储等场景中,MFRC522可以帮助管理者追踪和管理资产的位置和状态。
总之,MFRC522是一款功能强大、易于集成的RFID读卡器模块,可广泛应用于各种需要快速、可靠地读取RFID卡信息的场景中。
rc522中文资料_数据手册_参数
MFRC522_34本文档提供的所有信息均受法律免责声明保护. ?恩智浦BV 2010.保留所有权利.产品数据表上市 3.4版 - 2010年3月5日 112134 31的96恩智浦半导体 MFRC522非接触式读卡器IC 8.6节电模式 8.6.1硬盘掉电当引脚NRSTPD为低电平时,MFRC522硬件掉电被 使能.这将关闭所有内部电流包括振荡器的汇.所有数字输入缓冲器都与输入引脚分开内部钳位(引脚NRSTPD除外).输出引脚在高电 平或低电平时被冻结低级. 8.6.2软关断模式在COMMANDREG寄存器之后立即进入软休眠模式 POWERDOWN位被设置为逻辑1.所有 内部电流吸收器都被关闭,包括振荡器缓冲.但是,MFRC522数字输入缓冲器并未与输入引脚分开并保持其功能.数字输出引脚不会改 变它们的状态.在软件关断期间,所有寄存器值,FIFO缓冲区内容和配置保持其当前内容.将POWERDOWN位设置为逻辑0后,需要 1024个时钟直到软关断模式退出由POWERDOWN位指示.将其设置为逻辑0不会立即生效清除它.软关断模式时,它由MFRC522自动清 零退出.备注:如果使用内部振荡器,则必须考虑它是由哪个振荡器提供的 引脚AVDD,并且它需要一定的时间(T OSC )MFRC522 直到振荡器稳定并且时钟周期可以被内部逻辑检测到.首先推荐用于串行UART将值55H发送到MFRC522.振荡器必须稳定才能进一步 访问寄存器.为确保这一点,对地址0执行读取访问,直到MFRC522回答上次读取命令,地址为0的寄存器内容.这表示 MFRC522已准备 就绪. 8.6.3发射机掉电模式发射机掉电模式由此关闭内部天线驱动器,MFRC522关闭射频场.变送器掉电模式通过设置 TXCONTROLREG寄存器的TX1RFEN位或TX2RFEN位置为逻辑0. 8.7振荡器电路图22.石英晶体连接 产品数据表上市 3.4版 - 2010年3月5日 112134 25的96恩智浦半导体 MFRC522非接触式读卡器IC 8.2.3串行数据交换 MFRC522实现了两个 主要模块.数字模块包含状态机器,编码器/解码器逻辑.模拟模块包含调制器和天线驱动器,接收器和放大器. MFRC522它们之间的接 口是可能的两个模块需要配置,以便将接口信号路由到引脚MFIN和 MFOUT.该拓扑结构允许将MFRC522的模拟模块连接到数字模块 的另一个设备.串行信号开关由TXSELREG和RXSELREG寄存器控制.图20显示了用于P-DRIVER TX1和TX2的串行数据开关. 8.2.4 MFIN 和MFOUT接口支持 MFRC522分为数字电路模块和模拟电路模块.数字块包含状态机,编码器和解码器逻辑等.模拟块包含调制器和天 线驱动器,接收器和放大器.界面在这两个模块之间可以进行配置,以便可以路由接口信号到引脚MFIN和MFOUT;请参阅第26页的图 21.该配置已实施使用TXSELREG寄存器的MFOUTSEL [3:0]和DRIVERSEL [1:0]位和RXSELREG寄存器 UARTSEL [1:0]位.这种拓扑 结构允许模拟模块的某些部分连接到数字模块另一个设备. TXSELREG寄存器中的开关MFOUTSEL可用于测量MIFARE和 ISO / IEC14443 A相关信号.这在设计阶段尤为重要或用于测试目的,因为MFRC522能够检查发送和接收的数据. MFIN和MFOUT引脚的重要 用途可以在有源天线概念中找到.外部有源天线电路可以连接到MFRC522的数字模块.必须配置开关MFOUTSEL,以便发送内部米勒编 码信号引脚MFOUT(MFOUTSEL = 100B). UARTSEL [1:0]必须配置为接收一个具有来自MFIN引脚的子载波的曼彻斯特信号
MF RC522应用说明书
不同的主机接口功能可满足不同用户的要求。
2.订购信息
待定。
3.管脚信息
3.1 封装
RC522 包含 QFN32 的封装形式。
表 1 封装信息
封装 QFN32
功能注 见第 19 章释的表面封装
2
RC522
3.2 管脚描述
表 2 管脚描述
注:管脚类型: I-输入;O-输出;PWR-电源
符号
QFN32
类型
3
DivIEnReg
4
ComIrqReg
5
DivIrqReg
6
ErrorReg
7
Status1Reg
8
Status2Reg
9
FIFODtataReg
A
FIFOLevelReg
B
WaterLevelReg
C
ControlRegDLeabharlann BitFramingReg
E
CollReg
F
RFU
PAGE1:命令
0
RFU
5.2.1.2 CommandReg 启动和停止命令的执行。
CommandReg 7
00
访问权限
RFU
表 7 CommandReg
基于RC522的RFID门禁系统的设计
摘要智能门禁系统在自动化应用中十分普遍,他为人们日常生活提供便利和保障人们的生活安全,随着社会和经济的发展需要,智能识别技术开始运用于许多行业,特别是安全系数特别高的行业(银行、机密机构)、门控行业等,智能门禁系统的便利性和安全性让它越来越受到重视。
门禁系统集电脑技术、电子技术、机械技术、磁电技术、和射频识别技术于一体,使卡与锁之间实现完整“对话”功能,以智能卡来控制门锁的开启,开创了门禁管理的新概念,它不仅跟管理者提供了更安全、更快捷、更自动化的管理模式,而且也给使用者带来了极大的方便。
为此,本文研究一种基于RC522的RFID门禁系统的设计。
本设计分析了RFID门禁系统的国内外发展现状、未来发展趋势和目前主要存在的问题,提出了基于RFID门禁控制系统的设计方案。
先阐述了RFID门禁控制系统的组成、系统的基本工作原理,分析了系统的硬件电路设计、软件设计过程,对硬件子电的选型设计、子程序设计、串口通讯程序设计等作了详细的介绍。
门禁系统采用STC15W4/8AS 单片机作为控制核心,由RC522读卡控制单元、射频天线电路、看门狗复位电路、报警电路、电控锁控制电路组成。
在仿真通过键盘输入模拟读卡器数据读入,系统通过输入密码与设定密码对比,实现对通道进出权限的控制(密码输入进门的控制);在异常情况下(非法侵入、门超时未关)自动报警、手动报警。
关键词:RFID门禁系统;射频技术;智能控制;RC522AbstractThe intelligent entrance guard system is very common in automation applications, it provides convenience and guarantee people's life safety of people's daily life, along with the development of society and economy, the intelligent recognition technology has been used in many industries, especially the safety coefficient of particularly high industry (bank), gated industry, convenience and security intelligent access control system to make it more and more attention.The intelligent entrance guard system gathered with computer technology,electronic technology ,mechanical technology,magnetic electric technology and radio frequency identification technology.Access Control System makes card and lock get “integrity dialogue”function.That smart card to control the open or close of the doors,introduces a new management concept,which not only manager can provide a safe,faster,more automated management style,but also offer the users,a great convenience.In this paper,we research on the design of radio frequency identification Access Control System.Analysis of the design of the RFID access control system at home and abroad,the future development trend and main problems, put forward a design scheme of access control system based on RFID. First elaborated the basic principle, system composition of RFID access control system, analyzes the system hardware circuit design, software design, hardware design, selection of the sub circuit subroutine design, serial communication program design in detail.Access control system using AT89C52 micro controller as control core, theMFRC500 card control module, RF circuit, watchdog reset circuit, alarm circuit,electric control lock control circuit. Through the keyboard input analog card reader reads data in the simulation system, using a password and the password comparison, control the import permission on the channel (control password door); in exceptional circumstances (illegal intrusion, not closing the door overtime) automatic alarm, manual alarm.Keywords:RFID system;RFID;intelligent control;RC522目录摘要 (Ⅰ)Abstract (Ⅱ)第1章绪论 (1)1.1前言 (2)1.2 课题研究的意义 (3)1.3 门禁系统的发展及国内外研究状况 (4)1.4 门禁系统发展趋势与主要存在问题 (5)1.5 本文主要研究内容 (6)第2章门禁系统的技术基础 (7)2.1 射频识别技术 (8)2.1.1 射频识别原理 (9)2.1.2 RFID天线 (10)2.1.3 射频识别系统的典型结构 (11)2.1.4 RFID与其他技术的比较 (12)2.2 门禁系统结构原理 (13)2.3 密码技术 (14)第一章绪论1.1 前言自从上世纪中后期以来,有了科学研究继续加速深入,智能化的时代到来,计算机、自动控制和移动通讯技术的发展,已经在深深改变人们的日常工作和生活习惯。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RFID一、概述 (2)二、系统组成 (2)三、非接触式IC卡—M1卡 (2)1、外观 (2)2、结构 (3)3、功能 (3)4、Mifare 1 S50卡存储EEPROM (5)四、读卡器—MFRC522 (7)1、内部框图 (7)2、电路图 (8)3、MFRC522支持的三种接口 (9)4、工作过程 (9)五、结果 (12)一、概述通过点名、磁卡和接触式IC卡等方式对学生的到课情况进行考勤、记录管理,既耗时又相互干扰;而非接触式RFID学生考勤系统实现了利用无线射频识别技术 对学生考勤管理,既方便、快捷,又省时。
而且通过物联网和PC机终端对数据进行处理。
二、系统组成学生智能考勤系统由四大部分组成,非接触式IC卡、读卡器、单片机及PC 终端。
如下图学生考勤系统组成1.当保存有学生基本信息的IC卡进入读卡器天线作用范围内时,卡片获得能量以维持卡内部电路工作;2.单片机负责控制读卡器进行一系列“寻卡→防冲突→选卡→读/写卡”操作,如果成功,将读取到卡片上的学生信息;3.单片机将学生信息发送到PC终端,由PC机对一步对数据进行处理。
三、非接触式IC卡—Mifare One卡1、外观非接触式IC卡2、结构非接触式IC卡的薄膜结构卡内部结构3、功能功能框图读卡器通过天线发射激励信号(一组固定频率的电磁波),IC卡进入读写器工作区内,被读写器信号激励。
在电磁波的激励下,卡内的LC串联谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2 V时,此电容可以作为电源为其他电路提供工作电压,供卡内集成电路工作所需。
(1)ATR模块:Answer To Request(“请求之应答”)当一张MIFARE 1卡处在读写器的天线工作范围之内时,程序员控制读写器向卡发出Request all(或Request std)命令后,卡的ATR将启动,将卡片块 0 中2个字节的卡类型号(TagType)传送给读写器,建立卡与读写器的第一步通信联络。
如果不进行第一步的ATR工作,读写器对卡的其他操作(读/写操作等)将不会进行。
(2)AntiCollision模块:防(卡片)冲突功能如果有多张MIFARE 1卡处在读写器的天线工作范围之内,则AntiCollision模块的防冲突功能将被启动工作。
读写器将会首先与每一张卡进行通信,读取每一张卡的序列号(Serial Number)。
由于每一张MIFARE 1卡都具有惟一的序列号,决不会相同,因此程序员将启动读写器中的AntiCollision防重叠功能配合卡上的防重叠功能模块,根据卡序列号来选定其中一张卡。
被选中的卡将被激活,可以与读写器进行数据交换;而未被选中的卡处于等待状态,随时准备与读写器进行通信。
AntiCollision模块(防重叠功能)启动工作时,读写器将得到卡片的序列号(Serial Number)。
序列号存储在卡的Block 0中,共有5个字节,实际有用的为4个字节,另一个字节为序列号的校验字节 。
(3)Select Application 模块:卡片的选择当卡与读写器完成了上述两个步骤,读写器要想对卡进行读/写操作时,必须对卡进行“Select”操作,以使卡真正地被选中。
被选中的卡将卡片上存储在Block 0中的卡容量“Size” 字节传送给读写器。
当读写器收到这一字节后,方可对卡进行进一步的操作,如密码验证等。
(4)Aut h entication & Access Control 模块:认证及存取控制模块完成上述的三个步骤后,读写器对卡进行读/写操作之前,必须对卡上已经设置的密码进行认证,如果匹配,则允许进一步的读/写操作。
MIFARE 1 卡上有16个扇区,每个扇区都可分别设置各自的密码,互不干涉,必须分别加以认证,才能对该扇区进行下一步的操作。
因此每个扇区可独立地应用于一个应用场合,整个卡可以设计成一卡多用(一卡通)的形式来应用。
密码的认证采用了三次相互认证的方法,具有很高的安全性。
如果事先不知卡上的密码,则因密码的变化可以极其复杂,试图靠猜测密码而打开卡上一个扇区的可能性几乎为零。
(5)Control & Arit h metic U nit:控制及算术运算单元这一单元是整个卡的控制中心,是卡的“头脑”。
它主要对卡的各个单元进行操作控制,协调卡的各个步骤;同时它还对各种收/发的数据进行算术运算处理、递增/递减处理和CRC运算处理等,是卡中内建的中央微处理器(MC U)单元。
(6)RAM/R O M 单元RAM主要配合控制及算术运算单元,将运算的结果进行暂时存储,例如将需存储的数据由控制及算术运算单元取出送到EE P R O M存储器中;将需要传送给读写器的数据由控制及算术运算单元取出,经过RF射频接口电路的处理,通过卡片上的天线传送给读写器。
RAM 中的数据在卡失掉电源后(卡片离开读写器天线的有效工作范围)将会丢失。
同时,R O M中则固化了卡运行所需要的必要的程序指令,由控制及算术运算单元取出,对每个单元进行指令控制,使卡能有条不紊地与读写器进行数据通信。
(7)Crypto U nit:数据加密单元该单元完成对数据的加密处理及密码保护。
加密的算法可以为D ES标准算法或其他。
(8)EE P R O M存储器及其接口电路:EE P R O M INTERFACE/EE P R O M MEM O R Y该单元主要用于存储用户数据,在卡失掉电源后(卡片离开读写器天线的有效工作范围)数据仍将被保持。
4、Mifare 1 S50卡存储EEPROMEE P R O MMi f are 1卡内部有1的EE P R O M,分成0~15共16个扇区,每个扇区分成0~3共4块,每块16字节。
1、扇区0的块0是厂商标志字节,保存着只读的卡信息及厂商信息,比如:AF A7 3E 00 36 08 04 00 99 44 30 43 31 34 36 16前面四个字节AF A7 3E 00 36是卡序列号,08是卡容量,04 00是卡类型,后面是厂商自定义的一些信息。
2、每个扇区的块0保存着该块的密钥A密钥B及该块的访问条件,第个扇区都有自己的一套密钥及访问条件,其中,4个字节的访问条件是对每个扇区4个块的读写定义,格式如下:字节9备用默认值为0x69,_b是取反。
分成C10~C13,C20~C23,C30~C33对块0、块1、块2存取控制X(0~2):对块3存取控制:比如块3的16字节如下:00 00 00 00 00 00 FF 0780 69 FF FF FF FF FF FF前面6个字节是密钥A,因为Read永远为Ne v er,所以读到的都是0x00,最后的6字节是密钥B,其值一为0x FF 0x FF 0x FF 0x FF 0x FF 0x FF,中间的4个字节是访问条件,有:C1X[0..2]C2X[0..2]C3X[0..2]0 0 0C1X3 C2X3 C3X30 0 1对应上表,可得出对该扇区块的存取控制条件。
四、读卡器—MFRC522MF RC522 是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员。
是NXP 公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。
MF RC522 利用了先进的调制和解调概念,完全集成了在13.56MHz 下所有类型的被动非接触式通信方式和协议。
支持ISO14443A的多层应用。
其内部发送器部分可驱动读写器天线与ISO 14443A/MIFARE®卡和应答机的通信,无需其它的电路。
接收器部分提供一个坚固而有效的解调和解码电路,用于处理ISO14443A 兼容的应答器信号。
数字部分处理ISO14443A 帧和错误检测(奇偶&CRC)。
此外,它还支持快速CRYPTO1 加密算法,用于验证MIFARE 系列产品。
MFRC522支持MIFARE®更高速的非接触式通信,双向数据传输速率高达424kbit/s。
作为13.56MHz 高集成度读写卡系列芯片家族的新成员,MF RC522与MF RC500 和MF RC530 有不少相似之处,同时也具备诸多特点和差异。
它与主机间的通信采用连线较少的串行通信,且可根据不同的用户需求,选取SPI、I2C 或串行UART(类似RS232)模式之一,有利于减少连线,缩小PCB板体积,降低成本。
1、内部框图(1) MFRC522支持SPI、I2C、UART接口;(2) 64字节发送和接收的FIFO缓存;(3) 4页,每页16个寄存器,共64个寄存器;(4) 具有硬件掉电、软件掉电、发送掉电三种节电模式;(5) 支持ISO/IEC 14443 TypeA和MIFARE®通信协议;2、电路图3、MFRC522支持的三种接口定义如下:模块使用的是SPI接口,与单片机接口如下:4、工作过程对卡的操作分成四步:寻卡→防冲突→选卡→读/写卡;Mifare_One卡片命令MF522命令字MFRC522发送与接收卡数据暂存于FIFO中;(1) 寻卡向FIFO中写入PICC_REQIDL命令,通过PCD_TRANSCEIVE命令将FIFO中数据通过天线发送出去,此时若有卡在天线作用范围内,将识别命令,并返回卡类型;卡类型(TagType):0x4400 = Mifare_UltraLight0x0400 = Mifare_One(S50)0x0200 = Mifare_One(S70)0x0800 = Mifare_Pro(X)0x4403 = Mifare_DESFire关于下面两条命令的区别:第一条命令读取完卡后还会再次读取;第二条命令读取完卡后会等待卡离开开线作用范围,直到再次进入。
(2) 防冲突向FIFO中写入PICC_ANTICOLL+0x20,通过PCD_TRANSCEIVE命令将FIFO中数据通过天线发送出去,卡返回卡序列号(共5字节,第5字节是卡序列号校验码);由于是非接触式的,同一时间天线作用范围内可能不只一张卡时,即有多于一张的MIFARE 1卡发回了卡序列号应答,则发生了冲突。
此时,由于每张卡的卡序列号各不相同,MCM接收到的信息(即卡序列号)至少有1位既是0又是1(即该位的前、后半部都有副载波调制),MCM找到第1个冲突位将其置1(排除该位为0的卡),然后查第2个,依次排除,最后不再有冲突的SN即为被选中的卡。
(3) 选卡向FIFO中写入PICC_SElECTTAG+0x70+卡序列号,通过PCD_TRANSCEIVE命令将FIFO 中数据通过天线发送出去,卡返回卡容量(对于MIFARE 1卡来说,可能为88H或08H);(4) 对卡EEPROM读写之前要进行认证status = MFRC522_Auth(PICC_AUTHENT1A, blockAddr, sectorKeyA[blockAddr/4], serNum); //认证向FIFO中写入PICC_AUTHENT1A/PICC_AUTHENT1B+块地址+扇区密码+卡序列号,通过PCD_TRANSCEIVE命令将FIFO中数据通过天线发送出去,MIFARE 1 卡的密码认证方式:三次相互认证的令牌原理框图(A) 环:由MIFARE 1卡片向读写器发送一个随机数据RB。