近几年来.IC卡中非接触式射频卡的高度安全保密性和使用简单等特点,使之在各领域的应用中异军突起,成为当今IC智能卡中的流行宠物,应用前景十分广阔。与传统的接触式IC卡、磁卡相比,利用射频识别技术(radio fequncy identification)开发的非接触式IC识别器,无论在系统寿命、防监听、防解密等性能上都具有很大的优势。为此,本文给出了利用AT89C52、MFRC500、Mifare卡来构建非接触式IC读写器,并在该读写器基础上开发适用各方面自动识别系统
1 MF RC500的主要特性
MF RC500是应用于13.56 MHz非接触式通信中高集成读卡器IC系列中的一员。该读卡IC利用先进的调制和解调概念.完全集成了13.56 MHz下所有类型的被动非接触式通信方式和协议。MF RC500能够支持ISO14443A所有的层,其内部的发送器部分不需要增加有源电路就能够直接驱动近操作距离的天线(可达100 mm);MFRC500的接收器部分提供有一个坚固而有效的解调和解码电路,可用于IS014443兼容的应答器信号;数字部分则用于处理ISO1443A帧和错误检测(奇偶&CRC)。此外,它还支持快速CRYPTO1加密算法,以用于验证Mifare系列产品。其方便的并行接口可直接连接到任何8位微处理器上,这样就给读卡器/终端的设计提供了极大的灵活性。
MF RC500的主要特点如下:
带有高集成度模拟电路以用于卡应答的解调和解码;
缓冲输出驱动器可使用最少数目的外部元件以连接到天线;
近距离操作(可达100 mm); .
有用于连接13.56 MHz石英晶体的快速内部振荡器缓冲区;
带低功耗的硬件复位功能;
并行微处理器接口带有内部地址锁存和IRQ线;
有易用的发送和接收FIFO缓冲区;
支持MIFARE Clasic;
支持MIRFARE有源天线;
适合高安全性的终端。
MF RC500采用SO32封装的管脚配置如图1所示。
2 IC卡系统组成
图2所示是基于MF RC500的非接触式IC卡读写器的系统结构框图。该系统主要由MCU、MFRC500、看门狗以及232通信模块组成。系统的工作方式是先由MCU控制MF RC500驱动天线对Mifare卡(也就是应答器PICC)进行读写操作。然后,根据所得的数据对其它接口器件进行响应操作。最后,与PC机之间进行通信,并把数据传给上位机。
系统MCU选用AT89C52主要是因为AT89C52开发简单,运行稳定。为了防止系统“死机”,系统中使用X5045作为看门狗。由于此系统的通讯距离要求不是太远,故采用RS232通讯模块与PC机进行通讯。
3 天线的设计
由于MF RC500的频率是13.56 MHz,属于短波段,因此可以采用小环天线。小环天线有方形、圆形、椭圆形、三角形等,本系统采用方形设计。其天线示意图如图3所示。
该天线的最大几何尺寸同工作波长之间没有一个严格的界限。对于13.6 MHz的系统来说,天线的最大尺寸在50 cm左右。
在天线设计中,品质因数Q是一个非常重要的参数。对于电感耦合式射频识别系统的PCD天线来说,较高品质因数会使天线线圈中的电流强度大些,由此可改善对PICC的功率传送。若以f0表示工作频率,那么通过品质因数就可以很容易计算出天线的带宽:
B=f0/Q (1)
从式(1)中可以看出,天线的传输带宽与品质因数成反比。因此,过高的品质因数会导致带宽缩小。从而减弱PCD的调制边带.这样可能导致PCD无法与卡通信。因此,一般系统的最佳品质因数应为10-30,最大不能超过60。
4 MF RC500与AT89S52的接口电路
图4为MFRC500与AT89S52的接口电路,图5为AT89S52与RS232接口电路。
5 对Mifare卡的操作流程
整个系统的工作由对Mifare卡操作和系统后台处理两大部分组成。本文只介绍对Mifare卡的操作流程。Mifare卡的操作可以分为以下几项:
1)复位请求
当一张Mifare卡片处在卡读写器的天线工作范围之内时,程序员控制读写器向卡片发出REQUEST all(或REQUEST std)命令。此时卡片的ATR将启动,并将卡片Block 0中的卡片类型(TagType)号共2个字节传送给读写器,从而建立卡片与读写器的第一步通信联络。
如果不进行该位请求操作,读写器对卡片的其它操作将不能进行。
2)反碰撞操作
如果有多张Mifare卡片处在卡片读写器的天线工作范围之内,PCD将首先与每一张卡片进行通信,以取得每一张卡片的系列号。由于每一张Mifare卡片都具有其唯一的序列号而决不会相同,因此.PCD根据卡片的序列号来保证一次只对一张卡进行操作。该操作将使PCD得到PICC的返回值作为卡的序列号。
3)卡选择操作
完成了上述二个步骤之后,PCD必须对卡片进行选择操作。执行该操作后,将返回卡上的SIZE字节。
4)认证操作
经过前面叙述的三个步骤以后,便可以在确认已经选择了一张卡片时,在PCD对卡进行读写操作之前,使系统对该卡片上已经设置的密码进行认证。如果该认证匹配,便可允许进一步的读写操作。
5)读写操作
对卡的最后操作即是读、写、增值、减值、存储和传送等操作。
6 读卡程序
根据上面的流程,便可采用基于Keil C的C语言进行编程,程序如下:
char M500Reset(void)
{char status;
RC500RST=0;//RC500在RSTPD脚由高变低的时候复位
delay_1ms(25);//注意延时的长度,本系统的晶振频率是11.0592MHz
RC500RST=1;
delay_50us(200);
RC500RST=0;
delay_50us(50);
.return status;
}
char M500Config(void) //对RC500的寄存器进行初始化
char M500PiccCommonRequest(unsigned char
req_code,unsigned char *atq)
RC500发送请求时,req_code是请求模式,一共有request all和Request std两种模式。Requestall指令是非连续性读卡指令,只读一次。但有一个例外.即当某一次Request all指令读卡失败时,如卡片没能通过密码认证或其它原因而出错时,Request all指令将连续地读卡,直到读卡成功才进入非连续性的读卡模式。Request std指令的使用和Request all指令刚巧相反。Request std指令是连续性的读卡指令。当某一张卡片在MCM天线的有效工作范围(距离)内时,Request std指令在成功地读取这一张卡片之后.将进入MCM对卡片的其它操作。如果其它操作完成,程序员又将MCM进入Request std指令操作,那么,Request std指令将连续地再次进行读卡操作,而不管这些片卡是否被拿走。只要有一张卡片进入MCM之天线有效工作范围(范围)内。Request std指令将始终连续地再次进行读卡操作。对于Mifare卡,该函数反回值为0004H。其程序如下:
char M500PiccCascAnticoll(unsigned char bcnt,unsigned char *snr)//反碰撞函数,得到一张卡的序列号存入snr中
char M500PiccCascSelect(unsigned char *snr,unsigned char *sak)∥选中snr指定的卡,对于Mifare卡返回值为0008H,值存人sak中
char M500PiccAuthKey(unsigned char auth_mode,unsigned char *snr,unsigned char *keys,unsigned char block)
这是三轮认证函数,整个过程是先将所要访问的区密码加密(如区0的初始密码为6个FFH),再将加密后的密码通过Loadkey存入MF RC500的Key缓存中,接着进行认证。
Char M500PiccRead(unsigned char addr,unsignedchar *_data)//最后读卡。读到的数据存入_data中。
7 结束语
IC卡以其高度的信息集成及安全性已经融入当今信息技术的主流。并越来越受到人们的青睐。本文介绍了PHILIPS公司的MFICS50非接触式IC卡的内部结构和工作原理,给出了基于MFRC500的嵌入式读写模块的软硬件设计方法。此读写模块的使用使复杂的IC卡技术变得非常简单.因而对非接触式智能卡的推广具有重要意义。目前,该系统已可用于考勤、门禁、售饭等多种系统中。与磁卡、只读射频卡(EM卡)组成的系统相比,该系统的性能大大改善,并且为“一卡通”的实现提供了必备条件。