1 硬件设计
终端硬件框图如图1所示,采用了三星公司的S3C2410为中央处理器,扩展的64MB SDRAM为程序运行空间,64MB NAND FLASH作为操作系统和应用程序的存储空间;选用MIFARE 1卡作为射频卡;相应地,选用广州周立功公司的ZLG500A读写模块作为卡与终端机交换数据的接口模块;采用了CS8900作为网络控制芯片,实现了终端的网络化;同时,用ZLG7290芯片实现了键盘的扩展,以及S3C2410内部的LCD控制器实现了TFT液晶显示的扩展[2]。
1.1 读卡模块硬件设计
ZLG500A非接触式IC卡读写模块,采用最新Philips高集成ISO14443读卡芯片MF RC500,能读写RC500内部EEPROM,提供串行接口,并具有控制线输出口,能与任何MCU方便地连接。ARM与其连接原理图如图2所示。
S3C2410与ZLG500A模块间的通信是典型的串口通信,双方只要通过串口发送遵循通信协议的数据,即可用ARM控制射频卡的读写。而在Linux操作系统下,串口通信具有统一的规范和格式,这使得软件具有很高的可扩展性和可移植性。
1.2 键盘接口硬件设计
键盘主要起到人机交互作用,本设计采用了ZLG7290键盘扩展芯片。该芯片具有I2C串行接口,能提供键盘中断信号,方便与处理器接口;可采样64个按键,可检测每个按键的连击次数,并具有键盘去抖动处理、双键互锁处理、连击按键处理等功能。其中ZLG7290的SCL和SDA分别连接S3C2410的I2CSCL和I2CSDA,INT接口连接ARM的外部中断14(EINT14)。通过I2C协议发送指令,让ARM处理键盘信息。
1.3 网络接口电路设计
本设计中使用的CS8900A-CQ3处理器是一种真正的单芯片全双工以太网芯片,内部有支持100M以太网的控制器,只要外加以太网物理层接口,就可以很方便地实现网络功能。选用CS8900A-CQ3还有一个原因就是其优异的功耗控制,最大55 mA的输入电流,采用3V供电时最多产生165 mW的功耗。CS8900A-CQ3接口支持10 Mb/s的数据率,正常工作需要20 MHz的外部时钟,可由20 MHz的晶振为其提供,也可用MCU的时钟替代晶振。本设计中,为减少布线困难,采用前者。CS8900A通过16位数据总线同CPU进行数据交换。物理层接口选用带有网络隔离变压器的RJ45接口,与水晶头适配,省去专用的数据汞芯片。CS8900A内部包含有ISA总线模块、集成存储器、802.3MAC引擎、EEPROM接口,全模拟信号前端——包括曼彻斯特编码解码器、时钟恢复电路、以太网收发器、滤波器和一个AUI接口。设计中使CS8900A处于I/O空间模式工作状态,I/O空间模式下,CS8900A的内部PackagePage存储器可通过8个16 bit I/O端口访问,而这8个I/O口被映射到主机的16个8 bit的I/O空间,偏移地址从0000H~000FH。CS8900芯片的16位数据总线与MCU数据总线的低16位相连,地址线方面将CS8900A的SA8、SA9置高电平使得CS8900的基址被置于0300H,用低4位地址线与MCU的低4位相连,与读写I/O口的偏移地址位数相匹配。
因为嵌入式设备的使用,对系统的复杂度和尺寸大小有一定的要求,本设计中将不使用CS8900A的EEPROM控制器功能,也无须再添加尺寸较大的EEPROM影响之后的布局。所有的配置信息由MCU通过读取Flash中的驱动信息,然后再对CS8900的寄存器进行配置初始化,因此将用于存储CS8900配置信息的串行EEPROM接口部分引脚置空。
CS8900A支持AUI接口,在本设计中主要面向的是使用双绞线的局域网,因此此接口引脚也废置不用。网络模块设计原理图,读者若需要请直接和作者联系。
2 应用软件设计
终端的软件主要实现射频卡读写、网络通信和键盘显示功能。由于应用软件运行在Linux操作系统上,因此在驱动程序编写好后,只需在操作系统中对相应接口进行操作。
2.1 射频卡读写软件设计
在本设计中,ARM与射频模块间通过UART接口连接,而通信方式为命令-响应方式。因此,在软件编写上,都是由ARM发出命令,然后等待模块响应[3]。
ARM向ZLG500A发出的命令模式的格式为:
2.2 数据存储软件设计
读写卡信息的存储,对于所有的应用来说,都是必要的。如门禁系统需要存储ID、刷卡时间等记录,公交储值卡需要存储ID、卡上金额等信息。在嵌入式Linux操作系统上,数据的存储操作可直接由标准C的文件操作读写函数完成,和在PC上的操作并无区别。而当存储容量不够,基于ARM和嵌入式Linux操作系统的嵌入式系统,很容易能扩展出附加的SD卡、U盘或大容量硬盘存储。当系统需要较复杂的数据管理功能时,可移植嵌入式数据库,如SQL Lite等,使数据管理起来更加方便有序。
2.3 网络通信软件设计
而TCP/IP通信方式具有标准统一、通信速度快、可扩展性能好等优点,在当前的嵌入式系统中已广泛使用。而在嵌入式Linux中,使用标准的socket编程就能完成网络通信功能,软件实现非常容易。对于具有多终端的大中型系统,TCP/IP网络协议的特性,也使得多终端以及后台服务器的互联变得格外简单。
2.4 键盘与显示软件设计
在Linux操作系统下,键盘的处理也是由标准C函数,如open()、read()、write()等实现。而对于显示部分,在移植了Minigui或Qtopia后,不仅界面美观大方,其软件也具有编写容易、移植性强等优点。
设计了基于ARM和嵌入式Linux的网络化射频卡读卡终端。在准确的实现射频卡读写,网络互联的基础上,本终端还具有存储容量大、互联简单、移植性好以及良好的人机交互等优点。可广泛应用于企业、校园一卡通,公交储值卡,高速公路收费,停车场、小区管理等各个领域。
参考文献
[1] 游战清,李苏剑. 无线射频识别技术(RFID)理论与应用[M]. 北京:电子工业出版社,2004.
[2] 刘淼. 嵌入式系统接口设计与Linux驱动程序开发[M].北京: 北京航天航空大学出版社,2006.
[3] 牛斗,常国权,李丹,等.基于MF-RC500和Mifare射频卡识别模块的设计[J]. 微计算机信息,2007(2):216-218.