Mifare1系列射频卡读卡器的开发
文章出处:http://www.singbon.com 作者:刘志平 赵国良 人气: 发表时间:2011年10月23日
近几年来,由于非接触式IC智能射频卡的高度安全保密性,使之在IC智能卡领域中异军突起,成为当今IC智能卡中的流行宠物,应用前景十分广阔.非接触式智能卡读写系统是射频技术中的重要组成部分,其实现原理为:由读写器向Mifare1卡,也就是射频卡发射特定频率的无线电磁波,当射频卡靠近读写器时,受读写器发射的电磁波激励,卡片内的IC谐振电路产生共振并且接收电磁波能量.当射频卡接收到足够的能量时,就将卡内存储的识别资料以及其他数据以无线电波的方式传输到读写器
并且接受读写器对卡内数据的进一步操作。文中提出了一种Mifare1射频卡读卡器系统的设计,此系统是针对煤矿考勤而研制,目前已投人使用.该系统采用AT89S52单片机实现对射频芯片MF RC500的控制,完成对Mifare1卡卡号的读取以及数据的无线交换.下面首先给出系统的总体结构以及工作原理,然后从硬件和软件设计2个方面对系统进行详细讨论和说明.
1 系统总体结构及工作原理
该读卡器由AT89S52单片机、MF RC500芯片和外围电路组成,与Mifare1卡的数据交换都是通过2者之间的射频场来完成.系统结构如图1所示.
系统的工作原理主要是由AT89S52对MF RC500进行控制与通信,MF RC500驱动外同电路对Mifare1卡进行读写操作.具体说来,AT89S52通过串行口接收PC机的指令,完成对卡的操作和整个读写器的管理.MF RCS00负责信号的编码、解码,信号的调制、解调;匹配电路建立读写器同射频卡之间的联系,此部分的设计直接影响到射频功率的大小以及系统的抗干扰能力;Mifare1卡是系统的应用终端.接收读写器的指令并返回指令执行结果。
图1 Mifarel系列射频卡读卡器系统总体框图
2 系统硬件设计
硬件主要包括单片机、MF RC500、匹配电路及天线设计等外围电路.下面给出各部分的详细说明及相关设计.
2.1 单片机
系统中选用低成本、高性能的CMOS 8位单片机AT8 9 S5 2.片内含8 k BytesISP的可反复擦写1 000次的Flash只渎程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS一51指令系统及80C51引脚结构.芯片内集成
了通用8位中央处理器,同时片内带有防死锁的Watchdog,以确保系统稳定运行.
2.2 MF RC500芯片
Philips公司的MF RC500芯片是应用于13.56 MHZ非接触式通信的高集成读卡IC系列中的一员.该读卡IC系列利用先进的调制和解调概念,完全集成了在13.56 MHz下所有类型的被动非接触式通信方式和协议.MF RC500支持ISO14443A所有的层,内部的发送器部分不需要增加有源电路就能够直接驱动近操作距离的天线(可达100 mm);接收器部分提供一个坚固而有效的解调和解码电路,用于ISO14443兼容的应答器信号;数字部分处理:ISO14443A帧和错误检测(奇偶&CRC).此外,它还支持快速CRYPTO!加密算法,用于验证Mifare1系列产品,方便的并行接口可直接连接到任何8位微处理器,给阅读器的设计提供了极大的灵活性.MF RC500可方便地用于各种基于ISO/IEC 14443A标准并且要求低成本、小尺寸、高性能以及单电源的非接触式通信的应用场合。
MF RC500的内部EEPROM分为4部分,分别用于保存产品有关信息、存放寄存器初始化启动文件以及存放加密运算的密钥等.8×64位的FIFO用于缓存微控制器与芯片之问的输人输出数据流,可处理数据流长度达64 Byte.
2.3 匹配电路及天线设计
有2个不同的概念可以设计一个天线和一个匹配电路:一种是直接匹配的天线,读卡器和天线的最小距离可以建立一个小型的完整终端;另一种是50 Ω匹配的天线,可以作为读卡器和天线之间用长距离同轴电缆连接应用的一个简单解决方案,连接读卡器匹配电路和天线的同轴电缆最长距离可达10 m.在本系统中,采用的是直接匹配的天线.
直接匹配的天线的理论工作距离可达100m,工作距离主要由天线的大小以及天线匹配电路的修正值决定,需要的部件有EMC滤波器、接收电路和天线本身的匹配等.图2是本系统使用的直接匹配天线电路.
图2 直接匹配天线电路配置
2.3.1 EMC电路
MIFARE系统的工作频率是13.56 MHz,这个频率要用一个石英振荡器发生,但它同时也产生高次谐波.为了符合国际EMC规定13.56 MHz中的3次、5次和高次谐波要被良好地抑制,除了多层设计外,还需要加低通滤波器.低通滤波器由元件L0和C0成.一般选取L0为1 μH,C0为68 μF。
2.3.2 接收电路
MF RC500的内部接收部分使用了一个新的接收概念,它使用卡响应的副载波负载调制所产生的2个边频带,建议使用内部产生的VMID电势作为RX管脚的输人电势.为了减少干扰,在VMID管脚连接一个电容到地.读卡器的接收部分需要在RX 和VMID引脚之间连接一个分压器.另外建议在天
3 系统软件设计
由于本系统应用在煤矿考勤中,所以软件部分主要包括对矿工所持Mifare1卡卡号的读取以及把当天下井时长存入卡片中.读取卡号在防碰撞操作中完成,时间存人在写卡操作过程中完成.具体工作流程如图3所示。
图3 系统软件流程
图3实际上是对一张Mifare1卡的完整操作过程,主要包括复位请求、防碰撞、选卡、密码验证、写卡等操作.其执行顺序必须依次进行,不能颠倒.下面结合实际开发经验,详细介绍对Mifare1卡的每一步操作.
3.1 复位请求
当一张Mifarel卡处在读写器天线的1二作范围之内时,读写器向卡发出REQUEST all命令.卡的ATR将启动,实现复位请求.请求成功,则将卡Block 0中的卡类型(TagType)号共2个字节传送给读写器,建立卡片与读写器的第一步通信联络.如果不进行复位请求操作,读写器对卡的其他操作将不会进行.具体操作程序为:
3.2 防碰撞
如果有多张Mifare1卡处在读写器天线的工作范围之内时,读写器首先与每一张卡进行通信,取得每一张卡的ID号.由于每一张Mifarel卡都具有惟一的ID号,因此读写器根据卡的ID号来保证一次只对一张卡操作,操作成功后将返回卡的ID号.具体操作程序为:
3.3 选择卡
完成上面2个步骤后,就可以对某张卡进行选择操作,这时其他卡将不响应而进入空闲状态.如果通信成功,被选择的卡将返回其容量大小.具体操作程序为:
3.4 密码验证
一张Mifare1只有通过密码验证后才能对其EEPROM中的数据进行读写操作.为此,用户必须事先将密码编程到MF RC500的非易失性密匙存储器中,RC500将与卡片各个扇区中的密码A或密码B验证,成功后方能进行下一步操作.所以用户必须妥善保管卡片中的密码,一旦丢失,将无法对卡片进行任何操作,此卡报废.具体操作程序为:
M500 HostCodeKey (KeyUncode,KeyCode);6字节密码转换成12字节
status= M500PiccAuthKey(PICC_AUTHENT1A,CardSnr,KeyCode,4)/block4密码4验证if(status! =0)//失败
return ;
3.5 写卡
经过密码证实后,就可以对卡中各扇区的数据进行读、写、增值和减值等操作.下面举例说明如何把矿工下井时长写入到数据块中.
char value[16];
PrepareValue(0,value);//将初始下井时长0 h格式化到value数组中
M500PiccWrite(4,value);//存value到Block4数据块中
PrepareValue(TimeData,value);//将当天下井时长
TiineData格式化到value数组中
M500PiccValue(PICC—INCREMENT,4,value,4);//Block4中数据每次做加TiineData操作
4 结束语
介绍了Mifare1系列射频卡的读卡器开发,并结合到实际应用中.经实践证明,本系统运行稳定,操作方便,能对有效范围内的多张卡准确无误地读写,读写距离可达7 cm,目前在煤矿考勤中发挥着重要作用.
作者简介:刘志平(1983-- 男,硕士研究生,主要研究方向:计算机控制、应用技术
原文下载地址:http://www.yktchina.com/BBS/disptopic.asp?boardid=4&topicid=3796&frompage=1