|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/ x( I# `$ U$ C" D/ V8 `* f9 T7 z9 K7 b& f" Z- p. f
' D7 P6 }1 }0 c1 X: j
摘要:针对民用航空领域的应用需求,设计了一款基于S3C6410微处理器的RFID读卡器,给出了具体的硬件设计方案,详细介绍了LINUX下应用程序与底层驱动的工作流程,最后印证了系统运作的可靠性。该读卡器支持多种协议,支持LINUX操作系统,支持3.5寸触摸屏,可通过串口或者GPRS与上位机的SQL数据库通信,与其他采用单片机或者低主频ARM 微处理器的读卡器相比具有方便、快捷、用户体验良好等特性。
6 K) e. E9 c3 i7 l0 @2 x) f0 J7 `2 N+ ^: @% r
关键词:RFID RFID读卡器 电子标签 天线感应 射频驱动' C6 \+ q4 {" [: _
6 Q4 U! b) {; g0 引 言 随着国民经济的发展,航空日益成为民众所依赖的出行方式。航空货运物流系统中食品与商品种类多,安全要求高,交接手续繁杂,急需引入信息化管理,RFID技术的出现对于改善民航的物流管理有着积极的意义。航空物流RFID系统主要由电子铅封、读卡器和数据库管理系统等组成,现有的读卡器一般采用单片机系统(如STC89C54或MC9S12X128)或者STM32系列,它们的普遍缺点是:主频偏低,不支持操作系统且用户体验不佳,满足不了航空货运物流系统日益增长的应用需求。在航空食品和免税商品物流系统中,地勤与空乘人员急需操作简洁,反应快速,可随时通过无线网络上传数据的手持读卡器,从而加快物流速度,提高机场工作人员的工作效率。基于上述情况,提出了基于S3C6410的高主频的射频识别读卡器,它支持linux操作系统,支持多线程操作,操作人员可在多个读卡界面之间切换并且能随时随地通过GPRS上传数据到SQL数据库,不但大大降低机场工作人员的工作量,而且提高了航空物流的速度与安全性。
5 Y' L( o6 ^, _" E# I8 [. } X
" [6 c0 K( M2 K& \1 硬件设计方案 4 I7 N8 Y6 W, I
0 B! I6 _6 f" [8 i
系统结构如图1所示,系统采用了S3C6410微处理器,其稳定主频667MHz,最高主频可达800MHz.S3C6410集成了许多外设接口,如Camera接口、TFT-24bit真彩色LCD控制器、电源系统管理、4通道UART、32通道DMA、4通道定时器、通用I/O 端口、IIS、IIC 总线接口、USBHost、USB OTG(480Mbps)、3通道SD/MMC Host控制器及时钟生成PLL等。此外采用90nm COMS工艺,低功耗、简洁、精美且全静态设计使得S3C6410非常适合对成本、功耗敏感的应用。 $ L# f, S: N; T
- G. e& {+ j& t/ ~, N
系统的显示屏采用3.5寸24位的真彩触摸TFT-LCD,分辨率最大可支持到1 024×1 024,本读卡器的分辨率为480×272.存储外设为Nand flash、24C64 和SD 卡。 5 l6 c# Z* s$ f- S" n- M3 W
0 q8 D" X" n/ ELINUX的Uboot、内核、开机图片和文件系统都烧写到nand flash中,24C64用于保存触摸屏校正参数和从电子标签中读取的数据。系统启动时S3C6410自动从24C64中读取校正参数,避免每次开机需校正屏幕。SD卡用于储存从电子铅封中读取的数据,此外汉字库与图标等文件也存放在SD卡中。
! |% I, ^ X. j8 D, ~) [2 r' v+ `' n8 _+ n: W
V2 n* L7 H0 |4 ]7 m
+ \0 Q. {2 v# ^ m' {# T图1 系统结构
2 ?4 g7 C4 J! O u# ^1 o' e
1 W/ T* K3 ^( @' H& j. KS3C6410通过串口1驱动GPRS模块(SIM300)与上位机SQL数据库进行无线通信。SIM300是一款3频段GSM/GPRS模块,可在全球范围内的EGSM 900 MHz、DCS 1 800MHz、PCS 1 900MHz 3种频率下工作,能够提供GPRS多信道类型多达10个,并且支持CS-1、CS-2、CS-3和CS-4 4种GPRS编码方案。
t8 @# d, y' G% C" C, o
- S: N! G7 ^' l' q7 c9 l. j' u0 X射频芯片采用NXP公司的CLRC632,它是一款针对13.56MHz的高集成无线射频IC,其管脚与MF RC500,MF RC530,MF RC531和SL RC 400均可兼容,可读写符合ISO14443协议的Type A 卡和Type B 卡,以及支持ISO15693协议的电子标签。RC632提供了2种通信接口,第一种是8位并口,可直接与各种8位微处理器相连接;第二种是SPI接口,本系统即采用了此通信接口,微处理器通过设置RC632的寄存器,便可实现射频操作(见图2)。
$ \2 n+ J4 {; O: ]. W1 O0 e6 ]: s7 t. o
, @( D6 L3 z* p, t9 M) O
/ A8 E' u3 e; I- N图2 CL RC632原理 7 t! a9 L0 o+ x7 W$ A% W( M. O) j
8 U4 W7 z, H$ [* y J/ c \! u( B% HSPI总线是一种高速全双工同步的通信总线,它使用4条线:MISO 、MOSI、SCLK 、CS.其主要特点有:同时发出和接收串行数据;可当主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。 / [: y) t/ p. @8 d, W/ f% G) h. _& [* y3 l
* n8 o( t* ]. J# ? [8 C# R2 @RC632总共有32个管脚,其中管脚22、23、24是寄存器的地址线,管脚13到管脚20是8位并口。当采用SPI方式通信时,管脚13即数据位D0为MISO,管脚22即地址线A0为MOSI,管脚24即地址线A2为CLK,D1到D7则不需要连接。此外,必须把A1与NCS置底电平,NRD与NWR置高电平。 - s7 b3 t! M! h+ |
% A' J. f! f, c+ b( URC632与天线之间通过3个管脚DTX1、DTX2与DRX进行通信,它会把调制好的13.56MHz的能量载波通过管脚DTX1、DTX2传输到天线,而天线则通过管脚DRX把13.56MHz的能量载波传输回RC632.一般采用2种方法将天线连接到RC632:直接匹配天线和50Ω匹配天线,本系统采用直接匹配的方式将RC632与天线连接,其包括了EMC低通滤波器、天线匹配电路与接收电路。
8 w, W3 f' X, ]
7 s6 m b) J# ?5 U系统采用PCB环形天线,它的EMC低通滤波器用于滤除高频电磁波,天线匹配电路与天线进行阻抗匹配,以获得最大的功率传输,增大读卡距离,同时避免阻抗失配可能对电路造成的损害。经实测,天线的可操作距离为5~10cm.
3 {3 t: y% `! L0 @1 M/ C1 L( j. {, f9 x$ ~
2 读卡器的软件设计
# R6 h0 a; G" g4 I$ k, Q, m' s8 m+ t8 D$ k9 E3 Q; m
读卡器的操作系统采用较稳定的Linux-2.6.30内核,文件系统为yaffs文件系统。软件分为2大部分:第一部分为QT程序,主要的功能是接受用户指令与显示图形界面;第二部分为射频驱动程序,它负责对RC632的寄存器进行操作,实现具体的射频功能。在编写射频读卡的QT应用程序之后,需把它整合到yaffs文件系统中。此外,还需裁剪linux内核,把驱动配置到内核配置单中。 $ H* [2 U6 \4 ?. j! U, `& w G* }* w
4 ^8 ~ z6 E+ h; [
13.56MHz的RFID的典型协议有ISO-14443协议和ISO-15693协议。其中ISO-14443协议是非接触式IC卡标准协议,应用较ISO-15693更为广泛。下面将主要分析ISO-14443协议,ISO-14443由4个部分组成:第一部分,物理特性;第二部分,频谱功率和信号接口;第三部分,初始化和防碰撞算法;第四部分,通讯协议。 - u0 k) k% Z) Z1 ~2 R. w% N
, C" L' t5 r% P" LISO-14443通信协议的报文可分成6个部分,如表1所示: " \+ D0 S$ L6 L1 r/ O# m: _( m
/ p5 Z9 \! ~1 _+ v7 I) Q表1 ISO-14443通信协议的报文数据格式 & q2 E7 e, O9 s( E6 r
Y8 m( o5 r7 g, I m; G g* ~
9 P7 R0 t% k/ R
( K0 [3 p% Y7 q B6 k! k( W( p报头2字节固定为AABB,报文长度代表从节点到校验的字节之和,命令代码指明了报文的功能。常用的命令代码有0201(寻卡)、0202(防冲突)、0203(选卡)、0206(密码认证)、0208(读卡)、0209(写卡)等。
1 E, U6 [9 Z5 |6 i/ P* f: [2 t9 Y9 ~8 l9 n% Q
QT程序在启动后,会在TFT-LCD上显示一系列的图标,分别为:寻卡、读卡、写卡、选择扇区等,在寻卡中包含了防冲突检测,它是读卡过程中非常重要的一个步骤[10-11].其流程如下,当用户点击TFT-LCD的寻卡图标时,触摸屏上会产生触摸点的位置信号,系统根据触摸点坐标判断其所在的区域,依据触摸的区域,系统做出相应的处理。QT程序把ISO-14443协议中的寻卡(0201),防冲突(0202),选卡(0203),密码认证(0206)都整合到1个子函数中。寻卡过程分为4个过程: - c. z7 \& L, C# h' s6 \1 O
/ K+ Y9 `5 a% s8 T0 |6 z
1)搜索标签-即S3C6410通过串口1发送指令给RC632操作其中的相关寄存器进行天线操作。无论是否有卡在天线感应区域范围之内,RC632都会S3C6410回传相关数据,S3C6410收到数据后,进行判断是否有电子标签存在。 $ [/ R4 F& y! L! C& D
# K& m% C1 _) ]* J( I; R8 W1 V
2)防冲突-如果在天线感应区域范围之内有一张以上的电子标签,那么读卡器就需要进行选择。RC632在防冲突后,将给微处理器传回4个字节的电子标签卡号。
) j- M9 U ]0 D* g: V
1 J% h+ L; x+ Y0 u, g' U8 `& Z/ f" L: h3)选择标签-如果要对相应卡号的电子标签进行操作,则微处理器就会发送命令给RC632,使其选中这张电子标签,以便进行下一步的读写操作。
- O/ ^0 R5 E' ?1 p9 ]1 | C. }4 u5 y3 H( C2 h
4)密码认证-只有拥有正确密码的读卡器才能读写相应的电子标签。
3 Y: ?) U4 \% ?8 J* o. s/ C
1 w. p/ I0 l) y& I% w3 _1 _& F选择扇区后,如进行读卡操作,则直接点击读卡图标,如进行写卡操作的话,则还需用输入数据。如图3所示。 0 Y5 X3 p }9 A
0 a1 \, M: G1 P3 h
! c' `3 R0 u- q# X' q8 h c" x
! [* z) g: b `2 k/ W图3 QT应用程序流程
) c" z3 ?6 N# f8 d) w: T8 C, {射频驱动程序在收到应用程序发来的报文后,除去报头与校验位,通过case语句判断命令代码,然后跳转到相应的子程序,子函数通过驱动程序对RC632的寄存器进行设置,实现射频操作。读取RC632数据时,MOSI线的第一个字节设置模式与地址:具体来说,第0位设置为1,第1位到第6位为地址,第7位设置为0,MOSI线的其他字节均按此设置。MISO线的第一个字节保留,从第二个字节开始为从RC632返回的数据。对RC632写入数据时,MOSI线的第一字节代表地址,从第二个字节开始为写入RC632的数据,此时MISO线没有启用。
* Z+ F, e( R! A& K ?' y3 k4 U; n! o. j- i
驱动RC632时,首先设置信道校验寄存器,把第0,2比特置1(启用奇偶校验与CRC校验),然后把控制寄存器第3比特清零(不启用数据加密),接着把0x07写入比特结构控制器,最后一步是设置发射控制寄存器为0x03(在管脚TX2发送未经调制的13.56MHz连续载波)。设置完寄存器状态后,RC632便可与电子铅封进行通信。通信过程中的寄存器操作包含以下几个步骤:
# [- R: u- b9 a% v
( O8 A: c E% w4 M1)置中断使能与中断请求2个寄存器为0x07,设置命令寄存器,取消当前命令;2)清除FIFO BUF读写指针(即FIFO[6:0]清零),设置中断使能寄存器,提示标志位已经设置;3)依次把数据写入到FIFO BUF,把数据从天线发送出去;4)设置命令寄存器,激活要执行的命令,读取错误标志寄存器,判断是否出错;5)等待规定的时间,然后读FIFO BUF,把天线接收的数据读取到RC632中;6)置中断时能与中断请求2个寄存器为0x07,设置控制寄存器,停止定时器,设置命令寄存器,取消当前命令。 8 }' Z* K- y' b1 T: ~- y
" r2 O: Q0 k: K! T6 \) o, ~8 c) _
3 现场实测和上位机SQL数据库通信实例
. h% y& X) }( M7 p
, C6 i( e1 k) a( E1 |& h在现场测试过程中,分别对电子铅封的扇区4,扇区16,扇区33各进行了20次操作,其中只有对扇区16的一个写过程中出现了数据丢失情况,这显示出了稳定的操作性能。表2是读卡器对货物的电子铅封进行数据写入与读出的实例:先写入内容11220003,然后再把写入的内容读出,其操作的扇区为04号,设置密码为FFFFFFFFFF. 8 r3 n5 `: B5 Y3 w# o* w" y- C
( A1 } b; O2 X; U4 t0 [+ L
读出的数据传输到上位机SQL 数据库后的界面如图4所示。
1 A' j3 s# U" S) G' S T+ D6 W2 o) q: ^4 C
+ u9 B! Z m% F2 ^' T表2 现场实测电子铅封读写数据 1 R1 K+ N( V, {# L9 U. y8 U
7 s' l8 V( k+ A3 M) k4 h( ]+ v
6 F6 @ W, k& d' h* L, _$ m" f8 t
" {. ~) Y; ?6 [
) L* G |7 A7 C& Q2 M, Z" o5 O+ A' l+ G) I# c1 i# P
$ \2 y* z( D" i) L
图4 数据传输到数据库的界面
) A5 K! k0 i/ A. l& a# [9 c3 a; U8 j2 x8 w" V4 `, y. T+ z' Z2 X" S! |
4 结 论
0 }; t# Q" A" k" A/ a5 `2 n+ |9 U. r, q0 f
提出了基于S3C6410微处理器的高主频射频识别读卡器,实现了读卡、写卡与上传数据到数据库的功能。实验表明该读卡器具有良好的稳定性与实用性,适合于民用航空领域的应用。该读卡器系统对于民航物流的发展提高具有一定的参考价值和应用前景。
3 ^' ~% I* B& M' @7 S7 i. |7 j- M
# k8 c0 h, x K1 w; T# U; C# y' B9 x4 \3 e( p6 [
|
|