基于ARM平台的RFID系统设计与实现

发布者:美梦小狮子最新更新时间:2012-11-13 来源: 21ic 关键字:ARM平台  RFID系统  AT91RM9200 手机看文章 扫描二维码
随时随地手机看文章
  1. 引 言 

  近年来,RFID(无线射频)技术是正在兴起的一项新兴的自动识别技术。RFID 利用射频方式进行非接触双向通信,从而实现对物体的识别,并将采集到的相关信息数据通过无线技术远程进行传输。相较目前广泛采用的条型码技术,RFID 具有读取距离远(几米至几十米)、穿透能力强(可透过包装箱直接读取信息)、抗污染、效率高(可同时处理多个标签)、信息量大的特点。它的出现给物流和生产方面的工业应用带来了革命性的影响[1]。 

  正是由于上述原因,本文提出了一种基于ARM 平台的RFID 系统设计与实现方案,以满足人们在嵌入式领域对RFID 技术的开发与应用。 

  2. 系统介绍 

  2.1 系统硬件设计  

  硬件系统框图:如图处理器采用现行嵌入式系统中最流行ARM系列,具体采用ATMEL公司的工业级ARM 芯片。FLASH为4M,采用的芯片是AM,用于存储LINUX内核,RAMDISK和一些系统配置文件和测试数据。SDRAM为 M,采用的芯片是MT48LC2M32B2TG-6。网络接口的物理层芯片采用RTL8201。同时还配有输入输出设备,即LCD显示屏和5×4键盘。电源采用稳压模块输出稳定的电压,同时设计有单键开关和充电电路等方便用户的功能[2]。



  2.2 系统软件设计  

  我们采用LINUX作为系统的操作系统,给标准LINUX打上支持ARM系列的补丁包后内核便提供了对AT91RM9200的支持(我们称之ARM-LINUX),在ARM-LINUX之下,编写键盘,LCD,网卡,FLASH文件系统的驱动程序。在ARM-LINUX上编写一个小型简洁的GUI(图形界面用户接口),使程序更加模块化,便用上层程序的编写和以后系统的升级。



  3. 硬件电路设计 

  3.1 单键开关电路设计  

  单键开关设计必须考虑到以下几点:一是单键开关必须稳定,按一次键只有一次电源的通或断;二是电流问题:因为单键开关无论是关机的时候还是开机的时候都要使用电源,所以必须保证其电流足够小,减少电源的损耗。通过查找资料。

  该电路的工作原理是:Q8(2N7000),Q7(IRF8540)分别为N沟道和P沟道场效应管,其开启电压(GS之间的电压)分别为3V和-2V,当BP17放开的时候,Q8的GS之间电压很小,Q8截止,D端电流很小,所以R11上的压降很小,Q7的GS端之间的电压很小,Q7同样截止,所以没有电压输出。BP17闭合时,R11,BP17,R21,C69形成回路,电源对C69充电,当C69的电压上升到大约3V时,Q8导通,Q8上D级电流增大,R11上的压降增大,Q7导通,由于Q7导通后的阻抗很小,所以电源类似于接通,对C69继续充电,直到达到电源电压。当再次按下BP17时,C69通过开关放电,电压降低,当降到3V以下时Q8截止,同时Q7也截至,开关关闭。此系统在Q7,Q8没有导通前,MOS管的阻抗很大,所以功耗电流很小。 [page]

  3.2 充电电路设计

  充电电路可以为用户提供很大的方便。一般情况充电电路需要达到的要求是:必须保证电池充电时不过充;充电时间不能太短,但同时也要保证充电电流不能太大;有充电指示。根据上面以上要求,该电路的工作原理是:LM7812是一个稳压模块,为系统提供稳定的9V电压。LM555是一个触发器,管腿二和管腿六是触发端,管腿五是参考电压,当管腿二的电压小于管腿五和管腿六的三分之一电压小于管腿五的时候,管腿三输出0V;当管腿二的电压小于管腿五但管腿五的电压大于管腿六的三分之一电压的时候,管腿三输出VCC;当管腿二的电压大于管腿五时候,管腿三输出0V。当该系统上电但没有放充电电池的时候,满足上述条件一,所以管腿三输出0V,二极管不亮;当把待充电池接在VCC端的时候,通过C45滤波(防止干扰脉冲)的采集电压传送到管腿二和管腿六,因为电池本身有电压,所以这个时候满足上述条件二,管腿三输出9V开始充电,发光二极管变亮;当充电完毕,电池达到指定电压时,满足上述条件三,管腿三输出0V,充电结束,发光二极管熄灭。综上所述,只要参考电压足够精确,就不会造成电池过充现象。同时充电电压能够达到9V,所以调节R52完全可以在充电电流和充电时间上进行权衡。所以此电路可以达到上述要求。 

  3.3 PROTEL 电路设计和电路板布线的基本流程  

  原理图部分:建立自己的元件库。因为并不是所有的元件在PROTEL的元件库中都存在,一般要根据自己实际所用的芯片建立自己的元件库。绘制原理图。当器件比较多的时候,可以采用层次设的方法。分模块对系统进行设计,这样可以使系统更加清晰,降低错误的可能性。原理图画好后,利用其自动编号功能对器件进行编号。PCB板部分.建立自己的封装库,同元件库一样,有时候必须建立自己的封装库,在画封装的时候,要严格按照芯片公司的资料绘制。为每一个元件设置封装。用向导产生PCB文件,定义好电路板的层数和边界。利用设计同步器将器件导入到PCB中。根据具体的工艺设计好规则,如过孔大小,最小线宽。按照易于布线的原则对元件进行布局布线,在布线的时候要遵循一些原则。检查错误。 

  4. 系统软件设计 

  4.1 LINUX 在AT91RM9200 上的移植  

  AT91RM9200两种启动方式:1.其内部存储器地址为0x00100000-0x001FFFFF的部分存在一段启动程序,如果选择这种启动模式在启动时,0x00100000-0x001FFFFF部分的地址被映射到0x00000000,CPU运行这段程序,这段程序会往CPU的调试串口(或者是USB口)不停的发字符"C",同时提供小于12K程序的串口(利用XMODEM协议)下载功能。2.可以直接从外部存储器启动,主要是连接在SPI(串行外部设备接口)和NCS0(CPU上的一个管腿,是EBI即外部总线接口的一部分,用于外部存储器的寻址)上的SPI DataFlash,Two-wire EEPROM和连接在NCS0上的8比特并行存储器。 

  根据CPU的启动方式,我们可以这样设计移植过程及系统的启动方式。在系统移植阶段,我们应用启动方式

  1,通过其下载功能下载一个小于12K的程序(实际使用的程序为Loader,是开放源码的软件,可以在网上下载到)到SDRAM并运行,该程序可以提供大于12K的串口下载功能,用这个程序下载一个更大的程序到SDRAM中,而这个程序可以提供类似于PC机上BIOS的功能(实际使用的是U-BOOT,是开放源码的软件,可以在网上下载到),其功能主要有:LINUX系统引导,网卡驱动,TFTP下载功能,SDRAM和FLASH之间的读写功能。 

  通过其TFTP下载功能下载内核到SDRAM,引导操作系统并进行测试。如果操作系统测试工作无误后,可以应用U-BOOT的写FLASH功能把U-BOOT和LINUX内核写到FLASH中,在应用程序开发阶段应用CPU的启动方式2,直接从FLASH启动。这种方法的优势是:在内核下载的时候,提供了TFTP下载功能,加快了速度。在应用程序开发阶段,因为内核(还有后面的RAMDISK)都是固化在FLASH中,可以省去其下载过程,同样也可以节省时间[3]。 

  移植过程大致可分为以下几个步骤:配置用户环境及交叉编译环境;编译Loader和UBoot,其中要在UBoot中修改网卡驱动;3.配置Linux内核;4.制作ramdisk文件系统,并根据实际系统进行修改;5.移植Busybox;6.JFFS2文件系统的移植。在Linux内核中已经包含了MTD和JFFS2文件系统的驱动程序,但是必须针对具体的系统编写驱动程序。具体步骤如下:1)由于ROM设备和MTDBlock设备的主设备号(major)都是31,所以如果你不想把JFFS2作为根文件系统的话,必须修改他们之一的major。2)编写驱动程序:编写读,写,复制接口(这些接口将被MTD驱动程序调用,提供给上层软件的读写复制功能),定义map_info结构体,以便MTD能够从这个结构体中得到读写函数的指针,最后还要定义FLASH的分区表。根据系统的设计,我们把4M的FLASH分成四个区,第一个分区用来保存UBOOT及其参数;第二个分区用来保存LINUX内核;第三个分区用来保存RAMDISK;最后一个分区用来保存系统参数和用户数据和测试数据。3)修改LINUX的配置文件,把驱动程序加入到内核[4]。 [page]

  4.2 LINUX 驱动程序的编写  

  我们研究字符型设备的驱动程序的编写,块设备驱动程序跟字符设备驱动程序的编写有一定的相似性。 

  驱动程序加载时,内核会调用用户定义的初始化程序。用户用init_moudle(function name)标识初始化程序,其中的function name为编写的初始化函数的函数名。用module_exit(function  name) 标识释放设备程序,在初始化函数里驱动程序必须向操作系统注册设备,以获得系统资源和操作系统正确的调用驱动程序。在Linux中这个函数是register_chrdev,在fs/devices.h中其定义为:int register_chrdev(unsigned int major,const char* name,struct file_operation *fops)。 

  其中major是为设备向系统申请的主设备号,name驱动程序给设备定义的名字,fops是接下来要介绍的一个结构体。在卸载的时候需要告知操作系统注销注册[5]。 

  下面简要介绍一下file_operation结构体中几个主要的比较常用的方法。 

  1. ssize_t (*read) (struct file *, char *, size_t, loff_t *);用来从设备中读取数据。 

  2. ssize_t (*write) (struct file *, const char *, size_t, loff_t *);向设备发送数据。 

  3. int (*ioctl) (struct inode *,struct file *,unsigned int,unsigned long);系统调用ioctl提供了一种 执行设备特定的命令的方法(如格式化软盘某个磁道,这既不是读操作也不是写操作)。 

  4. int (*open) (struct inode *, struct file *);始终是对设备文件执行的第一个操作。 

  5. int (*release) (struct inode *, struct file *);当file 结构被释放时,将调用这个操作。 

  4.3 RFID 程序的编写 
  本系统采用的RFID 芯片是SONY 生产的RC-S600,它有自己的通信协议,并支持串口或者USB 口直接连接。这就大大方便了系统的开发与应用。由于本系统采用的是标准串口连接方式,因此针对应用程序的要求,我们首先要提供一套关于串口的API 接口函数。 

  1. int PortOpen(pportinfo_t pportinfo); 打开串口,返回文件描述符。pportinfo: 待设置的串口信息。 

  2. int PortSet(int fdcom, const pportinfo_t pportinfo);设置串口。fdcom: 串口文件描述符,pportinfo: 待设置的串口信息。 

  3. void PortClose(int fdcom);关闭串口。fdcom:串口文件描述符。 

  4. int PortSend(int fdcom, char *data, int datalen);发送数据。fdcom:串口描述符,data:待发送数据,datalen:数据长度。返回实际发送长度 。 

  5. int PortRecv(int fdcom, char *data, int datalen, int baudrate); 接收数据。fdcom:串口描述符,data:接收缓冲区,datalen.:接收长度, baudrate:波特率。返回实际读入的长度。 

  完成了串口通信的基本函数后,可以通过由串口向RFID芯片发送命令字进行控制,以下为RC-S600的Command说明:1. Polling Command。从指定了System Code的卡里,取得制造ID(IDm)和制造Parameter(PMm)的指令。2. Diagnose R/W 。RC-S600系列进行自我诊断,取得诊断结果的指令。3. Turn off RF Power。将RC-S600系列的RF输出置于Off;4. Check Firmware Version。取得RC-S600系列的Software的版本号;5. Control LED。对连接到RC-S600的LED进行On/Off;6.Communication Thru。对卡发送1次host指定Command,根据是否从卡收到Response,向host返回该Card Response Packet;7. Access I/O Register。对RC-S600系列的RF进行初期设定。 

  经测试,本系统能对所用RFID芯片的指定命令字进行正确读写和返回。 

  5. 结论 

  本文给出了一种基于ARM 平台的RFID 系统设计,现已通过实际测试。由于本系统采用的是标准接口设计,这就为以后的多功能开发平台提供了理想的硬件环境。

