S3C6410和CR95HF的RFID读卡系统解析

发布者:technology1最新更新时间:2018-02-04 来源: eefocus关键字:S3C6410  CR95HF  RFID读卡系统 手机看文章 扫描二维码
随时随地手机看文章

内容摘要:针对目前读卡器主频低、速度慢、便携性差等不足,提出了一种基于S3C6410的RFID读卡系统设计方案。本文以高性能的S3C6410嵌入式微处理器为核心,选用新型的CR95HF射频芯片,开发设计了一款高主频的搭载Android嵌入式系统的新型手持式RFID读卡器。该读卡器工作在高频13.56 MHz,支持ISO14443、ISO15693等多种协议。实验证明,该读卡器能对符合协议的标签进行读写操作,读写距离能够满足需要,具有便携、稳定性高、处理速度快等特点。


    引言

    射频识别(RFID)是一种新兴的通过射频载波来发现目标和进行无线数据交换的识别与跟踪技术。RFID与其他技术相比,具有识别速度快、抗干扰能力强、安全性高、非接触等优点。因此该技术已广泛应用于门禁系统、物流配送、校园卡等多种日常生活,作力物联网关键技术,未来的发展潜力巨大。但是现有的读卡器普遍存在主频低、处理速度慢、便携性差等缺点,难以满足日益发展的使用需求。针对这些不足,本文基于高主频、性能强悍的S3C6410嵌入式微处理器,选用新型的CR95HF射频芯片,开发设计了一款工作在高频13.56 MHz的手持式RFID读卡器,同时创新性地搭载新兴的Android嵌入式系统,支持ISO14443、ISO15693等多种协议,处理速度快且准确度高。

    1 系统结构与工作原理

    本文设计的嵌入式RFID读卡系统由微处理器、触摸屏、电源、射频、存储、天线等组成。整体结构如图1所示。

S3C6410和CR95HF的RFID读卡系统设计

    读卡器要求处理速度快,能够实时显示信息,因而选用性能强悍、功耗极低的S3C6410嵌入式微处理器作为核心,其基于先进的ARM11内核,烧写Android嵌入式系统。射频芯片采用ST公司的新型非接触芯片CR95HF,与微处理器之间通过串口进行通信。工作原理为:读取标签数据时,将标签靠近读卡器,触摸屏操控端传输读命令给S3C6410,其操控射频模块将该命令发送给标签,标签收到后将所需数据返还给读卡器显示;执行写入操作时,S3C6410收到触摸屏写命令后操控射频模块向标签写入数据。

    2 系统硬件设计

    2.1 微处理器外围和电源电路设计

    本设计采用三星公司的S3C6410嵌入式微处理器作为主控芯片,其主频高达667 MHz,是一款基于ARM11内核的高性能RISC处理器。S3C 6410包括电源管理、串口、SPI、I2C总线、USB和I/O等多种硬件接口,具有性能强悍、处理速度快且功耗低等优点,能满足系统的设计需要。并行使用2片128M DDR芯片K4X1G163PC来实现256M的RAM电路。主控芯片利用串口和射频模块通信,并通过USB接口和上位机通信。

S3C6410和CR95HF的RFID读卡系统设计

    系统设计了5 V直流和3.7 V锂电池两种方式供电来满足读卡器手持需求,并用跳线帽选择。锂电池供电时读卡器能手持使用。系统电源需要5 V和3.3 V两种。3.7 V锂电池通过升压芯片转化为5V,之后通过稳压芯片LM1117转换为3.3 V给微处理器、射频芯片供电。直流电源供电时通过LM1117就能完成供电。LM1117能支持接近1 A的大电流输出,其电路如图2所示。输入为VCC5,输出为VCC3.3.C1~C4为去耦电容,用于消除电源引脚自激,保持电源稳定。

    2.2 射频电路及匹配网络设计

    本文设计的读卡器射频芯片采用CR95HF,其是ST公司具有SPI和串口的高频13.56 MHz新型收发器芯片,支持ISO14443、ISO15693、ISO 18092等多种协议,主要用于RFID和NFC近场通信。射频电路如图3所示,CR95HF利用串口与微处理器通信,其串口引脚为UART_TX和UART_RX。将SSI_0、SSI_1接地置0来实现串口模式。上拉电阻R5、R6将电平钳制在高电平,并起到限流保护作用。C2、C5为去耦电容。两个TX和RX引脚连接匹配网络和天线。

