系统设计
系统框图如图1所示,系统由MCU、键盘、EEPROM、FMl702SL、液晶屏、485通信模块组成。MCu控制FMl702对Mifare卡进行读写操作,再根据得到的相应数据对液晶屏、EEPROM进行相应的操作。MCU 与PC机通过485,总线通信,即使PC机与MCU之间通信发生异常,MCU也可以独立工作,在与PC机通信恢复之后,MCU可以将备份在EEPROM中的信息再传给PC机。
P8912C931是一款单片封装的微控制器。P89LPC931采用了高性能的处理器结构,指令执行时间只需2~4个时钟周期。 P89LPC931集成了许多系统级的功能,这样可大大减少元件的数目和电路板面积,并降低系统的成本。EEPROM用的是FM24C64L,它是一款以 I2C为操作方式的存储芯片。液晶驱动芯片是PCF8576,也是以I2C为操作方式。整个系统用12V电源供电,再由稳压芯片2576稳压成3.6V。
工作原理
Mifare卡包含一片容量为8K位EEPROM,为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位,每个扇区有独立的一组密码及访问控制。每张卡有唯一序列号,为32位。无电源,自带高频天线,内含加密控制逻辑和通讯逻辑电路。
信息存储在Mifare卡里,读写器与Mifare卡通过各自的天线建立起二者之间非接触信息传输通道。当Mifare卡进人系统的工作区域时,读写器向Mifare卡发一组固定频率的电磁波,Mifare卡内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,Lc谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或读取读写器的数据。通过调整天线驱动电压可以改变通信的最长距离。
FMl702SL与MCU的接口电路
电路如图2所示,MCU与FMl702SL是通过SPI总线通信的,采用中断工作模式。需要注意的是在FMl702SL复位后,必须进行一次初始化程序以便初始化SPI接口模式,而且可以同步MCU和FMl702SL的启动工作。
读写器天线的设计
根据互感原理可知,半径越大、匝数越多,读写器上的天线和卡上的天线的互感系数就越大。根据国际标准的要求,卡和读写器的通信距离为10cm。天线可等效成R、L、c并联回路,示意图如图3所示,图3中,L为天线的自感,R为天线的等效电阻,C为天线的分布电容。图4为天线的PCB图。
设计天线时还要注意天线的品质因数。国际标准ISOl4443规定无论TYPEA或TYPEB非接触式IC卡,读写器和卡之间的数据传输速度为 106kbit/s,载波的频率f0=13.56MHz,因此,每一位的数据维持的时间tO=106/104k=9.44μs,TypeA类射频卡智能卡读写器到射频卡的信号编码是修正米勒编码,传送每一位数具有t=3μs的载波中断,因此,该信号的带宽近似为 B="lT"=1/3μs=333.333kHz,故天线的品质因数Q= fO/B=13.56 MHz33.333kHz=35,天线的传输带宽与品质因数成反比关系。因此,过高的品质因数会导致带宽缩小,从而减弱读写器的调制边带,会导致读写器无法与卡通信。
读写器对卡的操作流程
FMl702SL内部有8个寄存器页,每页有8个寄存器,每个寄存器有8位数据。这些寄存器是统一编址的,从Ox00~0x3F,MCU通过SPI 接口与 FMl702SL通信对这些寄存器进行设置。例如,MCU需要让FMl702SL执行某个命令(Transceive)时,把此命令的代码(1E)写入 Command寄存器就可以了。
必须注意的是,MCU对卡片的操作不是简单的一条指令所能完成的,其中必须有对FMl702SL硬件内部寄存器的设置。操作步骤如图5所示。
(1)复位初始化FMr702SL:初始化FMl702SL的SPI接口,初始化FMl702SL定时器,设置定时器控制寄存器,打开Txl、TX2。
(2)Request(请求):当一张Mifare卡片处在卡片读写器的天线的工作范围之内时,程序员控制读写器向卡片发出R:EQUEsT all(或REQUEsT std)命令。卡片的ATR将启动,将卡片BLOCkO中的卡片类型(TagType)号共2个字节传送给读写器,建立卡片与读写器的第一步通信联络。如果不进行复位请求操作,读写器对卡片的其它操作将不会进行。
(3)AnTIeollision LOOp(防冲突机制):如果有多张Mifare卡片处在卡片读写器的天线的工作范围之内时,读写器将首先与每一张卡片进行通信,取得每一张卡片的系列号。由于每一张Mifare卡片都具有其唯一的序列号,决不会相同,因此读写器根据卡片的序列号来保证一次只对一张卡操作。该操作读写器得到卡的返回值为卡的序列号。
(4)Select Tag(选择卡片):完成了上述二个步骤之后,读写器必须对卡片进行选择操作。执行操作后,返回卡上的SIZE字节。
(5)AuthenTIcaTIon(三次相互验证):经过上述三个步骤,在确认已经选择了一张卡片时,读写器在对卡进行读写操作之前,一必须对卡片上已经设置的密码进行认证。如果匹配,才允许进一步的读写操作。
(6)读写操作:对卡的最后操作是读、写、增值、减值、存储和传送等操作。