参考文献:

[1]. MT48LC2M32B2TG-6 datasheet http://www.dzsc.com/datasheet/MT48LC2M32B2TG-6_1054742.html.
[2]. RTL8201 datasheet http://www.dzsc.com/datasheet/RTL8201_586322.html.
[3]. AT91RM9200 datasheet http://www.dzsc.com/datasheet/AT91RM9200_[4]. 2N7000 datasheet http://www.dzsc.com/datasheet/2N7000_38377.html.
[5]. LM7812 datasheet http://www.dzsc.com/datasheet/LM7812_843716.html.
[6]. LM555 datasheet http://www.dzsc.com/datasheet/LM555_451680.html.
[7]. PCB datasheet http://www.dzsc.com/datasheet/PCB_1201640.html.
[8]. major datasheet http://www.dzsc.com/datasheet/major_2533383.html.

关键字:ARM平台  RFID系统  AT91RM9200 引用地址:基于ARM平台的RFID系统设计与实现

上一篇:基于Linux的RFID信息采集与处理系统
下一篇:嵌入式物流信息终端定位功能设计与实现

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

基于RFID的药品生产与质量控制信息系统设计方案
1 系统设计的目的 近年来,伴随着制造业的飞速发展,越来越多的企业在不同程度上开展了信息化建设,例如CAD/CAM等主流软件应用;虚拟制造、网络制造技术的铺开;电子商务、内部信息化管理的推广等等。目前,我国经济较发达地区(如珠三角)的工业化发展已步入成熟阶段,信息化也从初级阶段向中级阶段转变,两者存在着在更高水平、更深层次及更大范围上互相融合、互相促进的内在需求。 作为制造业重要领域的制药业,通过信息化手段提高管理与服务手段、降低成本正是成功的医药企业得以制胜的“名医良方”。作为典型的连续型生产制造医药企业有着自己独特的行业特征:如药品类别繁多、生产工艺流程复杂、质量管理要求十分严格、有效期须进行严格控制等等,因此,生产机制创新、
[嵌入式]
基于FPGA和ARM9的片上网络系统硬件平台
IC制造技术的发展推动着芯片向更高集成度方向前进,从而能够将整个系统设计到单个芯片中构成片上系统SoC(System on Chip)。SoC采用全局同步型共享总线通信结构。这类系统由于挂在总线上的设备在通信时对总线的独占性以及单一系统总线对同步时钟的要求,使得在片上IP核越来越多的芯片中,不可避免地存在通信效率低下、全局同步时钟开销大等问题。 片上网络NoC(Network on Chip)的提出有效地解决了上述问题。该系统借鉴了计算机网络中分组交换的通信方法,可以根据应用灵活地采用多种网络拓扑结构互连片上IP核 。各IP核间有多条链路可以进行并行通信,由FIFO跨接处于异步时钟域中的IP核,实现全局异部局部同步时钟系统。具有
[单片机]
基于FPGA和<font color='red'>ARM</font>9的片上网络<font color='red'>系统</font>硬件<font color='red'>平台</font>
基于IAR集成开发平台ARM程序设计方法
   引言   在项目开发,特别是中小型项目开发中,为了降低开发难度和开发成本,常选择不加载操作系统的方案。本文选择IAR嵌入式开发平台,在不加载操作系统的前提下,使用C语言(约95%)和汇编语言(约5%),对以ATMEL公司的AT91M40800芯片(ARM7TDMI内核)为主芯片的工业控制系统进行了软件开发。 图1 系统硬件结构 图2 系统软件框架    硬件构架   系统的整体硬件框架如图1所示,该系统基本包括了目前工业控制系统所需要的各种功能,其软件开发十分具有代表性。    IAR集成开发环境   IAR开发平台是瑞典IAR公司开发的基
