您的位置 首页 报告

根据嵌入式体系的RFID驱动程序设计概述

基于嵌入式系统的RFID驱动程序设计概述-RFID具有读取速度快、读取距离远、储存信息量大、标签上数据可加密、使用寿命长、工作环境适应性强等多种优点,已经在各领域广泛应用[1]。

RFID具有读取速度快、读取间隔远、贮存信息量大、标签上数据可加密、运用寿命长、作业环境适应性强等多种长处,现已在各范畴广泛使用[1]。

RFID技能与嵌入式体系相结合,将射频辨认模块嵌入到嵌入式体系中,在嵌入式Linux下经过规划驱动程序完结射频模块的收发功用。嵌入式RFID体系增加了RFID技能的通用性和可移植性,丰厚了嵌入式体系通讯接口外设功用,提升了嵌入式技能在无线通讯范畴的开展空间。

当时的嵌入式体系中并不支撑RFID体系,所以要进行硬件和软件两方面的扩展。硬件方面首要依据nRF905无线收发器的电气特性进行接口扩展,使用依据ARM9嵌入式渠道的扩展口对nRF905进行操控;软件方面使用Linux内核杰出的移植性和扩展性,编写驱动程序操控射频模块的收发功用,在底层驱动以搜集和分组数据并传递给上层使用程序,由上层使用程序与用户进行交互。本文所研讨的依据嵌入式体系的RFID驱动,将为嵌入式RFID体系供给底层软硬件接口程序,为嵌入式内核增加RFID管理机制,为上层使用程序供给杰出服务,下降嵌入式RFID的开发难度,缩短开发周期,然后下降其本钱,使RFID的使用愈加遍及。

1 硬件电路的完结

图1是nRF905无线收发器接口扩展的硬件电路原理图,硬件电路的完结首要依据S3C2440 ARM9微处理器和单片nRF905无线收发器的互联,以及依据nRF905电气特性所做的一些外接电路。

依据嵌入式体系的RFID驱动程序规划概述

S3C2440是一款选用ARM920T内核的高性能32 bit处理器,其主频高达405 MHz,选用5级流水线和哈佛结构。S3C2440包含两个SPI接口,每个接口别离有两个8 bit数据移位寄存器用于发送和接纳。在SPI发送期间,数据一起发送(串行移出)和接纳(串行移入)[2]。因而,使用处理器的SPI接口,能够很方便地用SPI接口与nRF905无线收发模块进行数据传输。

单片nRF905无线收发器作业在433/868/915 MHz的ISM频段。由一个彻底集成的频率调制器、一个带解调器的接纳器、一个功率放大器、一个晶体振荡器和一个调节器组成。其所具有的ShockBurst作业形式能够主动发生前导码和CRC。能够经过SPI接口进行编程装备。

nRF905选用Nordic公司的VLSI ShockBurst技能。ShockBurst技能使nRF905能够供给高速的数据传输而不需求贵重的高速MCU来进行数据处理/时钟掩盖。经过将与RF协议有关的高速信号处理器放到芯片内,nRF905供给给微操控器一个SPI接口,速率由专为操控器设定的接口速度决议。nRF905经过ShockBurst作业形式在RF以最大速率进行衔接时,下降数字使用部分的速率来下降在使用中的均匀电流耗费。在ShockBurst接纳形式中,地址匹配(AM)和数据预备安排妥当(DR)信号告诉微处理器一个有用的地址和数据包现已各自接纳完结。在ShockBurst发送形式中,nRF905主动发生前导码和CRC校验码,数据预备安排妥当(DR)信号告诉微处理器数据传输现已完结[3]。

2 RFID驱动程序规划

2.1 全体驱动规划思维

RFID驱动程序的规划选用自底而上(Down-Top)的办法。优先规划底层部分即SPI接口的驱动程序,然后再规划上层RFID驱动。这种自低而上规划办法能够把大模块涣散为几个小模块,把大规划分为小规划,便于开发验证,而且契合Linux模块化的规划思维,是一种高效的规划办法。

nRF905选用SPI接口与外界进行通讯,因而底层SPI驱动首要完结nRF905的SPI和微处理器S3C2440的SPI模块间的通讯。上层RF驱动程序经过SPI接口向nRF905发送指令和数据,终究由nRF905的主机操控器操控射频收发器完结数据收发,完结射频模块间的无线通讯。

2.2 SPI驱动程序规划

在硬件电路中,微处理器S3C2440的SPI0模块与nRF905中的SPI接口相衔接。SPI驱动的效果即完结主SPI与nRF905中从SPI的数据传输。为了便于验证功用,进步项目开发功率,底层SPI驱动规划为独立的模块,而且进行调试,在SPI驱动规划的基础上,完结上层RF驱动。

在ARM9嵌入式渠道的内核Linux2.6.12中,不包含SPI驱动程序,而在Linux内核之后的版别中包含了SPI驱动。这样,就能够移植新版别中的SPI驱动到本嵌入式渠道Linux2.6.12中。尽管这种SPI驱动通用性和功用性都较强,但其代码量大,较多功用并不契合本规划的要求。因而,本规划挑选从头编写SPI底层驱动,简化其功用,树立环形缓冲区,进步数据收发功率。

SPI驱动程序作为设备文件,包含write、read、open、release、ioctl等几个操作[4],其间关键性的硬件操作为读写操作,写操作的首要效果是把用户数据复制到内核缓冲区,并操控微操控器中的主SPI发送数据到nRF905中;读操作与写操作相似,而进程相反,即把主SPI接到的数据复制到内核缓冲区,再由内核缓冲区复制到用户空间申请好的数据结构中。对SPI设备数据接纳的监控,驱动程序选用中止的办法来告诉体系SPI数据是否收发结束,在SPI设备每发送完一组数据或接纳到一组数据后,就会触发中止,信号由IRQ线进入,传入CPU进行中止处理。

SPI驱动程序的写进程包含树立数据结构、树立环形缓冲区,从用户空间把数据复制到数据结构中、调用write函数把数据复制进环形缓冲区中、写满后发送第一组数据到发送寄存器。当SPI发送寄存器中的数据发送结束后,会宣布中止信号,触发微处理器中止,体系进入中止上下文。为了缩短中止处理时刻,进步中止处理功率,驱动程序中选用了顶/底半部的处理办法[5],即中止处理时刻尽量地短,在中止处理例程中调用tasklet调度函数,将需求较多时刻的中止处理发到tasklet(即底半部)中处理。在tasklet中会把环形缓冲区的数据写入发送寄存器,终究由SPI操控器发送出去。

SPI驱动程序的读进程和写进程相似,SPI接纳寄存器接到数据后触发中止。CPU接到中止信号后进入中止处理例程,调度tasklet进入底半部进行中止处理,把接纳寄存器中的数据复制到环形缓冲区中,然后唤醒正在休眠的进程,由read函数把环形缓冲区中的数据复制到申请好的数据结构中,再复制至用户空间。

2.3 RFID驱动程序规划

完结SPI底层驱动后,上层RFID驱动的内容首要是对nRF905装备寄存器进行装备,包含发送接纳数据的字节数、方针地址、作业形式、时钟频率等经过nRF905自定义的SPI指令写入寄存器中。因而要对SPI驱动中的write/read函数进行封装,经过调用SPI驱动中的函数完结全体驱动的寄存器装备和数据传输功用。

RFID驱动程序作为设备文件,相同分为write、read、open、release、ioctl等几个操作。RFID驱动程序的写操作进程:首要将用户空间中的数据复制至数据结构中;然后使nRF905进入Standby形式,调用SPIwrite函数对数据寄存器和地址寄存器进行装备,把发送数据和方针地址写入本地nRF905,之后进入ShockBurst发送形式,由本地nRF905向方针nRF905发送数据;最终进程进入休眠状况,等候数据预备信号DR触发中止,由中止处理例程唤醒进程,完结数据发送。图2为RFID的发送流程图。

依据嵌入式体系的RFID驱动程序规划概述

RFID的读操作将判别缓冲区是否为空,假如不为空,就把缓冲区中的数据复制至数据结构中,并拷至用户空间中;假如为空,进程就会进入休眠,等候缓冲区接纳到数据后,进入中止唤醒进程。在进入ShockBurst RX形式后,本地nRF905会主动监测空中的信息,在nRF905发现和接纳频率相同的载波时,载波检测信号CD被置高,触发中止,在中止例程中仅仅延时一段时刻,等候nRF905接纳到有用的意图地址时,地址匹配信号置高。当nRF905接纳到有用的数据包后,数据预备安排妥当信号DR会触发中止,进入中止例程,进入Standby形式,把接纳到的数据经过SPI接口读入缓冲区内,然后唤醒进程,把缓冲区中的数据复制至用户空间中。当一切的数据被读出后,nRF905的AM和DR信号线会被置低。nRF905切换到下一状况。RFID驱动接纳流程如图3所示。

依据嵌入式体系的RFID驱动程序规划概述

3 功用测验

测验首要分为两部分,首要对底层SPI接口部分做调试,然后在此基础上,对RFID驱动进行功用测验。

硬件方面,使用S3C2440开发板的扩展口与nRF905模块衔接,扩展口中用到的GPIO资源在驱动程序中设置。别的,用RS-232串口将开发板与PC机相连,使用内核的Debug功用[6],经过PC机对开发板进行操控,完结驱动加载和使用程序的运转。

软件方面,依据S3C2440的嵌入式渠道需求完好的嵌入式操作体系资源,包含bootloader、kernel、文件体系。在对内核进行取舍后,将bootloader、kernel、文件体系经过JTAG烧入NAND Flash中。操作体系要确保内核、文件体系以及硬件设备正常运转。

3.1 SPI驱动功用测验

SPI驱动测验首要测验驱动程序的功用,测验驱动程序是否能够操控SPI主从设备正确传输数据。资源包含S3C2440开发渠道、Linux2.6.12内核源码包、示波器。体系运转后,加载SPI驱动,运转编写的上层使用程序进行数据收发,并用示波器调查波形。

3.2 RFID驱动程序测验

在测验SPI驱动成功后,从头启动体系,待体系成功运转后,加载RFID驱动程序,运转为其编写的测验程序,测验两nRF905无线模块间的通讯。S3C2440的GPIO资源与nRF905信号线对应联系如下:

Power down形式:PWRGPJ12

载波检测输出:CDGPG6

地址匹配输出:AMGPB9

数据安排妥当输出:DRGPG1

SPI主入从出:MISOGPE11

SPI主出从入:MOSIGPE12

SPI时钟:SCKGPE13

SPI使能:CSNGPB10

发送/接纳使能:TRX_CEGPG8

发送/接纳形式:TX_ENGPG0

两个渠道别离为:ARM9嵌入式渠道和MSP430单片机渠道。在ARM渠道运转发送测验程序,而单片机渠道运转接纳测验程序,之后交流。接纳端将接纳到发送端发送的数据,并将数据在PC机终端显现。

当ARM发送端的使用程序中发送字符串“aaaaaaaa”时,单片机端的nRF905模块接纳寄存器中收到转化后的ASCII码“97”;当ARM端作为接纳端而单片机作为发送端时,ARM端运转接纳程序后,在用户空间即显现终端上显现了接纳到的数据“abcd…”。标明此RFID驱动程序成功完结了操控nRF905无线收发器进行数据接纳传输的功用。

本文介绍了一种依据ARM9 S3C2440嵌入式渠道扩展RFID驱动的规划方案,规划了硬件扩展电路和相应的驱动程序,经过了并测验。完结了嵌入式渠道间的RFID短间隔即时通讯功用。嵌入式RFID驱动将推进RFID技能在使用范畴中的开展,将会支撑更多的射频硬件,依据此驱动能够开发更多的使用程序,满意多种需求。

参考文献

[1] 董丽华.RFID技能与使用[M]。北京:电子工业出版社,2008.

[2] SAMSUNG.S3C2440A user’s manual reltminary[OL]。 Revision0,2004.

[3] NORDIC Semiconductor.nRF905_rev1_1[OL].2004:1-36.

[4] 刘淼。嵌入式体系接口规划与Linux驱动程序开发[M]。 北京:北京航空航天大学出版社,2006.

[5] Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman. Linux device drivers[M].Sebastopol:O’Reilly Media,2005.

[6] BOVERT D P,MARCO C著。深化了解Linux内核(第三版)[M]。陈莉君,张琼声,张雄伟,译。北京:中国电力出版社,2007.

周 鹏,侯立刚,彭晓宏,畅 达

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/98184.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部