基于ARM嵌入式系统的RFID驱动程序设计

发布者:SerendipityLove最新更新时间:2011-10-24 关键字:ARM  嵌入式系统  RFID驱动程序 手机看文章 扫描二维码
随时随地手机看文章

RFID具有读取速度快、读取距离远、储存信息量大、标签上数据可加密、使用寿命长、工作环境适应性强等多种优点,已经在各领域广泛应用[1]。
    将RFID技术与嵌入式系统相结合,将射频识别模块嵌入到嵌入式系统中,在嵌入式Linux下通过设计驱动程序实现射频模块的收发功能。嵌入式RFID系统增加了RFID技术的通用性和可移植性,丰富了嵌入式系统通信接口外设功能,提升了嵌入式技术在无线通信领域的发展空间。
    当前的嵌入式系统中并不支持RFID系统,所以要进行硬件和软件两方面的扩展。硬件方面主要根据nRF905无线收发器的电气特性进行接口扩展,利用基于ARM9嵌入式平台的扩展口对nRF905进行控制;软件方面利用Linux内核良好的移植性和扩展性,编写驱动程序控制射频模块的收发功能,在底层驱动以收集和分组数据并传递给上层应用程序,由上层应用程序与用户进行交互。本文所研究的基于嵌入式系统的RFID驱动,将为嵌入式RFID系统提供底层软硬件接口程序,为嵌入式内核增添RFID管理机制,为上层应用程序提供良好服务,降低嵌入式RFID的开发难度,缩短开发周期,从而降低其成本,使RFID的应用更加普及。
1 硬件电路的实现
    图1是nRF905无线收发器接口扩展的硬件电路原理图,硬件电路的实现主要基于S3C2440 ARM9微处理器和单片nRF905无线收发器的互联,以及根据nRF905电气特性所做的一些外接电路。

    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的发送流程图。[page]

    RFID的读操作将判断缓冲区是否为空,如果不为空,就把缓冲区中的数据拷贝至数据结构中,并拷至用户空间中;如果为空,进程就会进入休眠,等待缓冲区接收到数据后,进入中断唤醒进程。在进入ShockBurst RX模式后,本地nRF905会自动监测空中的信息,在nRF905发现和接收频率相同的载波时,载波检测信号CD被置高,触发中断,在中断例程中只是延时一段时间,等待nRF905接收到有效的目的地址时,地址匹配信号置高。当nRF905接收到有效的数据包后,数据准备就绪信号DR会触发中断,进入中断例程,进入Standby模式,把接收到的数据通过SPI接口读入缓冲区内,而后唤醒进程,把缓冲区中的数据拷贝至用户空间中。当所有的数据被读出后,nRF905的AM和DR信号线会被置低。nRF905切换到下一状态。RFID驱动接收流程如图3所示。

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模式:    PWR    GPJ12
    载波检测输出:    CD        GPG6
    地址匹配输出:    AM        GPB9
    数据就绪输出:    DR        GPG1
    SPI主入从出:    MISO    GPE11
    SPI主出从入:    MOSI    GPE12
    SPI时钟:        SCK        GPE13
    SPI使能:        CSN        GPB10
    发送/接收使能:    TRX_CE    GPG8
    发送/接收模式:    TX_EN    GPG0
    两个平台分别为: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.

 

 

关键字:ARM  嵌入式系统  RFID驱动程序 引用地址:基于ARM嵌入式系统的RFID驱动程序设计

上一篇:ARM与TSMC完成首件20纳米ARM Cortex-A15 处理器设计定案
下一篇:基于ARM和DSP架构的多处理器高速通信协议设计

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

英特尔、AMD、Arm 等为小芯片互连制定UCIe标准
今天,英特尔、AMD、Arm、Google Cloud、Meta、微软公司、高通公司、三星和台积电等公司宣布建立一个小芯片互联标准UCIe。    UCIe(Universal Chiplet Interconnect Express)将是一个开放的小芯片互连协议,将满足客户对可定制封装要求。 据报道,创始公司批准了UCIe 1.0规范,旨在在封装级建立无处不在的互连,利用了成熟的 PCI Express (PCIe) 和 Compute Express Link (CXL) 行业标准。    IT之家了解到,这套标准将让不同制造商的小芯片之间的互通成为可能,允许不同厂商的芯片进行混搭。 据AnandTech报道,今天
[半导体设计/制造]
英特尔、AMD、<font color='red'>Arm</font> 等为小芯片互连制定UCIe标准
开源、可重复使用的软件堆栈助力实现实时处理和CbM算法开发
Open-Source, Reusable Software Stack Enables Real-Time Processing and Algorithm Development for CbM 开源、可重复使用的软件堆栈助力实现实时处理和CbM算法开发 CN0549状态监控平台简介 在本文中,我们将重点介绍CN0549的不同组件可用的软件生态系统、数据分析工具和软件集成,以及工程师和数据专家如何使用它们进行应用开发。我们分两部分来介绍使用CN0549开发平台进行状态监控(CbM)和预测性维护(PdM)应用,这是该系列文章的第二篇。新平台旨在加快定制CbM解决方案从原型制作到生产的整个开发流程。第一部分主要介
[嵌入式]
 开源、可重复使用的软件堆栈助力实现实时处理和CbM算法开发