[单片机]
基于IAR集成开发<font color='red'>平台</font>的<font color='red'>ARM</font>程序设计方法
基于RFID的电子关锁系统设计与实现
引言 现行海关转关货物监管主要采用传统的一次性铅封方式,以人工操作、肉眼识别等方式对集装箱进行机械施封、验封、解封,运行成本高、安全性低,更关键的是这种监管方式运行效率低,远远不能满足海关大密度、高强度业务流量的监管要求。RFID(Radio Frequency Identification,射频识别)技术是利用感应、无线电波或微波能量进行非接触双向通信,实现以识别和交换数据为目的的自动识别技术。它通过射频信号自动识别目标对象并获取相关数据,识别工作无需人工干预。本文基于主动式 RFID技术设计了电子关锁系统,采用电子关锁代替传统的铅制封条对转关集装箱进行电子监控管理。 系统架构及运行方式 本系统由监控中心服务器、道口监
[网络通信]
高速公路RFID多义性路径识别系统解决方案
        联网收费是目前各省路网收费的大趋势,大部分省份都已实施了基于IC卡的路网收费系统。在联网收费系统中,精确拆分帐和结算是保证各高速公路业主利益的关键,而完整的、清晰的行车路径数据是实现精确拆分帐的基础。目前高速公路网日趋发达,在同一路网中,从相同的起点出发,到达相同的目的地,可以有多条不同的路径(多义性路径)供选择,而目前的收费系统只能识别起点信息和目的地信息,没有路径信息,无法按实际行车路径来结算,造成高速公路业主利益分配不均,成为联网收费的一大问题—多义性路径识别问题。         金溢科技的高速公路RFID多义性路径识别系统综合了射频识别技术和IC卡技术的优点,采用无线路径自动标识方式精确记录车辆在路网