S3C6410和CR95HF的RFID读卡系统设计

    匹配网络设计时首先通过0 Ω电阻和不焊的接地电容来构成低通滤波器抑制高次谐波,之后设计匹配电容。采用PCB矩形天线,由于其与匹配网络等效电容构成13.56 MHz的LC谐振电路,从而可以得到电感参数进行天线设计。设计PCB时注意将电源线加宽并与射频部分隔离,尽量缩短射频电路之间的连线长度,并减少回路面积来防止PCB各线路的信号串扰和电磁干扰(EMI),提高制板的稳定性。

    2.3 触摸屏与存储电路

    读卡器采用4.3寸、分辨率为272×480的LCD液晶屏,能够实现良好的界面显示。屏幕为电阻触摸屏,利用24条I/O口与微处理器通信来显示信息。微处理器通过10条控制I/O口和屏幕相连来实现控制功能。

S3C6410和CR95HF的RFID读卡系统设计

    内核代码、显示数据、应用程序和读取的标签信息均需要存储,因而读卡器设计了FLASH和SD卡。FLASH选用K9G8G08U0A芯片,1GB容量,利用片选信号CSN2控制,用来存储内核代码与应用软件。SD卡容量为8GB,和微处理器通过高速MMC接口相连,用来存储显示数据和标签信息,其电路如图4所示。时钟引脚为MMC0_CLK,MMC0_CDN、MMC0_WPN、MMC0_CMD为控制引脚,用来控制SD卡读写。R17~R24为上拉电阻,MM C0_DATA0~MMC0_DATA3为数据通信引脚,用来传输读写数据。

    3 系统软件设计

    3.1 嵌入式系统移植

    本读卡器移植嵌入式Android 2.3操作系统并开发RFID应用软件。Android是谷歌公司推出的基于Linux内核的手机操作系统,是一种真正开源且功能强大的嵌入式移动系统,采用软件堆层架构。嵌入式系统移植如图5所示。PC机通过arm-linux-gcc交叉编泽工具构建开发环境,编译Uboot生成烧入FLASH引导程序,编译Linux内核生成Android所需的底层映像zImage,并裁减、编译Android源码生成根系统rootfs. yaffs2,将以上文件导入SD卡来实现系统的移植和烧写。


S3C6410和CR95HF的RFID读卡系统设计

    3.2 读卡器驱动设计

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

S3C6410和CR95HF的RFID读卡系统设计

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

S3C6410和CR95HF的RFID读卡系统设计

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

    3.3 数据处理

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

S3C6410和CR95HF的RFID读卡系统设计

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

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

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

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

    3.4 人机交互界面软件设计

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

    4 系统测试

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

S3C6410和CR95HF的RFID读卡系统设计

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

    结语

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


关键字:S3C6410  CR95HF  RFID读卡系统 引用地址:S3C6410和CR95HF的RFID读卡系统解析

上一篇:基于STM32的加密录音笔设计分析
下一篇:嵌入式LonWorks网络智能网关设计解析

推荐阅读最新更新时间:2024-03-16 15:54

