第5章高频RFID阅读器设计目录•5.1Mifare卡•5.2MFRC522•5.3RC522基本操作•5.4高频RFID阅读器程序设计本章目标•了解Mifare卡的特点•掌握Mifare卡的存储器结构•掌握Mifare卡的读写•了解RC522的原理框图•掌握RC522与MCU的接口•掌握RC522的基本操作•掌握RC522的命令使用学习导航射频识别技术Mifare卡RFID阅读器开发基础超高频RFID阅读器应用…………高频RFID阅读器设计MFRC522概述原理框图与MCU接口RC522基本操作RC522寄存器FIFO缓冲器操作RC522命令RC522基本指令高频RFID阅读器程序设计Mifare卡特点MifareS50卡Mifare卡存储器组织Mifare卡读写初始化程序驱动程序主程序中断服务函数任务描述•【描述】5.D.1•编写RC522的初始化程序。•【描述】5.D.2•编写RC522相关驱动程序。•【描述】5.D.3•驱动RC522读取Mifare卡数据。5.1Mifare卡•Mifare是NXPSemiconductors(恩智浦半导体)拥有的商标之一。•Mifare卡是目前世界上使用量大、技术成熟、性能稳定、内存容量大的一种感应式智能IC卡。5.1Mifare卡-Mifare卡特点•Mifare技术是NXP(前身为飞利浦半导体)所拥有的13.56MHz非接触性辨识技术。•NXP并没有制造卡片或卡片阅读机,而是在开放的市场上贩售相关技术与芯片,卡片和卡片阅读器的制造商再利用它们的技术来研发产品出售给一般使用者。•Mifare卡经常被认为是一种智能卡的技术,这是因为它可以在卡片上兼具读写的功能。•事实上,Mifare卡仅具备记忆功能,必须搭配阅读器才能达到读写功能。5.1Mifare卡-Mifare卡特点•Mifare卡的非接触式读写功能是为处理大众运输系统中的付费交易部分来设计,其与众不同的地方是具备执行升幂和降序的排序功能,简化资料读取的过程。•尽管接触性智能卡也能够执行同样的动作,但非接触性智能卡的速度更快且操作更简单,而且卡片阅读机几乎不需要任何维修,卡片也较为耐用。•Mifare卡除了保留接触式IC卡的原有优点外,还具有以下特点:•操作简单、快捷:由于采用射频无线通讯,使用时无须插拔卡及不受方向和正反面的限制,完成一次读写操作仅需0.1秒,大大提高了每次使用的速度,既适用于一般场合,又适用于快速、高流量的场所。•抗干扰能力强:Mifare卡中有快速防冲突机制,在多卡同时进入读写范围内时,能有效防止卡片之间出现数据干扰,读写设备可一一对卡进行处理,提高了应用的并行性及系统工作的速度。5.1Mifare卡-Mifare卡特点•可靠性高:Mifare卡与阅读器之间没有机械接触,避免了由于接触读写而产生的各种故障;•而且卡中的芯片和感应天线完全密封在标准的PVC中,进一步提高了应用的可靠性和卡的使用寿命。•适合于一卡多用:Mifare卡的存贮结构及特点(大容量16分区、1024字节),能应用于不同的场合或系统,,有很强的系统应用扩展性,可以真正做到“一卡多用”。5.1Mifare卡-Mifare卡特点•Mifare卡主要芯片有NXPMifare1S50(1Kbyte)、S70(4Kbyte)等。•Mifare1(下述简称MF1)是符合ISO/IEC14443A的非接触智能卡。•其通讯层(MifareRF接口)符合ISO/IEC14443A标准的第2和第3部分。•其安全层支持域检验的CRYPTO1数据流加密。•国内目前出现了Mifare卡的克隆产品,但性能稍逊一筹。•虽然Mifare技术已经被破解,卡片可以被复制,但是由于价格低廉,还在广泛使用。•Mifare卡的技术特点如下所述:5.1Mifare卡–MifareS50卡•卡片由一个卷绕天线和特定用途集成电路模块组成。•Mifare卡有一个高速(106KB波特率)的RF接口。•内部有一个控制单元和一个8K位EEPROM。•阅读器向MF1卡发出一组固定频率(13.56MHZ)的电磁波,卡片内有一个LC串联谐振电路,其频率与阅读器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使谐振电容内有了电荷。•在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到模块存储电容内储存,当所积累的电荷达到2V以上时,此电容可作为电源向模块电路提供工作电压,将卡内数据发射出去或接收阅读器的数据。5.1Mifare卡–MifareS50卡•MF1读写示意图如图5-1所示。5.1Mifare卡–MifareS50卡•目前市场上较常见的MF1S50卡的主要性能指标如下所述:•MifareRF接口(ISO/IEC14443A)。•非接触数据传输并提供能源(不需电池)。•工作距离:可达100mm(取决于天线尺寸结构)。•工作频率:13.56MHz。•快速数据传输:106kbit/s。•高度数据完整性保护:16BitCRC,奇偶校验,位编码,位计数。•真正的防冲突。•典型票务交易:100ms(包括备份管理)。•1KbyteEEPROM,分为16个区,每区4个块,每块16字节。•用户可定义内存块的读写条件。•数据耐久性10年。•写入耐久性100,000次。•相互三轮认证(ISO/IECDIS9798-2)。•带重现攻击保护的射频通道数据加密。•每区(每应用)两个密钥,支持密钥分级的多应用场合。•每卡一个唯一序列号。•在运输过程中以传输密钥保护对EEPROM的访问权。5.1Mifare卡–MifareS50卡•MF1S50集成电路芯片内含1KbyteEEPROM、RF接口和数字控制单元。•能量和数据通过天线传输,卡中天线为几匝线圈,直接连接到芯片上,不再需要额外的组件。•Mifare卡结构框图如图5-2所示。数字控制单元RF接口防冲突认证控制逻辑单元EEPROM接口加密EEPROM天线5.1Mifare卡–MifareS50卡•其中,各组件功能简述如下:•RF接口:调制解调器检波器时钟发生器上电复位稳压器。•防冲突:读写范围内的几张卡可以逐一选定和操作。•认证:在所有存储器操作之前进行认证过程,以保证必须通过各块指定的密钥才能访问该块。•控制逻辑单元:数值以特定的冗余格式存储,可以增减。•EEPROM接口:是与内部EEPROM的通信接口。•加密单元:域验证的CRYPTO1数据流加密,保证数据交换的安全。•EEPROM:总容量1Kbyte,每区的最后一块称作“尾块”,含有两个密钥和本区各块的读写条件。数字控制单元RF接口防冲突认证控制逻辑单元EEPROM接口加密EEPROM天线5.1Mifare卡–MifareS50卡5.1Mifare卡-Mifare1卡存储器组织•在MF1S50卡中,1024*8bitEEPROM存储器分为16个扇区,每区4块,每块16字节。•在擦除后的状态下,EEPROM的单元读为逻辑“0”,写后的状态下读为“1”。•存储器组织示意图如图5-3所示。•1.制造商占用块•制造商占用块是第1扇区的第1块(块0)。•它含有集成电路制造商数据。•出于安全和系统需求,此块是制造商在生产过程中编程后写保护的。•制造商占用块的结构如图5-4所示。5.1Mifare卡-Mifare1卡存储器组织•2.数据块•各扇区均有3个16字节的块用于存储数据(区0只有两个数据块以及一个只读的厂商代码块)。•数据块可以通过读写控制位设置为:•读写块:例如用于非接触门禁管理。•数值块:可直接控制存储值的命令,如增值、减值。•其中,数值块具有电子钱包功能(有效命令:read、write、increment、decrement、restore、transfer)•数值块有固定的数据格式,以便于错误检测、纠错和备份管理。•数值块只能通过以数值块格式的写操作生成:5.1Mifare卡-Mifare1卡存储器组织•2.数据块•数值:有符号4字节数值。•数值的最低字节存储在最低地址字节。•负值以标准的2的补码形式存储。•出于数据完整性和安全原因,数值存储三次,两次不取反,一次取反。•地址(Adr):1字节地址,当进行备份管理时,可用于保存块的地址。•地址保存四次。两次取反,两次不取反。•在increment、decrement、restore和transfer操作中,地址保持不变。•它只能通过write命令更改。数值块结构如图5-5所示。5.1Mifare卡-Mifare1卡存储器组织•3.尾块(块3)•各扇区均有一个尾块,存有:•密钥A和B(可选),读时返回逻辑“0”。•该区四个块的读写条件,存储在字节6至9。•读写控制位也指定了数据块的类型(读写块或数值块)。•如果不需要密钥B,块3的最后6字节可以用作数据字节。•尾块的字节9可用于用户数据。•因为此字节享有与字节6、7、8相同的读写权限。尾块的结构如图5-6所示。5.1Mifare卡-Mifare1卡存储器组织•1)读写条件•每个数据块和尾块的读写条件均由3个bit定义,并以非取反和取反形式保存在各个区的尾块中。•读写控制位管理着使用密钥A和B读写存储器的权限。•如果知道相关的密钥,并且当前读写条件允许,读写条件是可以更改的,读写条件说明如图5-7所示。5.1Mifare卡-Mifare1卡存储器组织•注意在每一次存储器读写时,内部逻辑会验证存储条件的格式。•如果发现个是错误,这个区将被永久性锁死。•在后续说明中,读写控制位是仅以非取反形式表述的。•MF1的内部逻辑保证了命令只有在通过认证后才被执行。5.1Mifare卡-Mifare1卡存储器组织•2)尾块的读写条件•对密钥和控制位的读写取决于尾块(块3)的访问控制位,这些控制位存放在字节6~8中,以正值和反值的形式存放。•分为“禁止”、“KEYA”、“KEYB”和“KEYA|B(KEYA或KEYB)”。•读写条件在尾块中的存储位置如表5-1所示。Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0字节6/C23/C22/C21/C20/C13/C12/C11/C10字节7C13C12C11C10/C33/C32/C31/C30字节8C33C32C31C30C23C22C21C20字节95.1Mifare卡-Mifare1卡存储器组织•读写条件定义如表5-2所示。•由上表可知,尾块和keyA被预定义为传输配置状态。•因为在传输配置状态下keyB可读,新卡必须用keyA认证。•由于访问控制位本身也可以禁止访问,所以操作时应当特别小心。访问控制位所控制的访问对象注释KEYA访问控制位KEYBC1C2C3读写读写读写000禁止KEYAKEYAKEYBKEYAKEYAKEYB可读010禁止禁止KEYA禁止KEYA禁止KEYB可读100禁止KEYBKEYA|B禁止禁止KEYB110禁止禁止KEYA|B禁止禁止禁止001禁止KEYAKEYAKEYAKEYAKEYAKEYB可读传输配置状态011禁止KEYBKEYA|BKEYB禁止KEYB101禁止禁止KEYA|BKEYB禁止禁止111禁止禁止KEYA|B禁止禁止禁止5.1Mifare卡-Mifare1卡存储器组织•3)数据块的访问控制条件•对数据块(块0至2)的读写访问取决于其访问控制位,分为“禁止”、“KEYA”、“KEYB”和“kEYA|B”。•相关访问控制位的设置确定了其用途以及相应的可用命令。•读写块:允许读、写操作。•数值块:运行另外的数值操作例如加值、减值、转存和恢复。•在用于非充值卡的一种情况(“001”)下,只能够读和减值。•在另一种情况(“110”)下,可以用keyB充值。访问控制位所控制的访问对象用途C1C2C3读写加值减值转存恢复000KEYA|BKEYA|BKEYA|BKEYA|B传输配置状态010KEYA|BKEYB禁止禁止读写块100KEYA|BKEYB禁止禁止读写块110KEYA|BKEYBKEYBKEYA|B数值块001KEYA|B禁止禁止KEYA|B数值块011KEYBKEYB禁止禁止读写块10