PHILIPS MFRC500非接触式IC卡读写模块的应用开发
关键词:IC卡;非接触式;嵌入式MF1卡RC500
引言
近几年来,随着IC卡中非接触式射频卡的高度安全保密性、使用简单等特点,使之在各领域的应用中异军突起,成为当今IC智能卡中的流行宠物,应用前景十分广阔。我们在深入了解了PHILIPS公司的MF1ICS50非接触式IC卡和读卡设备的核心模块MFRC500的工作原理后,开发出了MF1卡读写模块。本读写模块能完成对MF1卡所有读写及控制操作,并且还可以方便的嵌入到其他系统(如:考勤,门禁)中,受控于主控模块,成为用户系统的一部分。用户利用本模块可以方便的构成自己的智能卡应用产品。
内部结构及工作原理
MF1卡系统的核心是PHILIPS公司的MIFARE1ICS50系列晶片,该技术已定为国际标准:ISO/IEC14443TYPEA。目前许多较大的IC卡卡片制造商均以MIFARE技术为标准。
MF1卡中包含一块ASIC微晶片和一个高频天线,其基本工作原理是:读写器中的MIFARE基站向MIFARE卡发一组固定频率(13.56MHz)的电磁波,卡片内有一个LC串联谐振电路,其频率与基站发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,使卡片内具有电荷,当所积累的电荷达到2V时,卡片中芯片将卡内数据发射出去或接收基站对卡片的操作。
MF1的框图如图1,整个卡片包含了两个部分,RF射频接口电路和数字电路部分。
图1 MF11CS50的组成框图(略)
RF射频接口电路
在RF射频接口电路中,主要包括有波形转换模块。它可将卡片读写器上的13.56MHz的无线电调制频率接收,一方面送调制/解调模块,另一方面进行波形转换,将正弦波转换为方波,然后对其整流滤波,由电压调节模块对电压进行进一步的处理,包括稳压等,最终将输出电压供给卡片上的各电路。
在数字电路部分模块中
ATR模块
当一张MF1卡片处在卡片读写器的天线工作范围之内时,程序员控制读写器向卡片发出RequestAll(或RequestStd)命令后,卡片的ATR将启动,将卡片Block0中的卡片类型(TagType)号,共2个字节传送给读写器,建立卡片与读写器的第一步通信联络。如果不进行第一步的ATR工作,读写器对卡片的其他操作(Read/Write等)将不会进行。卡片的类型(TagType)号共2个字节,可能为:0004H。
AntiCollision模块
如果有多张MF1卡片处在卡片读写器天线的工作范围之内,AntiCollision模块的防重叠功能将启动工作。在程序员控制下的卡片读写器将会首先与每一张卡片进行通信,取得每一张卡片的序列号。卡片读写器中的AntiCollision防重叠功能配合卡片上的防重叠功能模块,由程序员来控制读写器,根据卡片的序列号来选定一张卡片。被选中的卡片将直接与读写器进行数据交换,未被选择的卡片处于等待状态,随时准备与卡片读写器进行通信。AntiCollision模块(防重叠功能)启动工作时,卡片读写器将得到卡片的序列号。序列号存储在卡片的Block0中,共有5个字节,实际有用的为4个字节,另一个字节为序列号的校验字节。序列号中实际有用的4个字节,可能为:773B72A9。
Select Application 模块
当卡片与读写器完成了上述的二个步骤,程序员控制的读写器要想对卡片进行读写操作,必须对卡片进行"Select"操作,使卡片真正地被选中。被选中的卡片将卡片上存储在Block0中的卡片容量"Size"字节传送给读写器。当读写器收到这一字节后,即可对卡片进行深一步的操作。例如,可以进行密码验证等。读写器收到的"Size"字节可能为:88H。
认证及存取控制模块
经过上述三个步骤,确认已经选择了一张卡片时,程序员对卡片进行读写操作之前,必须对卡片上已经设置的密码进行三级认证,如果匹配,则允许进一步的Read/Write操作。MF1卡片上有16个扇区,每个扇区都可分别设置各自的密码,互不干涉。因此每个扇区可独立地应用于一个应用场合。整个卡片可以设计成"一卡通"形式来应用。
控制及算术运算单元
这一单元是整个卡片的控制中心,是卡片的"头脑"。它主要进行对整个卡片的各个单位进行微操作控制,协调卡片的各个步骤;同时它还对各种收/发的数据进行算术运算处理,递增/递减处理,CRC运算处理等,是卡片中内建的中央微处理机(MCU)单元。
数据加密单元
该单元完成对数据的加密处理及密码保护。
存储器及其接口电路
该单元主要用于存储数据,EEPROM中的数据在卡片失掉电源后(卡片离开读写器天线的有效工作范围内)仍将保持,用户所要存储的数据存放在该单元中。MF1卡片中的这一单元容量为8196bit(1Kbyte),分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63)。第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。
每个扇区的块0、块1、块2为数据块,可用于存贮数据。每个扇区的块3为控制块,包括了密码A、存取控制、密码B。具体结构如下:
每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。
存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的。三个控制位以正和反两种形式存储于存取控制字节中,决定了该块的访问权限(如:进行减值操作必须验证KEYA,进行加值操作必须验证KEYB,等等)。
读写模块的结构及工作原理
模块的核心部份包括一个控制用微处理器和一个MIFARE基站芯片。它能独立完成对MIFARE卡的所有操作,还具有与用户主系统的串行通信能力,可根据用户系统的命令完成对MIFARE卡的读写操作,并将所得数据返回给用户系统。这个用户系统可以是一个主控板或PC机。
模块硬件主要由中央微处理器(89C52)、MIFARE基站芯片、高频电路、模块天线、RS232通信电路、复位电路、LED状态显示和喇叭驱动电路等组成。
写模块的核心是PHILIPS公司生产的读写卡专用芯片MFRC500。RC500符合ISO14443A,外接天线后读卡距离可达到10cm。RC500与CPU接口非常简单,上电或复位后能自动监测与CPU的接口方式,我们采用地址数据总线复用方式。具体见原理图4。
图3 硬件结构框(略)
图4 CPU与RC500接口电路原理图(略)
RC500内部有8个寄存器页,每页有8个寄存器,每个寄存器有8位数据。这些寄存器可统一编址(在我们的系统中为0x00--0x3F),CPU将这些寄存器作为外部RAM进行操作。例如,CPU需要让RC500执行某个命令(如:Transmit)时,把此命令的代码(0x1a)写入Command寄存器可以了。
RC500与卡片的通信是通过天线发送一些指令代码来完成,并且要按照特定的通讯流程,具体的通信流程如下图:
CPU对卡片的操作不是简单的一条指令所能完成的,其中必须有对RC500硬件内部寄存器的设置。例如对卡片进行读(READ)操作,程序员必须对RC500内部的BitPhase、Rxthreshold、TimerControl、InterruptEn、InterruptRq等寄存器进行配置,还要读PrimaryStatus、SecondaryStatus等寄存器的状态,对最终读得的数据还必须进行校验。一般的操作步骤如下:寄存器初始化,把要发送的数据(如:Read=0x30)放到RC500内部的FIFO(先入先出)寄存器中,然后把命令代码(如;Transceive=0x1e)写到Command寄存器。RC500便会执行命令,按照特定格式把数据发出去,然后等待卡片返回的数据(也放到FIFO中),CPU从FIFO中读走数据,完成操作。
在读写模块主程序中,标准配置以RS232方式与主控模块进行通信。一条指令包括命令码、命令块长度、命令块、异或校验几部分。主程序运行时循环等待主控模块的指令,有指令收到,便跳出循环执行该指令。这样即使用户不清楚MFRC500和MF1卡的工作原理,也可将读写模块方便的嵌入到自己的系统中。
图5 RC500与MF1卡的通信流程图(略)
此外,我们还根据用户需要有ABA,WIG26等其它串行输出方式。
读写模块应用实例
该读写模块已经成功的应用到山东浪潮瀚海电子公司开发的考勤、门禁、售饭等系统中。与磁卡、只读射频卡(EM卡)组成的系统相比,系统性能大大改善,并且为"一卡通"的实现提供了必备条件。图6为一个典型的网络门禁控制系统。
图6 MF1卡读写模块在门禁系统的应用(略)
结束语
IC卡以其高度的信息集成及安全性已经融入当今信息技术的主流,越来越受到人们的青睐。本文介绍了PHILIPS公司的MFICS50非接触式IC卡的内部结构和工作原理,以及基于MFRC500的嵌入式读写模块的软硬件设计。此读写模块的使用使复杂的IC卡技术变得非常简单,对非接触式智能卡的推广有重要意义。