S3C6410和CR95HF的RFID读卡系统设计*
2014-09-06刘占杰张艳赵阳
刘占杰,张艳,赵阳
(天津大学 电子信息工程学院,天津 300072)
S3C6410和CR95HF的RFID读卡系统设计*
刘占杰,张艳,赵阳
(天津大学 电子信息工程学院,天津 300072)
针对目前读卡器主频低、速度慢、便携性差等不足,提出了一种基于S3C6410的RFID读卡系统设计方案。本文以高性能的S3C6410嵌入式微处理器为核心,选用新型的CR95HF射频芯片,开发设计了一款高主频的搭载Android嵌入式系统的新型手持式RFID读卡器。该读卡器工作在高频13.56 MHz,支持ISO14443、ISO15693等多种协议。实验证明,该读卡器能对符合协议的标签进行读写操作,读写距离能够满足需要,具有便携、稳定性高、处理速度快等特点。
S3C6410;RFID;读卡器;CR95HF;Android;嵌入式系统
引 言
射频识别(RFID)是一种新兴的通过射频载波来发现目标和进行无线数据交换的识别与跟踪技术[1]。RFID与其他技术相比,具有识别速度快、抗干扰能力强、安全性高、非接触等优点[2]。因此该技术已广泛应用于门禁系统、物流配送、校园卡等多种日常生活,作为物联网关键技术,未来的发展潜力巨大[3]。但是现有的读卡器普遍存在主频低、处理速度慢、便携性差等缺点,难以满足日益发展的使用需求。针对这些不足,本文基于高主频、性能强悍的S3C6410嵌入式微处理器,选用新型的CR95HF射频芯片,开发设计了一款工作在高频13.56 MHz的手持式RFID读卡器,同时创新性地搭载新兴的Android嵌入式系统,支持ISO14443、ISO15693等多种协议,处理速度快且准确度高。
1 系统结构与工作原理
本文设计的嵌入式RFID读卡系统由微处理器、触摸屏、电源、射频、存储、天线等组成。整体结构如图1所示。
图1 RFID读卡系统结构
读卡器要求处理速度快,能够实时显示信息,因而选用性能强悍、功耗极低的S3C6410嵌入式微处理器作为核心,其基于先进的ARM11内核,烧写Android嵌入式系统。射频芯片采用ST公司的新型非接触芯片CR95HF,与微处理器之间通过串口进行通信。工作原理为:读取标签数据时,将标签靠近读卡器,触摸屏操控端传输读命令给S3C6410,其操控射频模块将该命令发送给标签,标签收到后将所需数据返还给读卡器显示;执行写入操作时,S3C6410收到触摸屏写命令后操控射频模块向标签写入数据。
2 系统硬件设计
2.1 微处理器外围和电源电路设计
本设计采用三星公司的S3C6410嵌入式微处理器作为主控芯片,其主频高达667 MHz,是一款基于ARM11内核的高性能RISC处理器。S3C6410包括电源管理、串口、SPI、I2C总线、USB和I/O等多种硬件接口,具有性能强悍、处理速度快且功耗低等优点[4],能满足系统的设计需要。并行使用2片128M DDR芯片K4X1G163PC来实现256M的RAM电路。主控芯片利用串口和射频模块通信,并通过USB接口和上位机通信。
系统设计了5 V直流和3.7 V锂电池两种方式供电来满足读卡器手持需求,并用跳线帽选择。锂电池供电时读卡器能手持使用。系统电源需要5 V和3.3 V两种。3.7 V锂电池通过升压芯片转化为5 V,之后通过稳压芯片LM1117转换为3.3 V给微处理器、射频芯片供电。直流电源供电时通过LM1117就能完成供电。LM1117能支持接近1 A的大电流输出,其电路如图2所示。输入为VCC5,输出为VCC3.3,C1~C4为去耦电容,用于消除电源引脚自激,保持电源稳定。
图2 电源转换电路
2.2 射频电路及匹配网络设计
本文设计的读卡器射频芯片采用CR95HF,其是ST公司具有SPI和串口的高频13.56 MHz新型收发器芯片,支持ISO14443、ISO15693、ISO18092等多种协议,主要用于RFID和NFC近场通信[5]。射频电路如图3所示,CR95HF利用串口与微处理器通信,其串口引脚为UART_TX和UART_RX。将SSI_0、SSI_1接地置0来实现串口模式。上拉电阻R5、R6将电平钳制在高电平,并起到限流保护作用。C2、C5为去耦电容。两个TX和RX引脚连接匹配网络和天线。
图3 射频电路
匹配网络设计时首先通过0 Ω电阻和不焊的接地电容来构成低通滤波器抑制高次谐波,之后设计匹配电容。采用PCB矩形天线,由于其与匹配网络等效电容构成13.56 MHz的LC谐振电路[6],从而可以得到电感参数进行天线设计。设计PCB时注意将电源线加宽并与射频部分隔离,尽量缩短射频电路之间的连线长度,并减少回路面积来防止PCB各线路的信号串扰和电磁干扰(EMI),提高制板的稳定性。
2.3 触摸屏与存储电路
读卡器采用4.3寸、分辨率为272×480的LCD液晶屏,能够实现良好的界面显示。屏幕为电阻触摸屏,利用24条I/O口与微处理器通信来显示信息。微处理器通过10条控制I/O口和屏幕相连来实现控制功能。
内核代码、显示数据、应用程序和读取的标签信息均需要存储,因而读卡器设计了FLASH和SD卡。FLASH选用K9G8G08U0A芯片,1 GB容量,利用片选信号CSN2控制,用来存储内核代码与应用软件。SD卡容量为8 GB,和微处理器通过高速MMC接口相连,用来存储显示数据和标签信息,其电路如图4所示。时钟引脚为MMC0_CLK,MMC0_CDN、MMC0_WPN、MMC0_CMD为控制引脚,用来控制SD卡读写。R17~R24为上拉电阻,MMC0_DATA0~MMC0_DATA3为数据通信引脚,用来传输读写数据。
图4 SD卡电路
3 系统软件设计
3.1 嵌入式系统移植
本读卡器移植嵌入式Android 2.3操作系统并开发RFID应用软件。Android是谷歌公司推出的基于Linux内核的手机操作系统,是一种真正开源且功能强大的嵌入式移动系统,采用软件堆层架构[7-8]。嵌入式系统移植如图5所示。PC机通过arm-linux-gcc交叉编译工具构建开发环境,编译Uboot生成烧入FLASH引导程序,编译Linux内核生成Android所需的底层映像zImage,并裁减、编译Android源码生成根系统rootfs.yaffs2,将以上文件导入SD卡来实现系统的移植和烧写。
图5 嵌入式Android系统移植
3.2 读卡器驱动设计
读卡器软件主要由底层驱动、数据处理及交互界面组成。微处理器和射频芯片通过串口通信,串口驱动的开发使用Android NDK将Linux的C函数通过JNI接口生成相应的.so动态链接库供Java语言开发的安卓软件使用。由于数据采用十六进制传输,因而串口通信需要配置为原始数据输入/输出。为提高通信速率,本文采用高速波特率921 600 b/s,并通过奇偶校验有效降低了误码率,修改寄存器实现了8数据位的传输,较传统7数据位速率提升1/8,主要C代码如下:
newtio.c_lflag &= ~(ICANON|ECHO|ECHOE|ISIG);
//以原始数据(十六进制)输入
newtio.c_oflag &= ~(OPOST); //以原始数据输出
newtio.c_cflag |= (CLOCAL|CREAD); //使能串口接收
newtio.c_cflag &= ~CSIZE;
newtio.c_cflag |= CS8; //选用8数据位
newtio.c_iflag |= (INPCK ); //配置实现8数据位加偶校验
newtio.c_cflag |= PARENB; //偶校验
newtio.c_cflag &= ~PARODD;
cfsetispeed(&newtio, B921600); cfsetospeed(&newtio, B921600); //波特率921 600 b/s
CR95HF支持ISO14443、ISO15693等无线协议,根据协议标准调用串口函数和延时函数并加载数据来实现射频驱动。射频指令格式如图6所示。
由不同的CMD命令来选择不同协议,协议命令参见表1。
图6 射频指令格式
通信协议选择命令ISO144430202010DISO1569302020200
3.3 数据处理
图7 数据处理流程
读卡器需具有寻卡、防冲突和读写卡等功能。设置串口波特率和选择协议,防冲突来判断附近存在一张还是多张标签卡。根据所选CMD及返回结果对数据处理来实现读卡器和标签的无线通信,其处理流程如图7所示。
寻卡、防冲突后选择地址进行读写卡,每地址可存储32位数据,默认为ISO15693协议。由于原始数据输入/输出,因而收到信息后通过函数ByteArrToHex(byte[])转换为Hex字符串。
搜寻到标签卡后,卡的惟一标识符UID数据必须在Android读卡器软件里全局通用才能让读卡界面和写卡界面共同来操控该数据。
由于各个Activity界面数据均独立,而用传统的Intent类在多个界面间传输同一组数据操作繁琐且易发生数据冲突,本文通过Application类对接收到的标签卡信息存入数组RcvBuffer实现了全局共享。实现全局共享Java程序如下:
public class Application extends android.app.Application {
//采用Application类
private byte[] RcvBuffer=new byte[64];
//共享数组RcvBuffer;
public SerialPortFinder mSerialPortFinder = new SerialPortFinder();
//串口权限公有
public void setRcvBuffer(byte[] RcvBufferSet){
//将标签信息存入数组RcvBuffer
for(w=0;w<64;w++) this.RcvBuffer[w]=(byte)RcvBufferSet[w];
}
public byte[] getRcvBuffer(){
//得到数组RcvBuffer,实现全局共享
return RcvBuffer;
}
}
3.4 人机交互界面软件设计
Android界面开发通过XML布局文件和Java程序混合实现。设计时,在AndroidManifest.xml文件中注册所需界面并通过网格视图GridView来实现主界面的图片按钮显示。主界面包括设置、寻卡、读卡、写卡等功能按钮,选择后会通过Intent类调用相应的子界面组件Activity,其通过setContentView()函数来启动相应的XML。
4 系统测试
所开发的读卡器实物如图8所示,左侧为主体,右侧为天线。将RFID软件下载到读卡器后的测试结果如图9、图10所示。图9为选用4张支持ISO15693协议的标签放到读卡器附近时的寻卡结果,每个标签对应唯一的UID标识符,可见读卡器寻到了附近的所有标签。图10为读卡测试结果,选择UID和输入地址时能够成功读取到该地址的标签数据“AA1107FF”。可见读卡系统能够成功地与标签无线通信。
图8 读卡器实物图
图9 寻卡测试结果
图10 读卡测试结果
对读卡器寻卡和读写卡各测试了400次,只有1次发生数据丢失,表明读卡器稳定性非常高。经测试,无障碍物遮挡时读卡器读写距离至少为6.4 cm,有木板、书、皮革等障碍物时读写距离至少为5 cm,可见识别距离能够满足需要。同时对ISO14443协议的标签测试也表明读卡器可以对其稳定读写。
结 语
[1] Soodmand S, Brown T W C, Gluhak A. Evaluation of HF band NFC/RFID antennas for smart shelf applications[C]//2013 7th European Conference onAntennas and Propagation (EuCAP). IEEE, 2013: 1895-1898.
[2] 薛涵. 13.56MHz射频识别读卡器芯片接收子系统的设计与实现[D]. 武汉:华中科技大学,2012.
[3] 龚洁中,陈恭亮,李林森,等. 基于流密码的RFID安全认证协议[J]. 计算机工程,2012,38(18):126-129.
[4] Samsung Electronics Co., Ltd. S3C6410X Datasheet[EB/OL]. [2009-02-13]. http://www.samsungsemi.com.
[5] STMicroelectronics. CR95HF Datasheet[EB/OL]. [2012-07-31]. http://www.st.com/web/cn/catalog/mmc/FM76/CL1766/SC1540.
[6] Li Y, Liu J, Lee H. Ground switching load modulation with ground isolation for passive HF RFID transponders[J]. Very Large Scale Integration (VLSI) Systems, IEEE Transactions on, 2012, 20(8): 1443-1452.
[7] 肖文平,杨斌. 基于Android的车载导航系统的研究与设计[J]. 单片机与嵌入式系统应用,2012,12(4):67-70.
[8] 李琴,陈立定,任志刚. 基于Android智能手机远程视频监控系统的设计[J]. 电视技术,2012,36(7):134-136.
刘占杰、张艳(硕士研究生),主要研究方向为射频识别技术、嵌入式系统应用;赵阳(博士研究生),主要研究方向为无线射频定位技术、射频识别技术。
RFID Reader System Based on S3C6410 and CR95HF
Liu Zhanjie, Zhang Yan, Zhao Yang
(Electronic Information Engineering Academy, Tianjin University, Tianjin 300072, China)
For the lack of readers' weak performance, slow speed and poor portability, a design method of RFID reader system based on S3C6410 is proposed. Using S3C6410 microprocessor as a core, choosing CR95HF radio chip, a new kind of handled RFID reader is developed which performs at high frequency and runs Android OS. The reader works at 13.56MHz HF frequency, supporting ISO 14443 and ISO 15693 protocols. Experiment shows that the reader can read and write tags compiled with the protocols ,and the communication distance can meet the requirement. The reader has the features of portability, high stability and fast speed.
S3C6410; RFID; reader; CR95HF; Android; embedded system
天津市科技支撑计划重点项目(项目编号:10ZCKFGX03600)。
TN919
A
迪娜
2014-01-05)