MFRC522射频模块在门禁系统中的应用
第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协议的射频模块,从硬件设计和软件开发两方面对开发过程进行详细说明。实验结果表明该模块具有设计灵活和使用方便等特点,具有良好的推广价值。
- NXP无处不在NFC支付解决方案(10-12)
- 基于ISO14443 TypeA标准读写器的设计与实现(04-23)
- 全球定位系统信号接收机射频模块设计(02-18)
- RF功率放大器那点事(07-08)
- 一种带有自适应纠错功能的通信射频模块控制电路(07-20)
- 基于RFID超市智能库架管理系统设计(04-01)