新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > S3C6410和CR95HF的RFID读卡系统设计

S3C6410和CR95HF的RFID读卡系统设计

作者:时间:2016-09-12来源:网络收藏
S3C6410和CR95HF的RFID读卡系统设计

3.2 驱动设计

软件主要由底层驱动、数据处理及交互界面组成。微处理器和射频芯片通过串口通信,串口驱动的开发使用 NDK将Linux的C函数通过JNI接口生成相应的.so动态链接库供Java语言开发的安卓软件使用。由于数据采用十六进制传输,因而串口通信需要配置为原始数据输入/输出。为提高通信速率,本文采用高速波特率921 600 b/s,并通过奇偶校验有效降低了误码率,修改寄存器实现了8数据位的传输,较传统7数据位速率提升1/8,主要C代码如下:

S3C6410和CR95HF的RFID读卡系统设计

支持ISO14443、ISO15693等无线协议,根据协议标准调用串口函数和延时函数并加载数据来实现射频驱动。射频指令格式如图6所示。

S3C6410和CR95HF的RFID读卡系统设计

由不同的CMD命令来选择不同协议,协议命令参见表1。

3.3 数据处理

需具有寻卡、防冲突和读写卡等功能。设置串口波特率和选择协议,防冲突来判断附近存在一张还是多张标签卡。根据所选CMD及返回结果对数据处理来实现读卡器和标签的无线通信,其处理流程如图7所示。

S3C6410和CR95HF的RFID读卡系统设计

寻卡、防冲突后选择地址进行读写卡,每地址可存储32位数据,默认为ISO15693协议。由于原始数据输入/输出,因而收到信息后通过函数ByteArrToHex(byte[])转换为Hex字符串。

搜寻到标签卡后,卡的惟一标识符UID数据必须在读卡器软件里全局通用才能让读卡界面和写卡界面共同来操控该数据。

由于各个Activity界面数据均独立,而用传统的Intent类在多个界面间传输同一组数据操作繁琐且易发生数据冲突,本文通过Applicat ion类对接收到的标签卡信息存入数组RcvBuffer实现了全局共享。实现全局共享Java程序如下:

S3C6410和CR95HF的RFID读卡系统设计
S3C6410和CR95HF的RFID读卡系统设计

3.4 人机交互界面软件设计

界面开发通过XML布局文件和Java程序混合实现。设计时,在AndroidManifest.xml文件中注册所需界面并通过网格视图Grid View来实现主界面的图片按钮显示。主界面包括设置、寻卡、读卡、写卡等功能按钮,选择后会通过Intent类调用相应的子界面组件Activ ity,其通过setContentView()函数来启动相应的XML。

4 系统测试

所开发的读卡器实物如图8所示,左侧为主体,右侧为天线。将软件下载到读卡器后的测试结果如图9、图10所示。图9为选用4张支持ISO15693协议的标签放到读卡器附近时的寻卡结果,每个标签对应唯一的UID标识符,可见读卡器寻到了附近的所有标签。图10为读卡测试结果,选择UID和输入地址时能够成功读取到该地址的标签数据“AA1107FF”。可见读卡系统能够成功地与标签无线通信。

S3C6410和CR95HF的RFID读卡系统设计

对读卡器寻卡和读写卡各测试了400次,只有1次发生数据丢失,表明读卡器稳定性非常高。经测试,无障碍物遮挡时读卡器读写距离至少为6.4 cm,有木板、书、皮革等障碍物时读写距离至少为5 cm,可见识别距离能够满足需要。同时对ISO14443协议的标签测试也表明读卡器可以对其稳定读写。

结语

本文详细介绍了基于的新型嵌入式读卡系统解决方案。该读卡器工作在13.56MHz的高频频段并支持多种协议。经测试,该读卡器能对符合协议的标签进行稳定的读写,具有便携、性能强悍、功耗低等特点。本设计应用范围广,可用于航空物流行业等要求便携性强且处理速度快的场合。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