RFID是射频识别的英文缩写。通俗地说,RFID读卡器是一种能阅读电子标签数据的自动识别设备。RFID读卡器RFID射频识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可工作于各种恶劣环境。RFID技术可识别高速运动物体并可同时识别多个标签,操作快捷方便。
目前国内的13.56MHzRFID读卡器芯片市场上,荷兰恩智浦公司的Mifare非接触读卡芯片系列中MFRC522系列具有低电压、低功耗、小尺寸、低成本等优点。采用3.3V统一供电,工作频率为13.56MHz,兼容ISO/IEC14443A及MIFARE模式。MFRC522主要包括两部分,其中数字部分由状态机、编码解码逻辑等组成;模拟部分由调制器、天线驱动器、接收器和放大器组成。MFRC522的内部发送器无需外部有源电路即可驱动读写天线实现与符合ISO/IEC14443A或MIFARE标准的卡片的通讯。接收器模块提供了一个强健而高效的解调和解码电路,用于接收兼容ISO/IEC14443A和MIFARE的卡片信号。数字模块控制全部ISO/IEC14443A帧和错误检测(奇偶和CRC)功能。模拟接口负责处理模拟信号的调制和解调。非接触式异步收发模块配合主机处理通信协议所需要的协议。FIFO(先进先出)缓存使得主机与非接触式串行收发模块之间的数据传输变得更加快速方便。
1 系统组成
如图1所示,读卡器模块包括MCU、读卡器芯片、天线及其滤波匹配电路。MCU选用TI公司的超低功耗单片机MSP430F149,该单片机支持多种低功耗模式,并能够快速唤醒,具有60KB+256B的Flash、2KB的RAM、两个既可做异步UART又可以做SPI使用的串行通讯口、6组I/O口、一个内部DCO和2个外部时钟,非常适合开发低功耗高性能的产品。在本模块中MCU通过SPI方式与MFRC522连接,供电电压均为3.3V,所以不再需要外围的电压转换电路,外接一个天线及简单的滤波匹配电路,即可实现与卡片的通信。
2 工作原理
MCU通过对读卡器芯片内寄存器的读写来控制读卡器芯片,读卡器芯片收到MCU发来的命令后,按照非接触式射频卡协议格式,通过天线及其匹配电路向附近发出一组固定频率的调制信号(13.56MHz)进行寻卡,若此范围内有卡片存在,卡片内部的LC谐振电路(谐振频率与读卡器发送的电磁波频率相同)在电磁波的激励下,产生共振,在卡片内部电压泵的作用下不断为其另一端的电容充电,获得能量,当该电容电压达到2V时,即可作为电源为卡片的其他电路提供工作电压。
当有卡片处在读卡器的有效工作范围内时,MCU向卡片发出寻卡命令,卡片将回复卡片类型,建立卡片与读卡器的第一步联系,若同时有多张卡片在天线的工作范围内,读卡器通过启动防冲撞机制,根据卡片序列号来选定一张卡片,被选中的卡片再与读卡器进行密码校验,确保读卡器对卡片有操作权限以及卡片的合法性,而未被选中的则仍然处在闲置状态,等待下一次寻卡命令。密码验证通过之后,就可以对卡片进行读写等应用操作。
3 MFRC522与MCU接口实现
MFRC522提供了3种接口模式:高达10Mb/s的SPI、I2C总线模式(快速模式下能达400kb/s,而高速模式下能达3.4Mb/s)、最高达1228.8kb/s的UART模式。每次上电或硬件重启之后MFRC522复位其接口,并通过检测控制引脚上的电平信号来判别当前与主机的接口模式。与判别接口模式有关的两个引脚为IIC和EA:当IIC引脚拉高时,表示当前模式为IIC方式,若IIC引脚为低电平时,再通过EA引脚电平来区分,EA为高表示SPI模式,为低则表示UART方式。
本设计中采用了四线制SPI,通信中的时钟信号由MCU产生,MFRC522芯片设置为从机模式,接收来自MCU的数据以设置寄存器,并负责射频接口通信中相关数据的收发。两根数据线上的信号电平在时钟信号必须保证上升沿稳定,在下降沿才允许改变,可以连续读写N个字节。此外,MCU向MFRC522发送的第一个字节定义操作模式和所要操作的寄存器地址,最高位代表操作模式,1表示读,0表示写,中间六位(bit1~bit6)表示地址,最低位预留不用,默认为0.
因为MSP430F149的SPI接口个数有限,在此通过软件模拟SPI方式,不仅增加了MSP430F149的SPI接口数量,更充分利用了MSP430F149本身丰富的I/O口。在此模式下,IIC引脚为低电平,EA引脚为高电平,相应的SDA和D7、D6、D5分别用作NSS、MISO、MOSI、SCK.接口原理如图2.
读操作(主机最先发送字节的最高位为1):首先将NSS拉低(使能通信),将要读出数据的MFRC522地址字节按数据表规定的格式进行编码;然后循环8次,按编码后的字节逐位将MOSI线上数据置一或清零;地址发出去之后,MFRC522收到读命令,会将对应地址值通过MISO发回主机,所以主机只需循环8次,把MISO上的数据逐位读出,存入临时变量中。最后将NSS拉高,一字节的读操作完成。
写操作(主机最先发送字节的最高位为0):同样首先将NSS拉低,将目标地址字节按数据表中规定的格式进行编码;然后循环8次将地址发送出去后,再进行8次循环,将所需写入的数据仍通过MOSI发送过去,MFRC522对应地址的字节数据即可实现更新。
当有多个数据要传送时,数据是通过FIFO缓存来处理的(见图1),即不断向FIFO数据寄存器进行读写操作。MFRC522具有64B的FIFO缓存器,专门用来缓存主机与MFRC522内部状态机之间的输入和输出数据流,FIFO缓存器数据输入输出总线是与FIFO数据寄存器相连的,每写一个数据到这个寄存器都会存1B到FIFO缓存器,并使其写指针加一;相反,从这个寄存器读数据能得到读指针所在处的数据,并且使读指针减小,写指针和读指针之间的距离就是FIFO缓冲器中的数据字节数,反映在相应的寄存器中。此外,可以通过重设FIFO缓存器的指针来清空缓冲器。
4 MFRC522天线模块设计
13.56MHz射频天线及其匹配电路共有三块:天线线圈、匹配电路(LC谐振电路)和EMC滤波电路。在天线的匹配设计中必须保证产生一个尽可能强的电磁场,以使卡片能够获得足够的能量给自己供电,而且考虑到调谐电路的带通特性,天线的输出能量必须保证足够的通带范围来传送调制后的信号。
天线线圈就是一个特定谐振频率的LC电路,其输入阻抗是输入端信号电压与信号电流之比,输入阻抗具有电感分量和电抗分量,电抗分量的存在会减少天线从馈线对信号功率的提取,因此在设计中应当尽可能使电抗分量为零,即让天线表现出纯电阻特性,这时电路实现谐振,谐振频率计算公式为:
式中,L为天线等效电感,C为天线等效电容,在本设计中,天线工作频率f为13.56MHz,如果天线的等效电感L太高,等效电容C的值就只能很小了,而一旦超出5μH,电容匹配的问题就变得更难了。但因为所用的芯片MFRC522上具有两个TX引脚,可以在TX1和TX2上并联两个天线,从而使得感搞减半。环形天线电感经验计算公式为:
其中:I1为环形天线一圈的长度:D1为导线的直径,或PCB板上天线导线的宽度;K为天线环形因素(圆形天线取1.07,矩形天线取1.47);N1为天线的圈数;P为与天线圈结构相关的系数,印刷电路板线圈的取为1.8.
天线品质因数Q,计算公式如下:
天线的Q值用来评价回路输出效率,Q值越高,其能量输出效率越高,但当Q值过高时,其特性会导致通带变窄,副载波频率处的能量幅度太小甚至在天线的边带之外,从而影响调制信号的发送,得不偿失。因此采用10︿30的低Q值设计,若经式(3)计算的Q值大于30,可在天线的两边分别串联一个电阻Rq以降低Q值,相当于天线增加电阻,R变为Ra+2Rq,由式(3)可推出每边电阻的计算公式为:
式中:ω=22πf;La为天线电感;Q为拟调整值(此处为30);Ra天线电阻。
如图3所示,在发送部分,引脚TX1和TX2上发送的信号是由包络信号调制的13.56MHz载波能量,经过L0和C0组成的EMC滤波电路以及C1、C2、Rq组成的匹配电路,就可直接用来驱动天线,TX1和TX2上的信号可通过寄存器TxSelReg来设置,系统默认为内部米勒脉冲编码后的调制信号。调制系数可以通过调整驱动器的阻抗来设置,同样采用默认值即可。在接收部分,使用R2和C4以保证Rx引脚的直流输入电压保持在VMID,R1和C3的作用是调整Rx引脚的交流输入电压。
5 软件流程
系统初始化完成后,就进入读卡器与卡片的应用操作准备阶段,此期间要进行寻卡、防碰撞、选卡以及密码校验,密码校验通过后再根据应用操作代码进行相应的操作:读卡片块数据、向卡片的某块写数据、充值扣款、数据备份、或是使卡进入停机状态。流程图如图4所示。