基于MF RC522的RFID读卡器模块设计
文章出处:http://www.singbon.com 作者:黄俊祥 陶维青 人气: 发表时间:2011年10月16日
目前国内的13.56 MHz RFID读卡器芯片市场上,荷兰恩智浦公司的Mifare非接触读卡芯片系列中MF RC522系列具有低电压、低功耗、小尺寸、低成本等优点。采用3.3 V统一供电,工作频率为13.56 MHz,兼容ISO/IEC 14443A及MIFARE模式。MF RC522主要包括两部分,其中数字部分由状态机、编码解码逻辑等组成;模拟部分由调制器、天线驱动器、接收器和放大器组成[2]。MF RC522的内部发送器无需外部有源电路即可驱动读写天线实现与符合ISO/IEC 14443A或MIFARE标准的卡片的通讯。接收器模块提供了一个强健而高效的解调和解码电路,用于接收兼容ISO/IEC 14443A和MIFARE的卡片信号。数字模块控制全部ISO/IEC 14443A帧和错误检测(奇偶和CRC)功能。模拟接口负责处理模拟信号的调制和解调。非接触式异步收发模块配合主机处理通信协议所需要的协议。FIFO(先进先出)缓存使得主机与非接触式串行收发模块之间的数据传输变得更加快速方便。
1 系统组成
读卡器模块包括MCU、读卡器芯片、天线及其滤波匹配电路。MCU选用TI公司的超低功耗单片机MSP430F149,该单片机支持多种低功耗模式,并能够快速唤醒,具有60 KB+256 B的Flash、2 KB的RAM、两个既可做异步UART又可以做SPI使用的串行通讯口、6组I/O口、一个内部DCO和2 个外部时钟,非常适合开发低功耗高性能的产品[3]。在本模块中MCU通过SPI方式与MFRC522连接,供电电压均为3.3 V,所以不再需要外围的电压转换电路,外接一个天线及简单的滤波匹配电路,即可实现与卡片的通信。
2 工作原理
MCU通过对读卡器芯片内寄存器的读写来控制读卡器芯片,读卡器芯片收到MCU发来的命令后,按照非接触式射频卡协议格式,通过天线及其匹配电路向附近发出一组固定频率的调制信号(13.56 MHz)进行寻卡,若此范围内有卡片存在,卡片内部的LC谐振电路(谐振频率与读卡器发送的电磁波频率相同)在电磁波的激励下,产生共振,在卡片内部电压泵的作用下不断为其另一端的电容充电,获得能量,当该电容电压达到2 V时,即可作为电源为卡片的其他电路提供工作电压。
当有卡片处在读卡器的有效工作范围内时,MCU向卡片发出寻卡命令,卡片将回复卡片类型,建立卡片与读卡器的第一步联系,若同时有多张卡片在天线的工作范围内,读卡器通过启动防冲撞机制,根据卡片序列号来选定一张卡片,被选中的卡片再与读卡器进行密码校验,确保读卡器对卡片有操作权限以及卡片的合法性,而未被选中的则仍然处在闲置状态,等待下一次寻卡命令。密码验证通过之后,就可以对卡片进行读写等应用操作。
3 MF RC522与MCU接口实现
MF RC522提供了3种接口模式:高达10 Mb/s的SPI、I2C总线模式(快速模式下能达400 kb/s,而高速模式下能达3.4 Mb/s)、最高达1228.8 kb/s的UART模式。每次上电或硬件重启之后MFRC522复位其接口,并通过检测控制引脚上的电平信号来判别当前与主机的接口模式,这样给读写设备的开发带来了极大的可选择性。与判别接口模式有关的两个引脚为IIC和EA:当IIC引脚拉高时,表示当前模式为IIC方式,若IIC引脚为低电平时,再通过EA引脚电平来区分,EA为高表示SPI模式,为低则表示UART方式。
本设计中采用了四线制SPI,通信中的时钟信号由MCU产生,MF RC522芯片设置为从机模式,接收来自MCU的数据以设置寄存器,并负责射频接口通信中相关数据的收发。数据的传输路径为:MCU通过MOSI线将数据发到MF RC522,MF RC522通过MISO线发回至MCU,并且两根线上的每一个字节都是先发高位。两根数据线上的信号电平在时钟信号必须保证上升沿稳定,在下降沿才允许改变,可以连续读写N个字节。此外,MCU向MF RC522发送的第一个字节定义操作模式和所要操作的寄存器地址,最高位代表操作模式,1表示读,0表示写,中间六位(bit1~bit6)表示地址,最低位预留不用,默认为0。
因为MSP430F149的SPI接口个数有限,在此通过软件模拟SPI方式,不仅增加了MSP430F149的SPI接口数量,更充分利用了MSP430F149本身丰富的I/O口。在此模式下,IIC引脚为低电平,EA引脚为高电平,相应的SDA和D7、D6、D5分别用作NSS、MISO、MOSI、SCK。
读操作(主机最先发送字节的最高位为1): 首先将NSS拉低(使能通信),将要读出数据的MF RC522地址字节按数据表规定的格式进行编码;然后循环8 次,按编码后的字节逐位将MOSI线上数据置一或清零;地址发出去之后,MF RC522收到读命令,会将对应地址值通过MISO发回主机,所以主机只需循环8 次,把MISO上的数据逐位读出,存入临时变量中。最后将NSS拉高,一字节的读操作完成。
写操作(主机最先发送字节的最高位为 0):同样首先将NSS拉低,将目标地址字节按数据表中规定的格式进行编码;然后循环8 次将地址发送出去后,再进行8次循环,将所需写入的数据仍通过MOSI发送过去,MF RC522对应地址的字节数据即可实现更新。
当有多个数据要传送时,数据是通过FIFO缓存来处理的(见图1),即不断向FIFO数据寄存器进行读写操作。MF RC522具有64 B的FIFO缓存器,专门用来缓存主机与MF RC522内部状态机之间的输入和输出数据流,FIFO缓存器数据输入输出总线是与FIFO数据寄存器相连的,每写一个数据到这个寄存器都会存1 B到FIFO缓存器,并使其写指针加一;相反,从这个寄存器读数据能得到读指针所在处的数据,并且使读指针减小,写指针和读指针之间的距离就是FIFO缓冲器中的数据字节数,反映在相应的寄存器中。此外,可以通过重设FIFO 缓存器的指针来清空缓冲器。
4 MFRC522天线模块设计
13.56 MHz射频天线及其匹配电路共有三块:天线线圈、匹配电路(LC谐振电路)和EMC滤波电路[2]。在天线的匹配设计中必须保证产生一个尽可能强的电磁场,以使卡片能够获得足够的能量给自己供电,而且考虑到调谐电路的带通特性,天线的输出能量必须保证足够的通带范围来传送调制后的信号。
天线线圈就是一个特定谐振频率的LC电路,其输入阻抗是输入端信号电压与信号电流之比,输入阻抗具有电感分量和电抗分量,电抗分量的存在会减少天线从馈线对信号功率的提取,因此在设计中应当尽可能使电抗分量为零,即让天线表现出纯电阻特性,这时电路实现谐振[4],谐振频率计算公式为:
式中:ω=22πf;La为天线电感;Q为拟调整值(此处为30);Ra天线电阻。
在发送部分,引脚TX1和TX2上发送的信号是由包络信号调制的13.56 MHz载波能量,经过L0和C0组成的EMC滤波电路以及C1、C2、Rq(其中Rq只在Q值太高的情况下需要)组成的匹配电路,就可直接用来驱动天线,TX1和TX2上的信号可通过寄存器TxSelReg来设置,系统默认为内部米勒脉冲编码后的调制信号。调制系数可以通过调整驱动器的阻抗(通过设置寄存器CWGsPReg、ModGsPReg、GsNReg来实现)来设置,同样采用默认值即可。在接收部分,使用R2和C4以保证Rx引脚的直流输入电压保持在VMID,R1和C3的作用是调整Rx引脚的交流输入电压。
5 软件流程
系统初始化完成后,就进入读卡器与卡片的应用操作准备阶段,此期间要进行寻卡、防碰撞、选卡以及密码校验[7],密码校验通过后再根据应用操作代码进行相应的操作:读卡片块数据、向卡片的某块写数据、充值扣款、数据备份、或是使卡进入停机状态。
参考文献
[1] 纪震.电子标签原理与应用[M].西安:西安电子科技大学出版社,2006.
[2] NXP Inc. MFRC522 Contactless Reader IC product data sheet (Rev.3.2) [EB/OL]. 2007. http://www.nxp.com.
[3] Texas Instruments Inc.MSP430x14x Mixed Signal Microcontroller [EB/OL].2004. http://www.ti.com.
[4] NUMMELA J, UKKONEN L, SYDANHEIMO L, et al.13.56 MHz RFID antenna for cell phone integrated reader[J]. Antennas and Propagation International Symposium 2007 IEEE, 2007(6):1088-1091.
[5] NXP Inc.Directly Matched Antenna Design (Rev.2.05) [EB/OL].2006. http://www.nxp.com.
[6] NXP Inc.Mifare ISO/IEC 14443 PICC Selection (Rev.1.0)[EB/OL].2006.http:// www.nxp.com.