[网络通信]
嵌入式arm学习总结(九)--ARM启动代码总结-基于mini2440平台
1.要看懂启动代码:首先要熟悉ARM9的存储系统和指令系统 2.启动的大概步骤: 进入复位异常--》关看门狗、关中断和子中断等--配置时钟(UPll和MPll)--》初始化内存(初始化13个存储器控制器),清零内存 --》初始化堆栈--拷贝代码到sdram,跳转到sdram中运行--》进入main函数 3.启动代码作用 启动代码的最终目的:把代码从nanflash复制到内存中并运行 1).进入管理模式,设置主频和分频比,初始化相关外设(串口) 2).判定代码是否进行复制(NORFLASH,还是NANDFLSASH复制) 3).异常怎样处理 4).跳入主函数main() 第一步:从resetEntry开始,运行到b Re
[单片机]
利用 RFID 保护系统固件和其它知识产权
  防伪的经典方法一直都是采用防伪包装或某种不可恢复的防拆包装,以及专门的标签印记技术。然而,任何在产品上可见的信息都可能被克隆,而且克隆信息可用于生产貌似真品的假冒产品。RFID 被认为是库存控制和产品追踪管理的下一代条码技术,也能确保最终产品固件的安全和防止伪造,同时还能对产品的组成材料、保管环节及从原材料采购直到最终用户购买产品涉及到的各种周边情况的信息链进行安全记录管理。    RFID与产品标识技术   RFID 器件可做得如米粒大小,同时具有足够的内存来保存密钥、算法及产品拥有信息链。RFID 器件装载的信息不需肉眼直接观看,因而可嵌入到几乎任何产品中,包括药瓶、化妆品,或珠宝饰品。   RFID 标签本身并不
[网络通信]
基于ARM9-μC/OS-II软硬件平台的SD卡文件系统的设计与实现
随着嵌入式式技术的不断发展,ARM处理器凭借其高性能、廉价、耗能低的优质特性而得到广泛应用。文中主要针对货车动态称重系统中大量实时载重数据存取的需求,在ARM9嵌入式处理器和μC/OS-II操作系统基础上,设计实现了一种SD卡文件系统。该系统具有实时性强、存取速率高、易维护,易移植等特点。 1 硬件接口电路设计 本系统硬件开发平台处理器为S3C2440A,是三星公司推出的16/32位RISC微处理器,ARM920T内核,主频400 MHz,最高可达533 MHz,内部具有丰富的系统外围控制器和多种通信接口。SD卡支持SPI和SD两种通信模式,S3C2440A具有SD卡接口,支持SD总线模式,所以不再像低端的ARM处理器那样采用
[单片机]
基于<font color='red'>ARM</font>9-μC/OS-II软硬件<font color='red'>平台</font>的SD卡文件<font color='red'>系统</font>的设计与实现
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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