孙奇燕,王宜怀,冯德旺,景 林
(1.福建农林大学计算机与信息学院,福建福州350002;2.苏州大学计算机科学与技术学院,江苏苏州215006)
无线射频识别技术(RFID)作为一种利用射频通信方法实现非接触式、快速、实时地采集和处理数据的自动识别和数据采集技术,已经广泛应用到生产、物流、医疗、交通运输等众多领域[1-2].目前RFID在全球尚没有一个成熟的统一标准,主流的13.56 MHz的RFID标准有ISO/IEC14443A、ISO/IEC14443B以及ISO/IEC15693三种,其中,ISO/IEC15693读写距离较远,可达1 m;而ISO/IEC14443A、ISO/IEC14443B读写距离稍近,大约7-15 cm,这3种协议都有着比较广泛的应用[3].市场上现有的13.56 MHz射频读卡器,一般只能支持一种固定的协议[4],而RFID应用系统发展趋势是朝着多接口、多制式、模块化、防碰撞、嵌入式等方向发展[5].因此,本文提出一种13.56 MHz频率RFID读卡器软硬件构件化设计方案,它是以飞思卡尔公司的Kinetis 60系列微控制器为核心,采用TI公司的TRF7960芯片搭建射频电路,可识别ISOIEC14443A、ISOIEC14443B以及ISOIEC15693三种协议的标签,具有防碰撞功能,解决了在读写器工作范围内多个标签同时通信所引起的相互干扰问题.该读卡器配有以太网、USB、UART串口、SPI通信接口,扩展了显示、声音等外围设备,可应用于多种场合.
RFID读卡器的软硬件构件化设计层次模型如图1所示.硬件构件是指将一个或多个功能模块、支撑电路及其功能描述封装成为一个可重用的硬件实体,提供一系列规范的输入、输出接口.硬件构件层根据硬件构件存在形式的不同,可分为内部硬件构件和外部硬件构件.内部硬件构件内嵌在微控制器中,不需要添加额外的功能芯片,只需要相关的支撑电路即可实现其功能;外部硬件构件则是由设计者自己设计完成的、位于微控制器外的外部功能模块,它同时需要集成功能芯片及其支撑电路.软件构件的设计则通过分析构件的共性和个性,抽取构件的属性和对外接口函数,实现对硬件驱动程序的封装.软件构件层包括针对硬件构件编程的底层软件构件层和与硬件无关的高层构件层,其中底层外设构件可以调用底层内部构件,高层构件层只能调用底层外设构件和功能构件,而不能直接调用GPIO构件.K60微控制器头文件为所有寄存器定义.采用该设计方案,RFID读卡器的软硬件只需少量改动便可应用到其他嵌入式系统中,从而提高了设计的可重用性和可移植性.
图1 RFID读卡器软硬件构件层次模型Fig.1 The RFID reader component level model
Kinetis系列微控制器是飞思卡尔公司推出的首款基于ARM Cortex-M4内核的微控制器.其子系列K60微控制器因具有IEEE1588以太网,全速和高速USB2.0,大闪存,丰富的模拟、通信、定时和控制外设等强大功能得到最广泛的应用[6].K60微控制器核心构件即为其硬件最小系统,由电源、晶振及复位等电路组成.该构件对外的引脚较多,电源类引脚MAPBGA封装22个,LQFP封装27个,复位引脚1个,晶振引脚3个,JTAG引脚5个,ADC、DAC和USB引脚共14个,IO端口引脚100个.
RFID读卡器与上位机的通信可以有多种方式,如以太网、USB、串口等.本文采用串口方式,但是为了方便今后的扩展预留了以太网接口和USB接口.K60微控制器内部集成了以太网模块,但仅仅是以太网控制器(MAC)部分,所以需要添加以太网物理层收发器(EPHY).EPHY芯片是BroadCom公司生产的AC101L,它支持10/100BASE-T,能完成所有以太网物理层功能,具有单通道、低功耗和支持MII接口的特点.物理层收发器AC101L构件与K60的连接如图2所示.AC101L的XO和X1引脚接25 M的晶振;构件左边的引脚为MII接口的信号线、复位和中断引脚,用于连接K60的以太网控制器部分;构件右边的TD+、TD-、RD+和RD-为以太帧的输出输入数据线.
射频芯片是TI(德州仪器)公司推出的高频(13.56 MHz)、多协议、防碰撞射频识别芯片TRF7960[7].TRF7960采用超小32 pin QFN的高级封装设计,支持ISO/IEC14443A、ISO/IEC14443B、ISO/IEC15693等协议.它与MCU的通信可以采用8位并行方式或者串行(SPI)方式.由于K60内部集成了3个SPI接口,连接方便,所以RFID构件此处使用的是串行方式.RFID构件与K60的SPI2口连接如图3所示.此外,TRF7960硬件上还提供了一个IRQ中断引脚,接收数据、发送数据、CRC错误、碰撞等共用该中断引脚.它连接K60的GPIO脚PTB19,当接收到该引脚的请求信号时,提示K60对TRF7960的中断状态寄存器(0x0c)进行查询,以查明产生中断信号的原因,并做出相应的处理.
图2 以太网物理层收发器构件Fig.2 The Ethernet physical layer transceiver component
图3 RFID构件Fig.3 RFID component
LCD构件、指示灯及蜂鸣器构件构成了终端构件.LCD用于显示读卡过程中的提示信息.此处采用耀宇科技的YM12864,该LCD可以显示4行,每行8个汉字或者16个字母.它有2种通信方式:并行和串行.并行通信采用11根引脚线,串行通信采用3根引脚线.为了减少引脚连接数量,此处采用串行通信方式.另外还需一个引脚控制背光灯电源的正极LEDA开关.LCD构件与K60的连接如图4所示.指示灯及蜂鸣器构件中2盏指示灯用于观察系统的运行状态和用户的操作,一盏作为运行指示灯常闪,另一盏作为故障指示灯常亮.蜂鸣器在进入识别范围的卡不能被系统接受时报警提示.如图4所示,指示灯及蜂鸣器构件通过GPIO引脚与K60连接.
图4 终端构件Fig.4 Terminal component
K60控制器主函数按以下顺序编程:系统上电初始化,关总中断,对串口、SPI2口、USB、TRF7960等构件初始化,开串口中断和SPI中断,开总中断.主循环包括指示灯状态循环控制和寻卡操作,其流程如图5所示.上位机以中断方式与K60的串口通信,TRF7960射频芯片通过中断方式与K60的SPI2口进行数据传输,因此需开串口和SPI2口的中断.K60对TRF7960进行初始化时通过设置ISO控制寄存器(地址0x01h)的protocol参数可以选择不同ISO协议.当protocol为0x01时,选择ISO/IEC15693协议;当proto2col为0x02时,选择ISO/IEC14443A协议;当protocol为0x03时,选择ISO/IEC14443B协议.
图5 主函数流程图Fig.5 The flow chart of main function
为适应不同的应用场合,寻卡操作有2种模式,自动寻卡模式和上位机命令模式.自动寻卡模式不接收上位机的命令,如果有效磁场区域内有符合协议标准的电子标签,读写器就会识别标签的UID号,并将UID传送给上位机,适合对标签进行自动化固定操作,如会议签到、自动收费等.上位机命令模式是通过读卡器与上位机采用的一问一答的方式工作.读写器一直处于等待上位机命令的状态,只有接收到一个完整的操作命令数据包,读写器才去执行相应的操作,并将操作结果传给上位机,适用于对电子标签进行读写操作的场合,如开户、充值、注销等.
考虑到如果在RFID读卡器的工作范围内同时存在多张标签,则有可能发生多标签冲突的现象,因此在设计时加入防碰撞算法实现程序.TRF7960射频芯片可支持多种协议,虽然不同协议采集标签信息的方式不相同,防碰撞算法也各不相同,但是都可以通过设置TRF7960的内部相关寄存器实现多标签防碰撞功能[8].这里仅给出ISO15693协议的16时隙防碰撞算法流程(图6).读卡器发送inventory(清点)命令选择开辟16个时隙,按照递归查询方式,第1轮掩码值等于0,掩码长度为0.UID(标签的唯一标识码)的最低有效位与时隙号和掩码值的和相比较,在某个时隙如果匹配的标签只有1张,表明无多标签碰撞,读卡器识别出一张标签并且产生一个接收完(End OF RX)中断;如果匹配的标签有多张,表明多标签碰撞,则进入第2轮查询.第2轮查询时掩码值等于0,加上发生碰撞的时隙号,掩码长度为4.UID的最低有效位与时隙号左移4位加上掩码值相比较,有碰撞则再进行下一轮循环,依次类推直到所有标签被识别.
图6 防碰撞算法流程图Fig.6 The flow chart of anti-collision algorithm
遵循构件化的设计思想,调用各个软件构件时只需了解其接口函数的功能及参数.各个软件构件接口函数如表1所示.
表1 构件接口函数Table 1 The interface function of components
本文基于飞思卡尔的Kinetis 60系列微控制器和TI公司的13.56 MHz频段射频芯片TRF7960,提出了一种面向3种协议、具有多种接口和多标签防碰撞功能的RFID读卡器设计方案.同时为了提高软硬件的可重用性和可移植性,采用了构件化的封装方法,给出了软硬件构件的模型和接口说明.它为多协议、多标签RFID读卡器开发提供了一个快速、通用的模型.
[1]DOU Y W,YIN Y,WANG J W.Research and Design of RFID Middleware on Hierarchy[J].激光与光电子进展,2012,49(5):1-4.
[2]朱仕浪,王宜怀,冯德旺,等.基于流水线和RFID技术的快速门禁系统[J].福建农林大学学报:自然科学版,2013,42(5):552-556.
[3]薛涵,冯攀,陈鹏飞,等.支持多协议的13.56MHz RFID读卡器芯片解调电路设计与实现[J].固体电子学研究与进展,2012,32(2):155-159.
[4]张捍东,张淳.一种适合多协议防碰撞的射频识别阅读器设计[J].电子技术应用,2009(6):43-46.
[5]张吉婷,李泽滔.基于TRF7960的读写器的设计[J].中国新技术新产品,2012(18):11-13.
[6]王宜怀,吴瑾,蒋银珍.嵌入式系统原理与实践[M].北京:电子工业出版社,2012:29-32.
[7]Texas Instruments.TRF7960 DATASHEET[EB/OL].[2010-08-01].http://www.ti.com.cn/cn/lit/ds/symlink/trf796 0.pdf.
[8]Texas Instruments.Implementation of the ISO15693 Protocol in the TI TRF796x[EB/OL].[2009-04-01].http://www.ti.com.cn/cn/lit/an/sloa138/sloa138.pdf.