引言
随着射频技术的发展,基于ISO14443A协议的近场距离识别技术越来越多的应用于民用产品中,最常见的如公共交通、身份识别、门禁监控等众多领域。为使应用系统的开发人员快速开发射频识别产品,本文设计了一种实用型射频读写模块,该模块具有天线识别距离大、用户接口灵活和操作简单等特点。该模块采用MFRCA22作为射频读写芯片,该芯片支持ISO14443A的多层协议;在内部嵌入天线,同时支持使用外部天线的功能。分别从硬件和软件两方面对系统设计进行详细的介绍:硬件方面给出系统总体框图,并对主要芯片和天线设计进行介绍;软件方面则重点介绍ISO14443A协议和接口编程,最后结合应用实例,展示了模块通用和易用等特点。
1 硬件电路设计
本文设计的射频模块为基于MFRC522射频读写芯片,适用于支持ISO14443A协议的所有非接触式卡。硬件系统由射频读写芯片MFRC522、单片机LPC931、电源模块和天线电路组成,系统硬件框图如图1所示。
单片机LPC931作为模块的主控器,接收从UART和I2C总线接口发送过来的系统命令,驱动射频读写芯片MFRC522支持ISO14443A型卡的所有操作。用户使用UART接口时,系统能自动监测UART接口发送数据的波特率,从而调整内部,配置适应相应的数据通信速率。用户在使用I2C总线接口与模块进行通信时,I2C总线接口通信速率为100 Kbps。射频读写芯片MRFCA22的集成度高且接口灵活,在使用时,只需要按照芯片资料进行简单设计就可以实现芯片功能,同时天线设计方面也提供了详细的说明。下面就从这两个方面进行阐述。
1. 1 射频读写芯片MFRC522
射频读写芯片MFRC522是NXP半导体公司生产的一款应用于13.56 MHz的非接触式射频读写芯片,具有集成度高、功耗低和封装小等特点。该读写芯片采用先进的调制和解调技术,完全集成了在13.56 MHz下所有类型的被动非接触式通信方式,支持ISO1443A的多层应用协议。芯片内部发送器可驱动读写器天线与ISO14443A型卡和应答机的通信,接收器提供有效的解调和解码电路,用于处理ISO14443A兼容的应答器信号。在数字信号处理部分,支持ISO14443A型卡的帧数据校验和快速CRYPTO1加密算法,具有很强的加密性。
MFRC522在系统的应用过程如下:MFRC522与单片机LPC931之间采用SPI接口进行数据交换,通过单片机发送过来的控制命令实现ISO1444 3A协议的所有操作。首先,LPC931对MFRC522进行复位,开启天线,设置初始化寄存器值;随后,MRFC522开始进入命令接收状态,LPC931开始按照ISO14443A协议的流程发送寻卡、防冲撞、选卡、密钥校验和读写卡操作的命令,完成对射频卡的数据读写操作。MFRC522在系统中的应用电路连接如图2所示。
1.2 射频天线及匹配电路设计
在电感耦合式射频识别系统中,标签的微芯片工作所需要的全部能量都由标签天线线圈耦合阅读器和天线线圈产生的磁通量形成的感应电压提供。所以,在射频产品中,天线设计的成功与否直接决定产品性能。
在本设计中,采用直接匹配的天线设计方式,天线电路分为3个部分;发射电路、接收电路和天线及匹配电路,电路连接如图3所示。由C1、R1、C2和R2组成的接收电路与由L1、L2、C3和CA组成的发射滤波电路中的元件参数是固定的,而对于天线匹配电路中的C6、C7、Ra和C8、C9、Rb值由设计的天线来决定,为获得天线的良好性能,相关参数值的选取还须经过天线的调谐过程。
在进行天线调谐过程中,不是匹配电路使天线辐射的能量越大,天线性能越好。此时,识别卡的区域可能是断层的,而应该注重天线性能与射频卡的接收能力相匹配,这样识别卡的距离才能达到最佳。
在天线附近区域存在金属材料的应用环境中,可以在金属材料表层加涂铁氧体磁性材料,增加天线信号的接收性能,避免天线信号被金属材料吸收。
2 软件设计
系统软件设计主要完成接收用户命令及射频卡与模块之间的数据交互。在所有的ISO14443A型卡中,以飞利浦公司设计的Mifare1系列S50卡最常用。下面将详细介绍标准Mifare1卡内部存储结构及S50卡基本功能的实现方法,随后对如何使用接口函数进行详细说明。
2.1 Mifare1卡内部存储结构
Mifare1 S50卡内部有8K容量的E2PROM,分为16个扇区,每个扇区内有4个数据块,每块有16字节数据。数据结构如图4所示。
第0扇区的块0内已固化存储厂商代码,其中包含唯一识别的卡号,其他扇区的块0、1和2为数据块,用于存储用户数据。由于数据存储格式的不同,数据块可以分为2种:普通数据块和数值块,普通数据块存储任意16字节数据,而数值块内数据存储格式如下所示。
其中,有效数据为带符号位的4字节数据,块号为1字节,只有在这种存储格式下才能执行卡的增值或减值操作。
此外,每个扇区的数据块3为该扇区密钥控制块,内部包含密钥A(6字节)、存取控制(4字节)和密钥B(6字节)。每个扇区的密钥和存取控制条件都是独立设置的,可以根据需要设定各自的密钥及存取控制。在存取控制中,每块都有3个控制位相对应,用以决定某数据块或控制块的读写条件。默认存取控制为FF 07 80 69,表示该扇区验证密钥A时可以读写数据块和密钥块。一般常用操作时,会在发卡时修改密钥控制块的密钥和控制存取,但需注意修改时,避免产生死锁情况。
2.2 Mifare1卡基本功能实现
对一张Mifare1卡来说,基本功能无非就是实现读取和写入卡内数据,而在对Mifare1卡进行读写操作之前,必须经过寻卡、防冲撞、选卡和密钥验证等环节。
寻卡主要实现在天线识别范围内搜寻是否存在Mifarel卡。寻卡成功后,进入防冲撞操作的过程,主要功能是在若干个Mifarel卡中按照一定算法获取其中1张卡的序列号。随后选择该序列号的卡,进行密钥验证。
密钥验证以扇区为单位,其结果在于开启通信加密单元,成功后的数据传输都将加密。只有通过某扇区密钥验证后,才可以对该扇区的块内数据进行读或写。若要对Mifarel卡进行增值或减值操作,则需要把该块的数据初始化转换为数值块数据格式,随后就可直接进行增值或减值操作。
卡操作完毕后,可以使卡进入Halt状态,此时只有使用Request All指令才能唤醒该卡。Mifarel卡基本功能的具体实现流程如图5所示。
2.3 接口函数
为方便用户使用该模块,系统提供了多种类型接口,即可并不需要直接去了解ISO14443A协议中的细节,或通过简单的接口调用方式对ISO14443A型卡进行所有操作。模块提供UART和I2C两种用户接口,两种接口的上层软件接口函数均有统一方式,用户在使用时,只需要对底层接口进行修改,就可以操作ISO14443A塑卡的所有操作。UART和I2C总线两种用户接口使用同一种数据帧传输格式,一帧的数据格式如下所示。
接口函数中提供操作MFRCA22的基本命令,如配置读卡芯片、读写寄存器和装载密钥,也提供ISO14443A协议的基本操作,如常规操作中的寻卡、防碰撞、选卡和读写卡操作。同时,提供集成接口函数,通过调用集成接口函数就可以实现对卡识别,还可对某块数据进行读操作,如调用PiccAutoDetect接口函数就能实现上述操作。同时可以选择数据主动输出还是以提供中断信号提示方式输出数据,下面对自动识别卡操作接口函数进行简单介绍。
自动识别卡操作接口函数如下:
int PiccAutoDecect(char ADMode,char TxMode,char Req,char Auth,char KeyAB,char*Key,int Block)
在参数ADMode中,定义了最后执行Halt操作、继续检测卡、中断输出和主动发送数据等模式选择。参数TxMode中定义了天线驱动类型,参数Req中定义寻卡模式,参数Auth中定义校验密钥A或校验密钥B,参数Key为密钥数据,而参数Block定义操作的块号。读卡成功后,若在UART接口下参数ADMode中有设置主动发送数据,则可以调用下面接口接收数据:
int PiccADRcv(char*Tx,char* Tag,char*Sak,char*Snr,char*Dat)
其中参数*Tx为天线参数,*Tag为寻卡请求应答,*Sak为选卡应答,*Snr为选卡卡号,*Dat为块内数据。
若没有设置主动发送数据,则可以通过调用ReadAutoDetect接口函数获取自动识别卡操作的数据,返回数据的格式跟上面描述相同。
3 产品应用实例
在为某用户进行电梯监控系统设计中,使用了门禁系统,采用本文设计的模块作为射频读写模块。模块在两处使用,一处位于电梯轿厢内部的电梯内呼控制系统中,作为电梯乘坐人员启动电梯到达固定楼层的工具;另一处位于系统监控中心的发卡系统内,为电梯乘坐人员进行发卡、充值和销卡。
在电梯内呼控制系统中,控制系统与射频模块采用UART接口方式进行通信,读取用户卡中的信息并传递到监控中心。对有效用户将开启对应楼层,如有消费需求,则可以进行读写卡操作。在电梯内呼控制系统中,采用NXP公司设计的LPC2364 MCU作为主控制器,嵌入本文设计的射囊模块,实现智能呼叫电梯和人员管理,电梯内呼控制系统中的硬件框图如图6所示。
由于对无源射频卡操作时,卡与读卡器之间的数据交换时的能量由天线提供,当卡位于天线信号较弱区域时,天线辐射的能量不足以支持数据交换,则导致数据交换失败。所以,在天线识别的临界区域时,如果快速移动射频卡,可能会出现数据交换失败情况,但此时卡内的数据可能已经改变,而返回到读卡器中的操作状态是不成功的。特别是在使用射频卡作为消费卡使用的情况时,容易出现无刷卡和错误刷卡的情况。此时,需要对数据卡操作进行软件上的优化,一方面在后台做好数据备份的工作,二是在卡内划分出一个数据块用于存储备份数据。
结语
基于射频芯片MFRC522和单片机LPC931,设计了一种遵循ISO14443A协议的射频模块,从硬件设计和软件开发两方面对开发过程进行详细说明。实验结果表明该模块具有设计灵活和使用方便等特点,具有良好的推广价值。