基于射频卡的多用户识别单元软件设计.doc
《基于射频卡的多用户识别单元软件设计.doc》由会员分享,可在线阅读,更多相关《基于射频卡的多用户识别单元软件设计.doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于射频卡的多用户识别单元软件设计基于射频卡的多用户识别单元软件设计 摘 要本软件设计能够实现对非接触式IC卡进行读写的基础上进行多用户的识别。针对系统硬件设计,整个系统的软件设计主要包括主程序的设计、读卡器应用程序的设计、单片机控制电路的应用程序设计三个部分,每一部分都给出了具体程序并对程序进行了详细的说明。关键词IC卡;非接触;射频识别;读卡器 Software Design of Multi-user Identification Unit Based on the RF ICElectronic Information Engineering Major SHEN ZhenAbstra
2、ct: The software system is designed to implement to multi-user identification based on reading and writing of the contactless IC card. For the hardware design system,the entire software design system includes programing of main program、programing of IC card reader and programming of MCU circuit .All
3、 these programs are presented and remarked.Key words: IC Card;Contactless;RFID;Card Reader目 录1 引言11.1 课题背景11.2 本课题的任务12 非接触式IC卡识别技术22.1 非接触式IC卡技术22.2 射频识别技术32.2.1 系统管理层32.2.2 接口层32.2.3 从动应答子系统(应答器)43 基于MIFARE非接触式IC卡的多用户识别单元的软件设计43.1 主程序设计43.1.1 工作流程43.1.2 主程序设计53.2 读卡器应用程序设计63.2.1 MFCM200指令63.2.2 MF
4、CM200 指令程序设计73.3 单片机控制电路的应用程序设计113.3.1 LED状态显示程序设计113.3.2 蜂鸣器驱动程序设计123.3.3 RS232通信程序设计123.3.4 看门狗程序设计14结束语17参考文献17附录18致谢27基于射频卡的多用户识别单元软件设计1 引言1.1 课题背景 智能卡的名称来源于英文名词“Smart card”,又称集成电路卡,即IC卡(Integrated Circuit Card)。它将一个集成电路芯片镶嵌与塑料基片中,封装成卡的形式,其外形与覆盖的磁条相似。 IC卡的概念是70年代初提出来的,法国布尔(BULL)公司与1976年首先创造出IC卡产
5、品,并将这项技术应用到金融、交通、医疗、身份证明等多个行业,它将微电子技术和计算机技术结合在一起,提高了人们生活和工作的现代化程度。 当前,用于信息处理的卡片种类繁多,而且基本上都采用了较新的技术,IC卡脱颖而出的原因在于它对与磁卡、PET卡、关卡和凸字卡等其它种类的卡具有一下突出的特点:(1)存储容量大,其内部有RAM、ROM 、ROM、EEPROM等存储器,存储容量可以达到几兆甚至十几兆字节;(2)体积小、容量轻、抗干扰能力强、便于携带;(3)安全性高。IC卡从硬件和软件等几个方面实施其安全策略,可以控制卡内不同区域的存取特性。存储器本身具有控制密码,非法试图对之解密则卡片自毁,即不可进行
6、读写;(4)对网络的要求不高。IC卡极高的安全可靠性使其在应用中对计算机网络的实时性、敏感性要求低,有利于在网络质量不高的环境中应用。正是由于这些特点,使得IC卡从诞生至今虽然只有短短数年,但其市场却遍布世界各地。IC卡目前已在商贸、交通、电信、医疗、卫生保健、金融、税务、工商、公安、组织机构代码和城市公共事业管理等许多领域得到广泛应用,并取得了初步的社会和经济效益。它对提高现代化管理水平和人民的生活质量,推动整个社会信息化进程有重要作用。本课题正是在这种环境下提出的。1.2 本课题的任务非接触式多用户识别系统通过射频信号传输完成卡片、读卡器等设备之间的数据交换,实现多目标识别的功能。系统主要
7、由控制器(PC机等)、读卡器终端和非接触式智能卡(A型或B型)组成。通常,读卡器与控制器之间通过串口进行通信,读卡器与智能卡之间通过高频接口,在某工作频率(如13.56MHz)下、以半双工方式传输数据。多用户射频识别系统实现的关键是一个非接触式IC卡读写器的设计,它必须能够执行防重叠选择,读卡模块通过和上位机通信(RS232串口),由PC程序对选中的卡执行读卡命令,然后按照防重叠机理,执行多卡的读卡程序,完成多用户的识别。非接触式IC卡读卡器结构框图如图1所示。在本课题中,非接触式IC卡读卡器的设计是根据ISO14443 TypeA协议,并通过非接触式IC卡读写器核心读写模块MFCM200和单
8、片机来实现的,主要侧重于软件的设计,整个系统的软件设计主要包括三个部分,即主程序的设计、读卡器应用程序的设计、单片机控制电路的应用程序设计。对读卡器应用程序的设计既是对MFCM200操作指令的程序设计;单片机控制电路的应用程序的设计包括LED状态显示程序设计、蜂鸣器程序设计、RS232通信程序设计以及看门狗程序设计。该读卡器具有以下特点:(1)典型读写距离为20-25MM(2)配有RS232通讯接口,便于同上位机通讯(3)小巧,价格便宜图1 非接触式IC卡读卡器结构框图2 非接触式IC卡识别技术非接触式IC卡是射频技术与IC卡技术相结合的产物,它与接触式IC卡的最大区别是它没有机械触点,通过无
9、线方式与读写设备进行通信,它成功解决了卡内无源和免接触这一难题。2.1 非接触式IC卡技术目前国际是具有代表性的两大非接触式IC卡技术是LEGIC技术和MIFARE技术。LEGIC技术是由瑞士KABA公司提供的非接触式IC卡读写技术,MIFARE技术是由PHILIPS公司提供的非接触式IC卡读写技术。MIFARE技术是采用13.56MHZ的近距离非接触式IC卡通讯频率标准,在通讯安全上采用符合ISO9798国家标准的3次互感校验技术,以对卡和读写设备的合法性进行相互校验;在数据通讯上采用DSA算法对通讯数据进行加密,以确保卡上的数据不被非法的修改。MIRARE采用密码读写控制方式,即读写设备的
10、监控程序要掌握相应的系统密码才能对IC卡内的数据进行不同操作(如读、写、增值、减值等)。其读写模块与监控计算机之间采用符合单片机外部总线标准的并行标准,读写过程可由监控程序逐步控制。在防冲撞功能上,MIFARE允许多卡同时进入读写范围,再由读写设备逐一处理。2.2 射频识别技术射频识别技术是在射频技术、通信技术、计算机技术等现代信息技术发展的基础上与20世纪80年代中期问世的。自出现以来,由于它极大加速了信息的收集和处理,近年来获得迅速的发展。自传统的条码或磁条识别技术相比,射频识别技术具有非接触、作用距离远、精度高、信息的收集和处理快捷灵活及较好的应用环境适应性等一系列的优点,在工业自动化、
11、商品控制、交通运输控管等众多领域得到广泛的发展。一个完整的射频识别系统通常包括两个部分,一是主动询问子系统(寻呼器),二是从动应答子系统(应答器)。其中主动询问子系统从基本功能上又可分为两个层次:系统管理层和接口层。从动应答子系统就是通常意义的用户射频识别IC卡,即非接触式IC卡。射频识别系统的结构框图如图2所示。图2 多用户射频识别系统的结构框图2.2.1 系统管理层系统管理层一般设于IC卡发放、管理部门。主要负责射频IC卡的几种管理,完成IC卡内相关信息的处理,如读卡、写卡、卡内信息修改、IC卡注销、IC卡信息查询、打印、数据统计等等。另外,系统管理层还负责IC卡内信息的安全保密。系统管理
12、层主机可为通用PC机、工作站或服务器等。2.2.2 接口层接口层负责射频识别IC卡和管理主机的信息交换和传输,其功能通常由非接触式IC卡读卡器或IC卡应用终端具体实现。接口层主要负责完成以下主要功能:IC卡进出控制、IC卡电源供给(对于无源非接触式IC卡)、IC卡与应用终端之间信息联络与处理及与管理层主机通讯等。 非接触式IC卡读卡器通常包括收发模块、控制模块(单片机)、主控机和单片机之间的接口模块以及天线系统。相应涉及到射频无线收发技术、天线技术、单片机信息处理和控制技术。2.2.3 从动应答子系统(应答器)从动应答子系统即非接触式IC卡,是整个射频识别系统中关键的组成部分。通常应答器由耦合
13、元件以及微电子芯片组成。应答器的主要组成、功能及应用特点如下:(1)具有信息存储、处理能力,它是射频识别系统真正的数据载体;(2)可接收、发射无线信号、外围器件少、功耗低、能在低电压下工作;(3)依据不同需要具有天线、射频/微波探测器、调制器、解调器、控制逻辑及存储器等部件;(4)有的应答器具有电池或外接电源,有的没有电源,有寻呼器通过无线方式对其供电,其中无内部电源的应答器在非接触式IC卡上应用较多;(5)体积小巧、结构多样、有圆形、方形、笔形及片形等多种形状,适合不同应用;(6)多种工作距离。3 基于MIFARE非接触式IC卡的多用户识别单元的软件设计软件设计分为三部分,即主程序的设计、读
14、卡器应用程序的设计、单片机控制电路应用程序设计。读卡器应用程序的设计即是对MFCM200操作指令的程序设计;单片机控制电路应用程序的设计包括LED状态显示程序设计、蜂鸣器程序设计、RS232通信程序设计以及看门狗程序设计。本课题中使用C语言进行程序设计,开发环境采用Keil C51 V6.12。3.1 主程序设计3.1.1 工作流程 读卡器对MIFARE 卡片的完整操作过程,主要包括复位请求、防重叠、选卡、相互验证、读写卡、中止等操作。其执行顺序必须依次进行,不能颠倒。下面介绍对Mifare1卡的每一步操作。读卡器对MIFARE 卡片的操作流程如图3所示:(1)复位请求:当一张Mifare卡处
15、在卡读写器的天线工作范围之内时。MCU将通过MFCM200发送一个复位请求,复位请求有两种,一种是request all,这指令是非连续性的读卡指令,只读一次;另一种是request std,这是连续性的读卡指令。当卡片收到该指令后,卡片内的ATR将启动。并将卡片的Block 0中的卡片类型(TagType)号共2个字节传送给读卡器,从而建立卡片与读卡器的第一步通信联络,完成复位过程。 (2)防重叠:如果有多张Mifare卡片处在卡片读写器的天线工作范围之内,MFCM200能检测出来并通知到MCU。此时MCU通过防重叠算法来与每一张卡进行通讯。由于每一张Mifare卡片都具有其唯一的序列号而决
16、不会相同,因此,MCU根据卡片的序列号来保证一次只对一张卡进行操作。(根据ISO14443协议,M1型卡传统的防重叠突算法是动态二进制检索树算法。它首先利用MANCHESTER编码“没有变化”的状态来检测碰撞位,然后把碰撞位设为二进制“1”,用SELECT命令发送重叠前接收的部分卡片序列号和碰撞位,如果卡片开头部分序列号与其相同,则做出应答,不相同则没有响应。以此来缩小卡片范围,最终达到无重叠。)(3)选卡:通过以上两步以后,MCU选取一张卡的序列号进行通讯,即选卡。(4)相互验证:选定要处理的卡片之后,MCU确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进
17、行通讯。(在选择另一扇区时,必须进行另一扇区密码校验。)(5)读写卡:读写操作是对卡的最后操作,包括读(Read)、写(Write)、增值(Increment)、减值(Decrement)、重储(Restore)和传送(Transfer)等操作。(6)中止:当一系列的操作完成后,MCU发送一个停机命令给卡片,使其退出工作。图3 读卡器对MIFARE卡片的操作流程图3.1.2 主程序设计在非接触式IC卡读卡器程序设计中,主程序中包含了一个无限循环,读卡器对卡的所有操作都放在这个无限循环中,循环外只有读卡器初始化子程序。读卡器主程序框图如图4所示。图4 读卡器主程序框图主程序以调用读卡器初始化子程
18、序开始,接着进行复位应答、防重叠、选择卡片、三次相互验证、读写卡等对卡片的操作以及显示等人机互操作,然后执行停机指令,完成对一张卡片的操作,之后进入下一个同样的循环。3.2 读卡器应用程序设计3.2.1 MFCM200指令 MCU对MIFARE非接触式IC卡的控制是通过MFCM200来实现的,MFCM200是MCU和MIFARE非接触式IC卡之间的通信载体。MCU对MFCM200的控制是以MCU发出MFCM200的指令来达到的,MFCM200收到这些指令之后将执行这些指令。 MFCM200的指令主要有这样一些:Request std,Request all,Anticollision,Sele
19、ct,Load_Key,Authentication(Auth_la,Auth_lb),Read,Write,Increment,Decrement,Restore,Transfer,Halt等等。其中比较重要的是前8条指令,以及Halt停机指令等。MCU 对MFCM200的某一指令操作不是简单的一条指令所能完成的,必须有一个程序的序列来完成,其中有MFCM200硬件内核寄存器的读与写以及根据读出的硬件内核寄存器的内容进行语言软件上的判断和设置。就连一条最简单的停机(Halt)指令也必须首先对MFCM200内部的诸多寄存器进行设置。不同的指令将设置不同的MFCM200内部寄存器以及应有不同的编
20、程语言程序序列。3.2.2 MFCM200 指令程序设计MFCM200具体指令说明及程序设计如下:(1)“Answer to Request”(“Request”应答或复位应答)指令a 指令说明,如表1所示表1 复位应答指令指令 指令代码(hex)相关的出错标志接收卡片上数据Answer to Request TE,BE TagtypeRequest std 26Request all 52Request指令将通知MFCM200在天线有效的工作范围(距离)内寻找MIFARE卡片。如果有MIFARE卡片存在,这一指令将分别与MIFARE卡片进行通信,读取MIFARE卡片上的卡片类型号TAGTYP
21、E(2个字节),由MFCM200传递给MCU,进行识别处理。Request指令分为Request std 和Request all指令。 Request all指令是非连续性的读卡指令,只读一次,它可以防止MFCM200选择同一张卡片好几次。当某一张卡片在MFCM200天线的有效工作范围(距离)内,Request all指令在成功读取这一张卡片之后,将一直等待卡片的使用者拿走这一张卡片,直到有新一张的卡片进入MFCM200之天线的有效工作范围(距离)内。当然,这里的“新一张的卡片”亦可以是刚刚拿开的那张卡片。Request std指令的使用和Request all指令刚巧相反,Request
22、std指令是连续的读卡指令。当某一张卡片在MFCM200天线的有效工作范围(距离)内,Request std指令在成功地读取这一张卡片之后,进入MFCM200对卡片的其他操作。如果其他操作完成之后,又将MFCM200进入Request std指令操作,则Request std指令将连续性地再次进行读卡操作,而不管这张卡片是否被拿走。只要有一张卡片进入MFCM200之天线的有效工作范围(距离)内,Request std指令将始终连续性地再次进行读卡操作。b 指令程序设计,具体程序见附录。(2)“AntiCollision”防重叠指令a 指令说明,如表2所示表2 防重叠指令 指令指令代码(hex)
23、相关的出错标志接受卡片上数据AntiCollision(防重叠) 93TE,BE Serial Number 如果有多于一张的MIFARE卡片在MFCM200之天线的有效的工作范围(距离)内,必须使用AntiCollision指令,使MCM能够在这一叠MIFARE卡片中选择个别的一张卡片。 AntiCollision指令开始与一个“AntiCollision loop”(防重叠循环)。结束时,AntiCollision指令将提供给用户在这些卡片叠中选择的那张卡片的一个有效的40bit长的序列号SN(serial number),SN前四个字节是有意义的,第5个字节仅仅用于校验之用,而获得SN之
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 射频卡 多用户 识别 单元 软件设计
限制150内