我与ARM的那些事儿2JINLK烧录nor flash
前言 最近在研究mini2440的友善之臂,但是我拿着的是实验室早期买的开发板,在做裸机开发的过程中老是不能很好地使用最新版的minitools进行烧录,因而各种不爽,因为生成了bin文件不能很好地传到mini2440中,作为一个对开发有着强迫症的我,去各大网站上找烧录的方法,但是我找到的都是老的一个烧录方式的确是有些帮助,但是无法帮助我完成烧录nor flash。于是我找到了参考了一些网站的方法! Jlink驱动 首先你得有一个jlink v8的协调器,如果没有的话,你可以在淘宝上直接买一个! 如果你有,但是你缺少驱动,OK,我从CSDN上下好了驱动! 地址: http://url.cn/QUfkrS Jlink for ar
[单片机]
我与<font color='red'>ARM</font>的那些事儿2JINLK烧录nor flash
采用ARM+Android的智能近视分析仪
新医改启动以来,加快推进了医疗卫生的信息化和智能化,智能医疗正成为整个医疗产业的热点,有助改善看病难题,提高医疗机构的工作效率,人们在社区或家里就可以享受到医疗服务。医疗终端设备的小型化,信息化,智能化,为智能医疗行业的发展提供了条件。智能医疗对于医疗设备制造商、芯片企业、应用开发等产业链的各个环节,是一座“金矿”、一项潜力极大的“朝阳产业”。 最新数据统计显示,我国近视人数不但高达4.5亿,且呈逐年上升的趋势。目前,青少年近视患病率已经高居世界第一位。其中青少年近视情况尤为令人担忧:全国7岁~12岁的小学生、13岁~15岁的初中生、16岁~18岁的高中生及19岁~22岁的大学生,他们的视力不良率分别为45.71%、74.36%、
[医疗电子]
采用<font color='red'>ARM</font>+Android的智能近视分析仪
恩智浦将基于ARM的Layerscape®系列处理器与微软Azure IoT集成
德国纽伦堡,2018年2月27日 – 作为全球领先的高级连接解决方案提供商,恩智浦半导体 (NXP Semiconductors™ N.V.)(纳斯达克代码:NXPI),今日宣布其Layerscape片上系统(SoC)平台与微软Azure IoT Edge集成。如此一来,开发人员便能够借助可信计算平台,在Azure IoT Edge所提供的丰富框架内轻松创建各种即时可用的应用。 若要在边缘设备上运行基于云的应用,需要一个安全的执行环境。Layerscape SoC能够保证Azure IoT Edge计算的安全执行,帮助运行网络、数据分析和计算密集型机器学习应用。 恩智浦数字网络资深副总裁Tareq Bustami评价道:“
[半导体设计/制造]
Linux内核高-低端内存设置代码跟踪(ARM构架)
对于ARM中内核如何在启动的时候设置高低端内存的分界线(也是逻辑地址与虚拟地址分界线(虚拟地址)减去那个固定的偏移),这里我稍微引导下(内核分析使用 Linux-3.0 ): 首先定位设置内核虚拟地址起始位置(也就是内核逻辑地址末端+1的地址)的文件:init.c (arch\arm\mm),在这个文件中的void __init bootmem_init(void)函数如下 void __init bootmem_init(void) { unsigned long min, max_low, max_high; max_low = max_high = 0; find_limi
[单片机]
基于S3C4510B的ARM开发平台
1 引言 嵌入式系统的高速发展极大地推动了ARM嵌入式微处理器的发展。以前的嵌入式系统大多采用CISC架构,该体系由于指令集庞大,指令长度不固定,指令执行周期有长有短,使指令译码和流水线的实现在硬件上非常复杂,给芯片的设计带来了很大的麻烦。跟CISC相比,RISC则很好地解决了这些弱点。 RISC 以其硬件结构单纯,成本低,省电良好的优良特性受到了嵌入式系统的青睐,尤其是 32 位 RISC 处理器,而ARM正是32位RISC微处理器。本文主要从芯片级硬件设计开发进行介绍,采用一种比较流行的,在手持式以及便携式设备应用广泛的ARM芯片 — Samsung 公司推出的S3C4510B,以及基于S3C4510B芯片的ARM开发平台。
[单片机]
基于S3C4510B的<font color='red'>ARM</font>开发平台
Nordic Semiconductor 与 Arm 扩展合作关系
签署最新低功耗处理器设计、软件平台和安全 IP 许可协议 Nordic签署 Arm Total Access 授权许可协议,确保其现有和未来的多协议、Wi-Fi、蜂窝物联网和DECT NR+ 产品具备业界领先的处理器和安全技术 挪威奥斯陆 – 2024年2月20日 – Nordic Semiconductor宣布与世界领先的半导体设计和软件平台企业Arm签署一项多年期Arm Total Access (ATA)授权许可协议 。ATA 保证为Nordic当前和未来的产品 (包括多协议、Wi-Fi、蜂窝物联网和 DECT NR+ 解决方案) 提供广泛的Arm® IP、工具、支持和培训。 两家企业的合作始于 2012
[物联网]
Nordic Semiconductor 与 <font color='red'>Arm</font> 扩展合作关系
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

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