基于单片机的RFID读写器设计 .doc
摘 要射频识别(Radiofrequency identification ,RFID),又称电子标签(E-Tag),是一种利用射频信号自动识别目标对象并获取相关信息的技术。随着技术的进步,RFID应用领域日益扩大,现已涉及到人们日常生活的各个方面,并将成为未来信息社会建设的一项基础技术。因此,研究、设计和开发RFID系统具有十分重要的理论意义和实际意义。论文系统地论述了射频识别系统和读卡器的理论分析,研究了射频识别系统中的许多关键技术,并提出了射频识别读卡器的设计方案。本文首先分析了射频识别技术的基本原理、研究方向和应用情况。在充分研究了射频卡的基本原理、技术特点、国际相关标准后,进而提出了基于STC11F32单片机的射频读卡器系统设计的方法。设计采用MFRC522射频读写模块在STC11F32单片机的控制下实现对Mifare卡的读写访问操作。硬件部分设计主要包括单片机控制电路设计,射频模块设计,天线电路设计,串行通信电路设计,声音提示及显示电路设计等,其中详细讨论了读卡器的软件设计方法。软件设计包括单片机处理程序,射频基站芯片RC522的基本操作、Mifare卡操作程序设计、声音提示及显示部分程序等。论文中系统地讨论了软件实现读卡器与Mifare卡之间通信所要求的请求应答、防冲撞、选卡片、认证、读写等功能模块的实现原理。关键词:射频识别,读卡器,IC卡,STC11F32,MFRC522AbstractRadio frequency identification (radio frequency identification, RFID), also known as electronic tags (e-Tag), is an RF signal automatic target recognition and access to relevant information technology. With the advances in technology, RFID applications widening, has been involved in all aspects of people's daily lives, and will become a basic technology of the future information society. Therefore, research, design and development of RFID systems has important theoretical and practical significance.Discusses the theoretical analysis of radio frequency identification system and card reader to the paper system, many of the key technology of radio frequency identification system, and the design of radio frequency identification reader.This paper firstly analyzes the basic principle of radio frequency identification technology, the research direction and application. In the full study of RF Card basic principle, technical characteristics, relevant international standards, and then put forward based on STC11F32 single chip RF card reader system design method. The design adopts MFRC522radio frequency read write module in STC11F32under the control of a single-chip microcomputer to realize Mifare card read and write access operations.The hardware part of the design including the MCU control circuit design, design of the RF module, Antenna circuit design, circuit design of the serial communication, voice prompts and display circuit design, including detailed discussion of the reader software design methods. Software design, including the microcontroller handler, the basic operation of the RF base station chip RC522, Mifare card operating procedures, voice prompts and display part of the program. The paper discussed the request response communication between the software implementation of the reader with Mifare card required, anti-collision, election card, certification, read and write function module principle. Key words:RFID, reader, IC card, STC11F32, MFRC522目录1 绪论5 1.1课题研究的背景与意义 1.2 RFID读卡器国内外现状及前景2 射频识别系统技术及相关理论7 2.1射频识别系统原理 2.2射频识别系统组成 2.3射频识别系统的分类 2.4 非接触式IC卡 - S502.5读卡器的工作原理3 非接触式IC卡国际标准103.1 TYPEA的初始化和防冲突4 读卡器系统硬件设计14 4.1 MCU控制部分 4.2射频部分 4.3天线设计 4.4声音提示及显示部分5 读卡器系统软件驱动程序设计16 5.1 RC522命令集的实现5.2 Mifare卡操作程序设计5.3 软硬件的联合测试运行总结24致谢25参考文献26附录27第一章 绪 论1.1课题研究的背景与意义射频识别技术是二十世纪九十年代兴起的一种天线的、非接触方式的自动识别技术,是近几年发展起来的前沿科技项目。该技术主要是利用射频信号通过空间耦合实现无接触信息传递并通过所传递的信息达到识别目的。射频识别技术的显著优点在于非接触性,因此完成识别工作时无需人工干预,能够实现识别自动化且不易损坏;可识别高速运动并可同时识别多个射频标签,操作快捷方便;射频标签不怕油渍、灰尘污染等恶劣环境,且可以穿透非金属物体进行识别,抗干扰能力强。REID技术与互联网、通讯等技术相结合,可实现全球范围内物品跟踪与信息共享。研究RFID技术,发展RFID产业对提升社会信息化水平、促进经济可持续发展、提高人民生活质量、增强公共安全与国防安全等方面产生深远影响,具有战略性的重大意义。因此,RFID技术已在世界各地得到广泛的应用,以美国、日本和欧洲的发达国家对该技术应用研究已达到相当高的水平,而我国处于岂不状态,大多采用了引进的技术成果。所以研究该技术已成为我国当今社会发展的必然趋势。另外RFID技术是一个崭新的技术应用领域,它不仅涵盖了微波技术与电磁学理论,而且包括通信原理及半导体集成电路技术,是一个多学科综合的新兴学科。因此对RFID技术的认识和应用研究具有深远的理论意义。现在,射频识别技术作为一种新型的自动识别技术,也将在中国很快地普及。典型的射频识别应用系统由非接触式IC卡、非接触式IC卡读卡器和应用系统组成,其中非接触式IC卡读卡器是连接非接触式IC卡和应用系统的桥梁,是射频识别应用系统中的关键部件,而且现在的发展趋势要求射频识别系统要有更高的安全性,因此设计一款安全有效地读卡器有着重要的商业价值意义。1.2 RFID读卡器国内外现状及前景RFID相比传统的识别系统具有信息量大,通过无线通信方式可重复读写数据,保密性极好,环境适应能力强,使用寿命更长。随着技术的进步,RFID应用领域日益扩大,现已涉及到人们的日常生活的各个方面,并将成为未来信息社会建设的一项基础技术。目前第二代身份证、公共交通等都广泛采用了这项技术,超市如沃尔玛采用电子标签管理商品。现射频识别技术在中国还处于一个迅猛发展的阶段,前景十分广阔,相信随着技术越来越成熟,射频识别技术与其它技术一样走进我们日常生活的各个角落,使我们的生活更加方便快捷。RFID技术在国外的发展较早也较快,在美国、英国、德国、瑞典、日本等国家目前都有成熟且先进的RFID系统。其中低频近距离RFID系统主要集中在125KHz 、13.56MHz,高频远距离RFID系统主要集中在UHF频段915MHz、2.45GHz、5.8GHz,UHF频段远距离系统在北美得到了很好的发展,在欧洲有源2.45GHz得到了较多的应用,5.8GHz在日本和欧洲均有较为成熟的有源RFID系统。国内RFID读卡器按照应用场合的不同出现全面发展的态势,有读写器模块便携式读写器、超高频(UHF)读写器、高频读写器、双频标签读写微波读写器、低频读写器等各种各样的产品供应,这些产品有适合远距离读写、有近距离读写的。他们都有一个共同的特点,同质化严重,各产品之间的差别不大,性能也相近,基本上采用读卡器芯片加单片机的结构,而核心技术并不在自己手中,缺乏成套系统的自主知识产权。目前,RFID典型应用领域包括:(1)车辆道路交通自动收费管理(2)旅客航空行包自动识别、分拣转运管理(3)车辆出入控制(4)RFID金融卡(5)产品加工过程自动控制(6)物流仓库自动管理(7)门禁管理(8)图书馆图书管理(9)防伪技术。随着技术的进步,读卡器会朝着多功能如条码识别、无线数据传输、以太网传输等方向发展,读卡器的成本也会越来越低,同时阅读器将实现多制式多频段兼容,多功能、多制式、小型化、模块化、嵌入式方向是读卡器发展的趋势。/ 1.3 本课题主要研究内容及论文主要内容/在本课题主要研究内容中说明一下你所负责研究的重点内容,即软件设计第二章 射频识别系统技术及相关理论2.1射频识别系统原理从信息传递的基本原理来说,射频识别技术在低频段基于变压器耦合模型(初级与次级之间的能量传递及信号传递),在高频段基于雷达探测目标的空间耦合模型(雷达发射的电磁波信号碰到目标后携带目标信息返回雷达接收机)。射频标签与读卡器之间的电磁耦合包含两种情况:一种情况是电感耦合。在电感耦合方式中读卡器的天线相当于变压器的初级线圈,射频标签的天线相当于变压器的次级,因而也称电感耦合方式为变压器方式。电感耦合方式通过空间磁场实现耦合,耦合磁场在读卡器线圈(初级)与射频识别标签(次级)之间构成闭合电路。电感耦合方式是低频段近距离无接触射频识别的耦合方式。另一种是电磁耦合方式,在电磁耦合方式中,读卡器的天线将读卡器产生的射频信号以电磁波方式定向发送到空间范围内,形成读卡器的有效阅读区域,位于读卡器有效阅读区域中射频标签从读卡器天线发出得电磁场中提取工作电源,并通过射频标签的内部电路及标签天线将标签内存的数据信息传送到读卡器。电磁耦合与电感耦合的差别在于电磁耦合方式中得读卡器将射频信号以电磁波的形式发送出去;在电感耦合方式中,读卡器将射频信号束缚在读卡器电感线圈的周围,通过交变闭合的线圈磁场,沟通读卡器与射频标签天线之间的射频通道,而没有向空间辐射电磁能量。2.2射频识别系统组成射频识别系统一般由以下三部分组成:读写器(Reader)一台典型的读写器应包含射频信号发射单元器,高频接收单元金额控制单元,此外,许多读写器还都有附加的接口(RS232、USB),以便将获得的数据传输给另外系统作进一步的处理或存储。标签(Tag)RFID标签是一种以无线方式传送数据的信息载体形势,它具有数据处理及安全认证等特有的优点。RFID标签是射频识别系统真正的数据载体,主要有天线、谐振电容以及IC芯片组成,其种类可以分为无源标签和有源标签两种。射频标签与读卡器之间采用双向验证机制,即读卡器验证射频标签的合法性,同时射频标签也验证读卡器的合法性;处理前,标签要与读卡器进行三次互相认证,而且在通讯过程中所有数据都加密。此外,标签中各个扇区都有自己的操作密码和访问条件。天线(Antenna)射频识别系统中的天线用于产生磁通量,而磁通量用于向无源标签提供能量并在读卡器和标签之间传送信息。13.56 MHz射频天线及其匹配电路共有三块:天线线圈、匹配电路(LC谐振电路)和EMC滤波电路。在天线的匹配设计中必须保证产生一个尽可能强的电磁场,以使卡片能够获得足够的能量给自己供电,而且考虑到调谐电路的带通特性,天线的输出能量必须保证足够的通带范围来传送调制后的信号。2.3 射频识别系统的分类按照读写距离来划分,RFID系统可分为接触式和非接触式,而非接触式又分为近距离(密耦合)、中距离(遥耦合)和远距离。按照工作频段来划分,RFID系统可分为低频、中高频、超高频和微波频段。2.4 非接触式IC卡-S50Mifare1 IC智能(射频)卡的核心是NXP公司的Mifare1 IC S50(-01,-02,-03,-04)系列微晶片,他确定了卡片的也行以及卡片读写器的诸多性能。Mifare1 IC智能卡采用先进的芯片制造工艺制作,内建有高速的CMOS EEPROM,MCU等。卡片上除了微晶片及一副高效率天线外,无任何其他元件。卡片上无源(无任何电池),工作时的电源能量由卡片读写器天线发送电载波信号耦合到卡片上天线而产生电能,一般可达2V以上,供卡片上得IC工作。工作频率为13.56MHz。Mifare1射频卡所具有的独特的MIFARA RE(射频)非接触式接口标准已被指定为国际标准:ISO/IEC 14443 TYPEA标准。Mifare1 IC S50是多应用的智能卡,它使用起来方便、高速、安全,经常应用在支付领域,它与读写器通信使用握手式半双工通信协议;卡片上有高速的CRC协处理器,符合CCITT标准,卡片制造是具有唯一的卡片序列号,没有重复的相同的两张Mifare卡片。卡片上内奸8K(bit)EEPROM存储容量并划分为16个扇区,每个扇区划分为4个数据存储块,每个扇区可由多种方式的密码来管理。卡片上还内建有增值/减值的专项的数学运算电路,非常适合公交、地铁等行业的检票收费系统。典型的检票交易时间最长不超过100ms。卡片上的数据读写可超过10万次以上;数据保存期可达10年以上。本文设计的读卡器正是用于读写Mifare1 IC S50卡的应用系统,可以对Mifare 1 IC S50进行读写操作、电子钱包操作、密码操作以及认证方式设置等操作。2.5读卡器的工作原理MCU通过对读卡器芯片内寄存器的读写来控制读卡器芯片,读卡器芯片搜到MCU发来的命令后,按照非接触式射频卡协议格式,通过天线及其匹配电路向附近发出一组固定频率的调制信号(13.56MHZ)进行寻卡,若此范围内有卡片存在,卡片内部的LC谐振电路(谐振频率与读卡器发送的电磁波频率相同)在电磁波的激励下,产生共振,在卡片内部电压泵的作用下不断为其另一端的电容充电,获得能量,当该电压达到2V时,即可作为电源为卡片的其他电路提供工作电压。当有卡片在读卡器的有效工作范围内时,MCU向卡片发出寻卡命令,卡片将回复卡片类型,建立卡片与读卡器的第一步联系,若同时有多张卡片在天线的工作范围内,读卡器通过启动防冲撞机制,根据卡片序列号选定一张卡片,被选中的卡片再与读卡器进行密码校验,确保读卡器对卡片有操作权限以及卡片的合法性,而未被选中的则仍然处在闲置状态,等待下一次寻卡命令。密码验证通过后就可以对卡片进行读写等应用操作。第三章 非接触式IC卡国际标准非接触式IC卡以作用距离的不同而分为三个不同的标准。密耦合IC卡标准ISO/IEC10536主要是在1992年到1995年间发展的。近耦合和疏耦合IC卡标准的制定工作国际标准ISO/IEC 14443和ISO/IEC 15693大约是1995年开始着手进行的,两项标准在2000年后才开始有效完成。远耦合卡暂未出统一技术标准。非接触式IC读卡器对应的国际标准近耦合IC卡的作用距离在10CM左右,目前绝大部分的民用系统都采用的是近耦合IC卡,因此本章着重介绍该标准内容。近耦合卡采用的国际标准ISO/IEC 14443标准分为四个部分: ISO/IEC14443-1物理特性 ISO/IEC14443-1射频能量和信号接口, ISO/IEC14443-3初始化和防冲突 ISO/IEC14443-4传输协议,下面将着重介绍ISO/IEC14443-3初始化和防冲突。ISO/IEC14443-3初始化和防冲突这部分描述了在一个PCD设备的射频区域里查询PICC卡,字节和帧的格式,初始化请求命令和请求命令的响应的内容,在记账卡中对一张卡的检测和通讯的方法(即防冲突)和其他一些需要初始化的参数。这里只介绍TYPEA3.1 TYPEA的初始化和防冲突3.1.1帧的格式和时序PCD或PICC发送的帧都包含一个帧头和帧尾和中间的数据信息或错误检测位。PCD或PICC之间采用半双工的通信方式,帧与帧之间的延时时间也在标准里做了具体的规定。 帧分为短帧(数据长度只有一个字节)和标准帧(数据长度大于1个字节) 以及基于位数据传送的防冲突帧。3.1.2命令集PCD设备间隔一定时间就发送请求命令(REQA),REQA命令组成如下:REQA编码 REQA帧包括以下内容:l 通信起始位Sl 7位数据,低位先发送,REQA的命令代码是"0x26"l 通信结束位EPICC接收到REQA命令后,在PCD能量场内的所有PICC同步发出ATQA应答。编码如下表所示:ATQA的编码: b8b7表示UID比特帧的大小。UID比特帧的定义将在售后介绍。UID的长度不是固定的,可以由1,2,或3部分组成,对应于ATQA的B8B7位分别为00、01和10.b5b1中有且只有1位置为1,表示采用的是比特帧防冲突方式。RFU为保留位,均置为0.PCD接收ATQA应答,PICC和PCD进入防冲突循环,PCD的ANTICOLLISION和SELECT命令用于防冲突循环。命令组成式如表所示:BCC在UID CLn为40bit才有,是前5个字节的异或,此时为SELECT命令(NVB=70);不足40个bit时,则为ANTICOLISION命令。SEL表示CLn的层叠级数,其编码如下表所示:SEL的编码 如果PICC已经发送了完整的UID,则该卡将是从准备状态转为活动状态,并在其SAK的响应里表明UID是完整的。否则,PICC仍保持准备状态,则PCD设备将初始化一个新的增加了层叠级别的防冲突循环。一个select的时序目的是取得一张PICC卡的UID,并选择该卡来做将来的通信对象。PCD发送SELECT命令后,与40位UID CLn匹配的PICC,以SAK作为应答。SAK的编码如表所示。 SAK编码 其中,b3(层叠位)表示UID是否完整,0表示完整,即PICC的UID已被PCD所确认。位1表示还有部分UID CLn(n=2或3)未经确认。RFU全置为0。 3.1.3 防冲突流程PCD初始化和防冲突流程如下图请标注图号、图名所示,包括以下步骤:PCD指定防冲突命令SEL的代码为93、95或97,分别对应于UID CL1、UID CL2或UID CL3。PCD指定NVB的值为20,此值表示PCD不发出UID CLn的任一部分,而迫使所有在场的PICC发回完整的UID CLn作为应答。PCD发送SEL和NVB。所有在场的PICC发回完整的UID CLn作为应答。假如多余1张PICC发回应答,则发生了冲突,假如不发生冲突,可跳过610。PCD应认出发生第1个冲突的位置。PCD指示NVB值说明UID CLn的有效位数目,这些有效位是接收到的UID CLn发生冲突之前的部分,后面再由PCD加一位0或一位1,一般加1。PCD发送SEL、NVB和有效数据位。只有这样的PICC,他们的UID CLn部分与PCD发送的有效数据位内容相等,才发送出UID CLn的其余位。 假如还有冲突发生,重复69。最大循环次数为32. 假如没有再发生冲突,PCD指定NVB为70,此值表示PCD将发送完整的UID CLn。 PCD发送SEL 和NVB,接着发送40位UID CLn,后面是CRC校验码。 与40位的UID CLn匹配的PICC,以SAK作为应答。 如果UID是完整的,PICC将发送带有层叠为0的SAK,同时从准备状态转换到活动状态。 如果PCD检查层叠位为1的SAK,将CL加1,并再次进入防冲突循环。第四章 读卡器系统硬件设计 /简要介绍一下:为了更好地对系统的软件设计进行说明,本章对课题所设计的RFID读卡器硬件设计作一简要介绍。(因题目为RFID读卡器软件设计)系统硬件电路分为控制电路,读写驱动电路和液晶显示电路等。RFID卡读写设备的基本结构包括以下几个部分(参见图3):图3图号、图名4.1 MCU控制部分MCU是读写设备的数据处理控制核心。它不仅要控制射频处理模块完成对RFID卡的读写,还要负责通过通信接口与主机或应用系统进行通信以及键盘、显示设备等其他外部设备的控制。单片机选用的是STC11F32是宏晶科技公司生产的单时钟机器周期(1T)的单片机,是高速、低功耗、具有超强抗干扰能力的新一代8051单片机,指令代码完全兼容传统8051,但速度快812倍。内部集成高可靠复位电路,可用在高速通信、智能控制、强干扰等场合;内部有32 KB的Flash、29KB的EEPROM和1 280字节的SRAM;EA、ALE、PSEN和RST引脚可以定义为通用IO,即4个P4引脚;编程支持ISP下载功能,使用起来比较方便。4.2 射频部分射频部分是非接触式IC卡读写器的关键部件,通过该部分与非接触式IC卡进行数据通信。射频部分的主要部件就是射频基站芯片,这里选用的是MFRC522。MF RC522 是应用于 13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员。是 NXP 公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。 MF RC522 利用了先进的调制和解调概念,完全集成了在13.56MHz 下所有类型的被动非接触式通信方式和协议。支持ISO14443A的多层应用。其内部发送器部分可驱动读写器天线与 ISO 14443A/MIFARE®卡和应答机的通信,无需其它的电路。接收器部分提供一个坚固而有效的解调和解码电路,用于处理 ISO14443A 兼容的应答器信号。数字部分处理 ISO14443A 帧和错误检测(奇偶CRC)。 此外,它还支持快速 CRYPTO1 加密算法, 用于验证 MIFARE 系列产品。 MFRC522支持 MIFARE®更高速的非接触式通信,双向数据传输速率高达 424kbit/s。 作为 13.56MHz 高集成度读写卡系列芯片家族的新成员,MF RC522与 MF RC500 和MF RC530 有不少相似之处,同时也具备诸多特点和差异。它与主机间的通信采用连线较少的串行通信,且可根据不同的用户需求,选取 SPI、I2C 或串行 UART(类似 RS232)模式之一,有利于减少连线,缩小 PCB板体积,降低成本。l MFRC522支持SPI、I2C、UART接口;l 64字节发送和接收的FIFO缓存;l 4页,每页16个寄存器,共64个寄存器;l 具有硬件掉电、软件掉电、发送掉电三种节电模式;l 支持 ISO/IEC 14443 TypeA和 MIFARE®通信协议;4.3 天线设计天线的作用就是产生磁通量,为卡片提供电源,在读写设备和卡片之间传送信息,天线的有效电磁场范围就是系统的工作区域。4.4 声音提示及显示部分非接触式IC卡读写器进行读写 操作时发出提示音,发声的器件选用蜂鸣器,该器件使用方便、价格便宜。单片机的IO口驱动能力有限,不能直接驱动蜂鸣器发声,通过三极管来驱动蜂鸣器。显示部分采用LCD12864液晶显示模块。第五章 读卡器系统软件驱动程序建议删除,软件设计不仅是驱动程序吧?设计读卡器硬件必须在软件的控制下进行工作,第四章?主要描述读卡器系统软件设计的原理,读卡器和Mifare1卡的通信的流程,系统的初始化、防碰撞、身份验证和读写操作等模块。系统软件应由完成初始化等功能主程序和其他的模块组成。 本章是论文的核心部分。结构上应从软件系统组成、主程序及相关模块的功能及流程图来组织本章内容。在相应部分的介绍中先概述并给出组成图或流程图,而针对流程图说明处理流程。 另外,所涉及的图请不要直接用截图。所有驱动程序是在Philips公司的基准程序基础上进行的开发,开发环境采用Keil C51.程序的每一部分按模块化设计成一个文件,单独调试通过后,再在Keil C51环境下加入到工程文件中会变成HEX文件,写入STC11F32单片机芯片中进行调试运行。相对于Philips公司生产的其他14443基站芯片(如RC500、RC530等),RC522简化了内部系统结构,去掉了片内E2PROM。从而大大缩减了芯片命令集。另外,对载波调制电路,发送电路和解调、解码电路的控制也相应简化,去掉了校准接收电路I时钟、Q时钟、校准发送与接收时钟相位等繁琐的操作。一般而言,单片机与RC522的通信流程如图4-1所示。图4-1根据RC522和MIFARE卡问传送的控制流数据的不同,通信过程中可能会出现不同的状态。对各种状态须作不同处理,这正是软件系统开发的难度所在。下面给出RC522命令集中2个最基本命令(Tranceive和MFAuthe-nt)执行过程中可能遇到的通信状态及处理。这两个命令分别实现向MIFARE卡发送/接收数据和加密认证功能。实际上,通过它们即可完成对MIFARE卡的所有操作,包括Request、Anticollision、Select、READ、WRITE等。 5.1 RC522命令集的实现RC522主要的状态指示寄存器包括ComIrqReg、Er-rorReg、Status2Reg和FIFOLevelReg等。软件处理的思路:通过ComIrgReg得到RC522内部中断状态;由中断判断RC522与MIFARE卡的通信流程信息,从而决定是否进行下一流程处理;若中断指示有错误发生,则需进一步读取ErrorReg的内容,据此返回错误字。5.1.1 Tranceive命令Tranceive命令的具体执行过程;读取RC522 FIFO中的所有数据,经基带编码和数字载波调制后通过通信接口以射频形式发送到MIFARE卡;发送完毕后通过通信接口检测有无MIFARE卡发送的射频信号回应,并将收到的信号解调、解码后放入FIFO中。分析以上Ttanceive命令执行过程,可以得到处理该命令的算法流程图,如图4-2所示。 图4-2为了处理Mifare卡在读卡器产生的电磁场中激励后,未完成处理义从激励场中拿开的情况,软件中启用了RC522芯片内部的定时器。若超过设定的时间未得到卡片应答,则中止与卡的通信,返回“卡无反应”的错误信息。从图4-2中可以看出Tranceive命令的核心处理方法:根据相关通信状态指示寄存器的内容返回各种错误状态字,若有位冲突错误,则进一步返回位冲突位置。Tranceive命令不处理面向比特的帧,这种帧只可能在MIFARE卡防冲突循环中出现。为了保持Tranceive命令对各种MI-FARE卡命令的普适性,该命令只完成帧的发送和接收,不对帧信息作处理,所有位冲突处理留在函数外进行。需要注意的是,Tranceive命令不能自动中止,在任何情况下从该命令返回时必须先执行IDLE指令使RC522转入空闲态。5.1.2 MFAuthent命令RC522简化了与MIFARE卡的加密认证操作,用一个MFAuthent命令代替了原来RC500需要的Authentl和Authent2两条命令。MFAuthent命令执行的最终目的在于开启RC522的加密认证单元。该指令执行成功后,RC522芯片与MIFARE卡间的通信信息将首先加密,然后再通过射频接口发送。从本质上讲,MFAuthent是一条变相的Tranceive命令,其算法流程图与图4一致。但RC522芯片内部已经对通信过程中的各种通信状态作了相应处理,且该命令执行完后自动中止,因此用户只须检测定时器状态和错误寄存器状态来判断执行情况。实际上,MFAuthent只可能有一种错误状态(RC522与MI-FARE卡通信帧格式错误),此时该命令不能打开加密认证单元,用户必须重新执行认证操作。MFAuthent执行过程中RC522将依次从FIFO中读取1字节认证模式、l字节要认证的E2PROM块号、6字节密钥和4字节射频卡UID号等信息,在命令执行前必须保证这12字节数据完整地保存在FIFO中。认证模式有A密钥认证和B密钥认证两种,一般选用A密钥认证。一次MFAutllent认证只能保证对MIFARE卡的一个扇区中的4个数据块解密,若要操作其他扇区的数据用户还须另外启动对该扇区的认证操作。5.2 Mifare卡操作程序设计对Mifare卡的操作分为请求、反碰撞、选择、认证、读、写、增值、减值、存取和传输,对Mifare卡的操作流程图如图所示,具体描述如下:1请求操作当有Mifare卡进入读写器天线作用范围内,读写器发出Request命令。卡上的ATR将启动,将卡上的第0扇区的第0块上得卡片类型号(TagType)共2个字节数据发给读写器,建立卡与读写器的第一步通信联络。如果不进行请求操作,接下去的操作无法进行。请求函数如下:char PcdRequest(unsigned char data req_code,unsigned char *pTagType)req_mode是输入参数,Request All时输入命令代码52H,Request Idle时输入参数26H.pTagType是输出,返回2个字节的卡类型号。操作成功返回值为0 。2 反碰撞操作在请求操作之后,要进行的是反碰撞操作,得到一张卡的序列号。当多张Mifare卡同时处于读写器天线作用范围内,读写器与一张Mifare卡进行通信,取得徐序列号。由于Mifare卡的序列号全球唯一,不可能重复,保证下一步只对一张Mifare卡操作。反碰撞函数如下:char PcdAnticoll(unsigned char *pSnr)pSnr是输入,存放序列号(4byte)的内存单元首地址。操作成功时函数返回值为0.3卡选择操作在Mifare卡成功完成请求,反碰撞操作后,进行的操作是卡选择。对指定序列号的卡进行选择操作,选中的卡可以进一步同RC522进行通信,其余的卡恢复到初始状态。卡选择操作函数:char PcdSelect(unsigned char *pSnr)pSnr是输入,Mifare卡的序列号。操作成功时函数返回值为0.4 认证操作为了访问Mifare卡的EEPROM存储器中存放的数据,必须进行认证操作。认证的过程从RC522内部开始。用户首先要将正确的密钥放入RC522的密钥缓冲区中,然后比较RC522的密钥缓冲区中存放的密钥与Mifare卡尾块中存放的密钥是否相同,相同可以对Mifare卡进行下一步操作,不相同不允许对Mifare进行下一步操作。认证的程序流程一般分为三步:(1)为了进行认证操作,密钥必须转化为标准的格式,然后存入RC522的内部密钥缓冲区中,将6字节的未编码的密钥转化成12字节的编码密钥,有米要编码函数char ChangeCodeKey( )实现;(2)讲已转换格式后的密钥送到RC522的FIFO中,有函数char PcdAuthKey( )实现;(3)用存放RC522的FIFO 中得密钥和卡上的密钥进行验证,由函数char PcdAuthState( )完成。相关函数如下:Char ChangeCodeKey(unsigned char *pUncode,unsigned char *pCoded )pUncode 输入函数,6字节未转换的密钥。pCoded输出函数,12字节转换后的密钥。Char PcdAuthKey(unsigned char *pKeys)pKeys 输入函数,转换后的密钥。char PcdAuthState(unsigned char data auth_mode,unsigned char data addr,unsigned char *pKey,unsigned char *pSnr)auth_mode输入函数,0x60:验证A密钥,0x61:验证B密钥。以上函数返回值类型均为char。操作正确时返回 0.5.读操作经过认证操作,Mifare卡的访问控制条件为允许读时,可以从Mifare卡中读出其EEPROM的值。每次读出16字节一块的数据。读操作函数:char PcdRead(unsigned char data addr,unsigned char *pData)该函数从指定的块中读取16字节的数据。addr输入块号,取值范围063.pData输出16字节来自Mifare卡