作者:黎洪生 文浩 舒怀
引言
IC智能卡中的接触式卡以及非接触式IC智能射频卡的高度安全保密性。使之在IC卡领域异军突起。特别是在公共交通行业的电子车票、卫生医药中的医疗保险、停车场等封闭式场所管理、身份识别、智能大厦中的电子巡更保安系统等领域中应用前景尤为广阔[1]。
目前国际上非接触式IC智能射频卡中的主流技术是Philips公司的MIFARE技术.已经被制定为国际标准一IS014443 TYPEA标准。本模块采用的国产非接触卡读卡机专用芯片FM1702,正是基于此国际标准。该模块具有体积小、易于嵌入到应用系统中使用的特点。
1 FM1702SL简介
FM1702SL是复旦微电子股份有限公司基于IS014443标准设计的非接触卡读卡机专用芯片,该芯片采用的是0.6微米CMOS EEPROM工艺制造.可支持ISOl4443 typeA协议和MIFARE标准的加密算法。芯片内部集成了模拟调制解调电路。因而只需搭接最少量的外围电路就可以工作。FM1702SL芯片支持SPI接口,其数字电路具有TTL、CMOS两种电压工作模式。特别适用于ISO14443标准下的水、电、煤气表等计费系统的读卡器的应用。该芯片的三路电源都适用于低电压。
2 非接触读写系统组成
该系统主要由MCU、FM1702SL、RS232/I2C通信模块、ISP在线调试接口和天线组成。系统组成框图如图1所示。用户只需简单地通过选定的UART或IIC接口发送命令就可以对卡片进行操作,MCU根据接收到的命令来控制FM1702SL,并由FM1702SL驱动天线对MiFare卡进行读写操作。
系统MCU采用Philips增强型单片机LPC931,其可以通过ISP在线调试,且运行稳定。射频非接触式IC卡读写模块同时支持IIC和UART通讯接口。通过对模块的引脚设置电平可确定模块的通讯端口是IIC还是UART。
3 天线设计[2]
系统数据存储在无源Mifare卡中。读写模块的主要任务是将能量传输给Mifare卡。并与之建立通信。天线是非接触式IC卡读写模块的一个重要组成部分,在读写模块和非接触式IC卡通信过程中,天线用于产生能发射和接收射频信号的磁通量.而磁通量用于向卡提供电源并在读写模块和卡片之间传送信息。因此,在设计中要求天线线圈的电流最大,以用于产生最大的磁通量,并要确保有足够的带宽。读写模块的性能与天线的参数有着直接的关系。在对天线的性能进行优化之后。读写模块的读卡距离可以达到10 cm。
由于FM1702SL的频率是13.56 MHz.属于短波段,因此可以采用小环天线。小环天线有方型、圆形、椭圆型、三角型等,本系统采用的是矩型天线。天线的最大几何尺寸同工作波长之间没有一个严格的界限。一般定义为:
L/λ≤1/(2π) (1)
式中,L是天线的最大尺寸,λ是工作波长。对于13.6 MHz的系统来说,天线的最大尺寸在50cm左右。
在天线设计中,品质因数Q是一个非常重要的参数。对于电感耦合式射频识别系统的读写器天线来说。较高的品质因数值会使天线线圈中的电流强度也较大,由此可改善对卡的传送功率。品质因数的计算公式为:
式中,f0是工作频率,Lcoil是天线的尺寸,Rcoil是天线的半径。
通过品质因数可以很容易地计算出天线的带宽:
B=f0/Q (3)
从式中可以看出,天线的传输带宽与品质因数成反比关系。因此。过高的品质因数会导致带宽缩小,从而减弱读写器的调制边带,导致无法与卡通信。一般系统的最佳品质因数为10-30,最大不能超过60。
4 硬件电路
图2为FM1702SL与MCU的主要部分的接口电路。系统通过接收上位机的数据,并根据接收到的相关命令进行工作。另外。也可设定为自动寻卡方式,而无需上位机频繁发送寻卡指令,即当卡片进入到天线区后在ICC引脚上出现低电平告知上位机,上位机则通过寻卡指令直接读取卡片序列号。
5 软件设计[3]
读写器软件编程是采用标准C语言程序来实现对非接触式IC卡的一系列操作。主要有:LPC931单片机初始化、FM1702SL初始化、接收命令数据处理、IC卡读写、防冲突、密码验证以及对卡片block(数据块)操作程序等。
读写卡过程是一个较复杂的程序执行过程,其软件流程图如图3所示,读写卡过程需要执行一系列的操作指令,并需调用多个C51函数。如果采用自动寻卡方式,MCU需要每隔0.5秒自动寻卡一次,如果寻到卡,则ICC置1。
5.1 请求操作
当一张Mifare卡片处在读写模块天线的工作范围之内时.上位机通过发送命令来控制读写模块向卡片发出REQUEST all(或REQUEST std)命令。卡片的ATR将启动,并将卡片BlockO中的卡片类型(TagType)号(共2个字节)传送给读写模块。以建立卡片与读写模块的第一步通信联络。如果请求卡操作不成功,读写模块对卡片的其它操作将不会进行。
5.2 防冲突操作
如果有多张Mifare卡片处在卡片读写模块天线的工作范围之内时,读写模块将首先与每一张卡片进行通信。以取得每一张卡片的序列号。由于每一张Mifare卡片都有其唯一的序列号,因此读写模块可根据卡片的序列号来保证一次只对一张卡操作。该操作得到的卡的返回值即为卡的序列号。
5.3 卡选择操作
完成了上述二个步骤之后,读卡模块必须对卡片进行选择操作。执行操作后,返回卡上的卡片序列号(UID)。
5.4 认证操作
经过上述三个步骤,在确认已经选择了一张卡片时。卡片读写模块在对卡进行读写操作之前。必须对卡片上已经设置的密码进行认证,如果匹配,才允许进一步的读写操作。
5.5 读写操作
对卡的最后操作包括卡片初始化卡值、读卡、写卡、增值、减值、存储等。
6 结束语
本文主要介绍了一种基于FM1702SL的射频识别读写模块的设计方法。此模块只需要上位机通过选定的UART或IIC接口来发送命令就可以完成对卡片的操作。经实际应用证明,该读写模块具有电路稳定、易嵌入到其他模块使用、功耗低等良好性能。能方便应用于各种不同的射频识别应用系统.如考勤系统、门禁系统、公交车收费系统.以及各种水、电、气表计费系统等,有十分广阔的应用前景。