linux中触摸屏驱动的实现(3)——基于s3c6410处理器
1、上一篇分析的是两个中断处理函数中的其中一个触摸屏中断,现在来分析另外一个ADC中断,对应的中断函数是stylus_action。当触摸屏在自动X/Y位置转换模式和独立的X/Y位置转换模式时,当坐标数据转换之后会产生IRQ_ADC中断,进而调用stylus_action函数,此函数源码如下: static irqreturn_t stylus_action(int irqno, void *param) { unsigned long data0; unsigned long data1; //printk( stylus_action.n ); data0 = readl(ts_base+S3C_ADCDAT0);
[单片机]
Linux2.6.36移植到飞凌S3C6410开发板 步骤
今天终于让linux内核在飞凌ok6410的板子上跑起来了,想来也是艰辛,为了移植成功,断断续续做了将近两个月的努力,期间郁闷不可言语形容啊, 了解其中艰辛,将自己移植步骤与心得与大家分享,希望对初踏次领域之人有所帮助,我所写的成果一部分也是网上前辈的所作,并非本人原创。 一、 移植环境 主 机:VMWare-Ubuntu 开发板:飞凌OK6410 nandflash,Kernel:2.6.36.2 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-1.1.6 注:编译器和u-boot 都是飞凌开发板自带的 二、 源码获得 内核源码到http://www.all.kernel.org
[单片机]
深入理解ARM体系架构(S3C6410)---S3C6410复位
reset S3C6410X has three types ofreset signals and SYSCON can place the system into one of three resets. Hardware reset: It isgenerated by asserting XnRESET. It is an uncompromised, ungated, total andcomplete reset that is used when you do not require information in system anymore. It fully initializes all system.
[单片机]
深入理解ARM体系架构(<font color='red'>S3C6410</font>)---<font color='red'>S3C6410</font>复位
S3C6410存储器、地址映射与芯片启动
S3C6410第一章 存储器、地址映射与芯片启动简介 在尚观听了一阵课了,收获目前还算一般,并没有特别兴奋的点。截止今日ARM内容已经结束,有些课并不是很有兴趣去听。根据本人一向颇为难以理解的习惯,当时不听事后琢磨,现在是仔细写下东西的时候了。那么,也不嫌再多单片机文档的繁琐,重新开始这个从裸机到U-BOOT的小过程。 目前我们使用的是ARM11核心的三星S3C6410作为处理器。事实上不搭系统就是单片机的类型,起码我一直是这么称呼的。深深的希望内核驱动课程给我以启发,否则就太无趣了。 很显然,我们的S3C6410微处理器是封装了ARM1176JZF-S的核,关于ARM11另开博文再讲自己的学习,这里仅仅针对高一层的641
[单片机]
<font color='red'>S3C6410</font>存储器、地址映射与芯片启动
基于S3C6410的ARM11学习(三) 核心初始化之设置中断向量表
前面将流程搞清楚后,下面就开始进行按照顺序来编写程序了。 第一步就是进行中断向量表的设置。在ARM11中,中断向量表叫做异常向量表。 ARM11共有10种异常,这个在ARM11的datasheet中有。 这里说明一下: 异常 说明 详细说明 Reset 复位异常 当系统刚上电,或者按下复位键时候,触发这个异常,这个时候,程序跳转到这个地址处执行程序 undefined_instruction 未定义指令异常 当程序执行发现有一条指令是未定义的指令,会触发这个异常,这个时候,程序跳转到这个地址处执行程序 software_interrupt 软中断异
[单片机]
基于<font color='red'>S3C6410</font>的ARM11学习(三) 核心初始化之设置中断向量表
S3C2440、S3C2450和S3C6410之间区别
S3C2440其实是一个很不错的CPU,价格便宜、内部资源多、最主要的是国内很多人使用,相关的资料比较多。ARM920T内核, 400M主频,支持NAND FLASH、NORFLASH、SDRAM、支持STN/TFT LCD、4通道DMA、3通道UART、2通道SPI、IIC总线、IIS/AC97音频控制器、SD/MMC控制器、2通道USB HOST 1通道USB DEVICE、4通道PWM、8通道A/D转换、触摸屏控制器、RTC、CMOS摄像头、多功能IO及多种电源管理。 CPU:分2个版本,S3C2440A-30 300MHz主频,S3C2440A-40 400MHz主频,最高可以达到533 MHz主频,这两个版本没有太大区
[单片机]
基于S3C6410的ARM11学习(六) 核心初始化之关闭所有中断
上一次,我们完成了核心初始化之关闭看门狗了。下面就要关闭所有中断了。因为这个时候还在初始化整个硬件环境,应用程序还没有开始跑,所以是不希望有中断产生来打断CPU工作的。 中断是嵌入式系统中很重要的东西了。因为有了这个东西,可以使CPU解放出来,做更多的事。 学单片机的时候,对于按键,我们可以采用轮询检测,隔一段时间就去检测看看按键有没有按下,有按下的话就进行处理。没有的话就跳过。而使用外部中断后,就不必检测了,外部中断会自动检测,就不用CPU检测了。当外部中断有效后,外部中断模块就会产生一个中断源给CPU,CPU检测到这个中断源,再去执行对应的中断处理函数。比轮询法效率 要高很多了。 至于S3C6410的中断的具体的一
[单片机]
基于<font color='red'>S3C6410</font>的ARM11学习(六) 核心初始化之关闭所有中断
基于S3C6410的ARM11学习(十四) 终于到main了
基本上qboot的第一阶段的汇编开发已经结束了,c的环境已经设置好了,下面就要进行c语言的程序开发了。学过c语言的都知道,程序运行的第一个函数就是main函数。不过在嵌入式中,这个第一个函数可就不一定就是main函数了,也可以是其他函数了。在我的设计中,这c语言的入口函数就是qmain函数。 在这个qmain函数中,实现一个流水灯。 直接在汇编部分实现了怎么让灯闪烁,只要对对应的寄存器进行配置就好了。怎么用c语言来对寄存器进行配置了,这个时候就要使用c语言中强大的指针了。例如,要对地址0x5000_0000进行写操作。 只要定义一个指针: unsigned long *p = (volatile unsigned lo
[单片机]
基于<font color='red'>S3C6410</font>的ARM11学习(十四) 终于到main了
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved