基于ARM嵌入式系统的RFID驱动程序设计.docx
《基于ARM嵌入式系统的RFID驱动程序设计.docx》由会员分享,可在线阅读,更多相关《基于ARM嵌入式系统的RFID驱动程序设计.docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于ARM嵌入式系统的RFID驱动程序设计RFID具有读取速度快、读取距离远、储存信息量大、标签上数据可加密、使用寿命长、工作环境适应性强等多种优点,已经在各领域广泛应用1。将RFID技术与嵌入式系统相结合,将射频识别模块嵌入到嵌入式系统中,在嵌入式Linux下通过设计驱动程序实现射频模块的收发功能。嵌入式RFID系统增加了RFID技术的通用性和可移植性,丰富了嵌入式系统通信接口外设功能,提升了嵌入式技术在无线通信领域的发展空间。当前的嵌入式系统中并不支持RFID系统,所以要进行硬件和软件两方面的扩展。硬件方面主要根据nRF905无线收发器的电气特性进行接口扩展,利用基于ARM9嵌入式平台的扩
2、展口对nRF905进行控制;软件方面利用Linux内核良好的移植性和扩展性,编写驱动程序控制射频模块的收发功能,在底层驱动以收集和分组数据并传递给上层应用程序,由上层应用程序与用户进行交互。本文所研究的基于嵌入式系统的RFID驱动,将为嵌入式RFID系统提供底层软硬件接口程序,为嵌入式内核增添RFID管理机制,为上层应用程序提供良好服务,降低嵌入式RFID的开发难度,缩短开发周期,从而降低其成本,使RFID的应用更加普及。1硬件电路的实现图1是nRF905无线收发器接口扩展的硬件电路原理图,硬件电路的实现主要基于S3C2440ARM9微处理器和单片nRF905无线收发器的互联,以及根据nRF9
3、05电气特性所做的一些外接电路。620)this.style.width=620;border=0alt=基于ARM嵌入式系统的RFID驱动程序设计src=技术2021/ey3bwtewsd12021.jpgS3C2440是一款采用ARM920T内核的高性能32bit处理器,其主频高达405MHz,采用5级流水线和哈佛结构。S3C2440包括两个SPI接口,每个接口分别有两个8bit数据移位寄存器用于发送和接收。在SPI发送期间,数据同时发送(串行移出)和接收(串行移入)2。因此,利用处理器的SPI接口,可以很方便地用SPI接口与nRF905无线收发模块进行数据传输。单片nRF905无线收发器
4、工作在433/868/915MHz的ISM频段。由一个完全集成的频率调制器、一个带解调器的接收器、一个功率放大器、一个晶体振荡器和一个调节器组成。其所具有的ShockBurst工作模式可以自动产生前导码和CRC。可以通过SPI接口进行编程配置。nRF905采用Nordic公司的VLSIShockBurst技术。ShockBurst技术使nRF905能够提供高速的数据传输而不需要昂贵的高速MCU来进行数据处理/时钟覆盖。通过将与RF协议有关的高速信号处理器放到芯片内,nRF905提供给微控制器一个SPI接口,速率由专为控制器设定的接口速度决定。nRF905通过ShockBurst工作模式在RF以
5、最大速率进行连接时,降低数字应用部分的速率来降低在应用中的平均电流消耗。在ShockBurst接收模式中,地址匹配(AM)和数据准备就绪(DR)信号通知微处理器一个有效的地址和数据包已经各自接收完成。在ShockBurst发送模式中,nRF905自动产生前导码和CRC校验码,数据准备就绪(DR)信号通知微处理器数据传输已经完成3。2RFID驱动程序设计2.1整体驱动设计思想RFID驱动程序的设计采用自底而上(Down-Top)的方法。优先设计底层部分即SPI接口的驱动程序,然后再设计上层RFID驱动。这种自低而上设计方法可以把大模块分散为几个小模块,把大设计分为小设计,便于开发验证,并且符合L
6、inux模块化的设计思想,是一种高效的设计方法。nRF905采用SPI接口与外界进行通信,因此底层SPI驱动主要完成nRF905的SPI和微处理器S3C2440的SPI模块间的通信。上层RF驱动程序通过SPI接口向nRF905发送指令和数据,最终由nRF905的主机控制器控制射频收发器完成数据收发,实现射频模块间的无线通信。2.2SPI驱动程序设计在硬件电路中,微处理器S3C2440的SPI0模块与nRF905中的SPI接口相连接。SPI驱动的作用即完成主SPI与nRF905中从SPI的数据传输。为了便于验证功能,提高项目开发效率,底层SPI驱动设计为独立的模块,并且进行调试,在SPI驱动设计
7、的基础上,完成上层RF驱动。在ARM9嵌入式平台的内核Linux2.6.12中,不包含SPI驱动程序,而在Linux内核之后的版本中包含了SPI驱动。这样,就可以移植新版本中的SPI驱动到本嵌入式平台Linux2.6.12中。虽然这种SPI驱动通用性和功能性都较强,但其代码量大,较多功能并不符合本设计的要求。因此,本设计选择重新编写SPI底层驱动,简化其功能,建立环形缓冲区,提高数据收发效率。SPI驱动程序作为设备文件,包含write、read、open、release、ioctl等几个操作4,其中关键性的硬件操作为读写操作,写操作的主要作用是把用户数据拷贝到内核缓冲区,并控制微控制器中的主S
8、PI发送数据到nRF905中;读操作与写操作类似,而过程相反,即把主SPI接到的数据拷贝到内核缓冲区,再由内核缓冲区拷贝到用户空间申请好的数据结构中。对SPI设备数据接收的监控,驱动程序采用中断的方式来通知系统SPI数据是否收发完毕,在SPI设备每发送完一组数据或接收到一组数据后,就会触发中断,信号由IRQ线进入,传入CPU进行中断处理。SPI驱动程序的写过程包括建立数据结构、建立环形缓冲区,从用户空间把数据拷贝到数据结构中、调用write函数把数据拷贝进环形缓冲区中、写满后发送第一组数据到发送寄存器。当SPI发送寄存器中的数据发送完毕后,会发出中断信号,触发微处理器中断,系统进入中断上下文。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ARM 嵌入式 系统 RFID 驱动程序 设计
限制150内