基于ARM的无线数据采集器设计.docx
- 文档编号:8940997
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:11
- 大小:23.45KB
基于ARM的无线数据采集器设计.docx
《基于ARM的无线数据采集器设计.docx》由会员分享,可在线阅读,更多相关《基于ARM的无线数据采集器设计.docx(11页珍藏版)》请在冰点文库上搜索。
基于ARM的无线数据采集器设计
基于ARM的无线数据采集器设计
阎连龙
(广东技术师范学院,广东广州510665
摘
要:
分析了采用PC机作为监控设备的缺陷,采用基于ARM的无线传感器数据采集器的必要性。
重点完成
了无线数据采集器电路设计和驱动程序设计。
ARM9通过SPI总线进行数据的传输和相应的I/O对CC2420控制根据WindowsCE的驱动模型,利用流式设备驱动程序来驱动CC2420,实现粮仓温湿度采集的要求。
关键词:
ARM;CC2420;采集器中图分类号:
TP311
文献标识码:
A
文章编号:
1672-402X(200903-0025-04
收稿日期:
2009-08-10
作者简介:
阎连龙(1980-,男,河南信阳人,广东技术师范学院网络中心助教。
研究方向:
计算机网络及安全管理。
广东技术师范学院学报(自然科学
2009年第3期JournalofGuangdongPolytechnicNormalUniversityNo.3,2009
0引言
现代化的粮仓监控系统对粮食的安全性提出了很高的要求。
将基于ZigBee技术的无线传感器网络应用于粮仓监控系统,不需工作人员到达现场,只需在监测的区域任意安置传感器节点,利用传感器就可将粮仓内粮食的温度、湿度等情况通过无线通信方式形成的网络系统将数据发送到监控主机,管理人员根据显示结果就可以对粮仓温湿度进行相应调节,就可以实现安全储粮的目的。
但在这个无线传感器网络中,采用PC机作为监控设备不但体积大、功耗大,对于传输率不大的传感器网络来说十分浪费资源。
在ARM技术不断发展的今天,便携式的监控设备已经成为一种潮流。
开发以ARM为核心微处理器的无线传感器数据采集器可以使操作人员即时地掌握各监测点的环境状态,能够满足粮仓环境监控灵活的设计要求。
本文主要完成基于ARM9的无线传感器采集器设计,并采用基于WindowsCE完成CC2420通信模块的驱动程序设计以实现数据采集。
1采集器总体结构设计
采集器接收来自其他节点数据,并对数据进行校正、融合等处理,因此对中央控制器的数据传输和运算能力有较高的要求。
本文采用较强的信息处理能力和网络功能的ARM9系列芯片作为控制器完成硬件系统的搭建。
并采用CC2420作为射频模块进
行整体设计。
无线传感器网络数据采集器是主要由电源模块、处理控制器模块、通信模块和数据采集模块组成,如图1所示。
图1无线传感器网络数据采集器的结构框图
2硬件平台设计
温湿度传感器采用SHT11,该芯片支持低功耗模式,采集完数据后自动转入休眠模式,电流小于
1μA。
而CC2420模块是采集器的一个重点部分,完成采集数据和无线传感器网络的通讯。
CC2420是TexasInstruments公司的一款无线收发芯片,适合低速无线个人局域网通信,采用IEEE802.15.4标准,工作在2.4GHz的免授权频段支持16个最大传输速率为250Kbps的信道。
CC2420内部有33个16位的配置寄存器,15个命令选通寄存器,1个128字节的RXRAM,1个128字节的TXRAM,还有一个112字节的安全信息存储器。
采用SPI总线传输数据,TXRAM和RXRAM的存取可以通过地址,也可以通过两个八位的寄存器,还可以向访问FIFO缓存一
样访问它们,但是不能读写任何信息到安全信息
RAM。
它的外围电路主要包括晶振电路、天线及阻抗
匹配电路、接口电路和引脚的去耦滤波电路等。
ARM9系列处理器是英国ARM公司设计的主
温湿度传感器
SHT11射频模块
CC2420
ARM处理器SamsungS3C2440
SPI
TC
系统电源模块
第3期阎连龙:
基于ARM的无线数据采集器设计
流嵌入式处理器。
新一代的ARM9处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上ARM7处理器的处理能力。
这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。
ARM9开发板上的芯片的集成度比较高,整个开发板的体积相对较小。
附带触屏的LCD显示和控制都很方便。
而这里采用MINI2440开发板,它采用SamsungS3C2440为微处理器,具有专业稳定的CPU内核电源芯片和复位芯片可以保证系统运行时的稳定性。
系统电源模块采用DC3.3V为ARM处理器和ZigBee模块供电。
CC2420通过标准的SPI接口与ARM9处理器S3C2440进行数据通讯。
CC2420还通过SFD、FIFOP、FIFO、CCA四条状态信号线将CC2420的工作状态反馈给S3C2440,S3C2440根据CC2420的反馈信息控制CC2420的发送和接收。
CC2420的电源也可以通过ARM9的开发板提供。
使用ARM9作为MCU,CC2420作为无线模块,整体上数据的处理和采集都比较快,成本也相应的低。
该方案提高了数据处理的能力、携带方便、低功耗。
对于ARM9开发板,已经是一个做好的成品,只需要根据板的电路设计图,找出能驱动CC2420的I/O口便可。
图2是CC2420与微控制器的连接图。
图2CC2420与微控制器的连接图
3WindowsCE系统的驱动
设备驱动程序是操作系统和外部具体的硬件设备或逻辑设备之间通信的桥梁,它使得操作系统能够识别设备,并为应用程序提供设备服务。
这里采用基于WindowsCE系统构建。
WindowsCE是一个开放的、可裁减的、32位的实时嵌入式窗口操作系统,它为有限的硬件资源提供了多线程、多任务和完全优先级的计算环境。
ARM9系统的可视化应用程序,可以方便地在此平台上设计实现,而对数据采集的操作控制则由底层设备驱动程序完成。
因此ARM9测试应用的WindowsCE驱动程序设计,是ARM9测试应用的关键技术。
3.1WindowsCE驱动程序模型
WindowsCE支持两种驱动模型:
本地设备驱动和流接口驱动。
本地设备驱动是专为底层内置硬件而设计的,如液晶显示和电源管理等。
流接口驱动指的是导出流接口函数的驱动程序。
流接口驱动适合于那些在逻辑上可以被看作是一个数据源或者数据存储设备的I/O设备,即任何以产生或者消耗数据流作为主要功能的外围设备。
本文实现的CC2420通信模块的驱动程序就是流接口驱动程序。
流接口驱动程序架构如图3所示。
图3流接口驱动架构
3.2CC2420通信模块驱动的设计
3.2.1CC2420模块驱动设计
ARM处理器通过SPI总线对CC2420通信模块进行操作,所以驱动程序首先要实现SPI总线输入、输出操作。
S3C2440有两路SPI总线,每路分别有两个8位的发送和接收移位寄存器,并且任何一路SPI都可以同时和外部设备进行8位数据的发送和接收。
SPI驱动比较简单,主要实现两个函数,一个用于数据发送,另一个用于数据接收,它们基本流程相似,图4是SPI发送数据的流程图。
图4SPI发送数据流程图
SPI总线的读写操作实现之后就可以编写操作无线收发芯片CC2420的代码了。
对CC2420的操作主要包括读写CC2420内部寄存器、发送缓冲区、接
CC2420
VCCFIFOFIFOPCCASFDCSnSISOSCLKGND
MCU
VCC
GIO0
Interrupt
GIO1
TimerCapture
GIO2
MOSI
MISO
SCLK
GND
内建的流式设备
应用程序
文件系统文件系统
Windows
CE内核
OAL
设备管理器
流接口驱动程序
中断事件
硬件平台
文件API
硬件软件是否超时
打开SPI时钟
是否可以发送数据
发送数据
延时
关闭SPI时钟
Y
N
Y
N
第3期
收缓冲区和RAM。
对发送和接收缓冲区的读写是通过读写两个8bit的寄存器TXFIFO和RXFIFO实现的。
TXFIFO寄存器主要用于发送数据时通过该寄存器向TXRAM中写数据,而RXFIFO为接收数据时从RXRAM读取接收到的数据。
其次需要根据流接口驱动程序的模型来实现流驱动接口函数。
CC2420驱动程序主要由实现CC2420初始化函数CCD_Init,从CC2420读取数据的函数CCD_Read,向CC2420写数据的函数CCD_Write等组成,CCD是CC2420通信模块的设备名。
(1CCD_Init
CCD_Init是在WindowsCE启动时由设备管理器加载,主要完成对SPI接口和CC2420的初始化工作。
创建和中断相关联的事件并且使其和中断相关联;创建了IST线程,在中断发生时,及时读取CC2420接收到的数据;初始化驱动程序的缓存数据结构并为其分配内存空间。
但是在对硬件进行初始化之前,首先要解决驱动程序访问CPUI/O端口的问题。
在ARM体系结构下,I/O端口被映射成物理内存地址,但是除了系统启动时内存管理单元被启动之前执行的一段代码之外,WindowsCE内核和应用程序都是工作在虚拟内存模式下的,所以对I/O端口的访问必须通过虚拟地址。
这里主要用到两个系统函数VirtualAlloc(和VirtualCopy(。
首先调用VirtualAlloc(在虚拟内存空间分配一段虚拟内存,然后调用VirtualCopy(把I/O端口物理内存和这段虚拟内存绑定,这样通过这段虚拟内存就可以实现对I/O端口的访问。
(2CCD_Read
CCD_Read的作用是从CC2420接收缓冲区中读取数据并且存储在缓存结构中。
在CCD_Read函数中创建了一个线程函数,从而可以将数据采集的任务放到线程中执行,同时创建了一个线程退出事件,这样在应用层结束采集后,通知线程回调函数结束本次线程的执行。
在函数中设定线程最长等待时间为50ms,一旦50ms过后,线程仍未返回,就调用TerminateThread强制终止此线程,如果正常返回,则将数据采集的结果存入缓冲区中。
(3CCD_Write
CCD_Write用于向CC2420输出要发送的数据,发送数据比较简单,只要按照IEEE802.15.4MAC数据帧格式形成帧头,然后将帧长和要发送的数据一起写入CC2420的发送缓冲区即可,物理层的同步信息以及CRC校验由CC2420自动产生。
3.2.2配置驱动程序
CC2420通信模块驱动程序代码编写完成之后,必须添加信息才能将驱动程序添加到操作系统平台之中,需要编写的配置信息包括以下几项:
(1编写驱动程序导出函数定义文件.DEF下面是CC2420通信模块驱动的.DEF文件,用于把所有流接口函数导出,让WindowsCE知道本驱动有哪些函数。
CC2420.def的文件内容如下:
LIBRARYCC2420
EXPORTS
CCD_Init
CCD_Deinit
CCD_Open
CCD_Close
CCD_Read
CCD_Write
CCD_Seek
CCD_IOControl
CCD_PowerDown
CCD_PowerUp
(2在Platform.reg中添加驱动注册表
WindowsCE开始启动后,设备管理器根据设备驱动程序在注册表中的信息来加载驱动,要想驱动程序正确加载,必须在注册表中写入正确的配置信息。
因为CC2420的驱动是和平台相关,所以,将它的注册表信息放在Platform.reg文件中。
CC2420通信模块的驱动程序被设计成在系统启动时被设备管理器Device.exe加载,而Device.exe是通过查找注册HKEY_LOCAL_MACHINE\Drivers\BuiltIn键值下的注册表项来加载驱动的,所以需要在Platform.reg中添加如下注册表信息:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CCD]"DLL"="CC2420.dll"
"Prefix"="CCD"
"Index"=dword:
1
"Order"=dword:
0
其中,第一项说明驱动程序所在的动态链接库在CC2420.dll里。
第二项“Prefix”是说明CC2420无线射频模块的名称是CCD,因为在流驱动程序里,需要为硬件设备设置一个三个大写字母的名称,如串口是COM等。
第三项“Index”是说明该硬件在同种
阎连龙:
基于ARM的无线数据采集器设计27··
第3期
设备中是第几个,因为这里只有一个CC2420射频模块,所以这里的值设置为1。
“Order”说明设备管理器加载驱动程序的次序,设备管理器需要加载多个驱动程序,而加载的次序就是根据各个设备在注册表信息里设定的Order。
(3在Platform.bib中添加驱动模块信息
有了驱动程序和注册表文件,驱动程序还不能够正确地运行。
因为他还没有被加入到内核中。
这里通过修改BIB文件将一个文件添加到定制的内核中。
Platform.bib中定义的是与硬件设备相关的模块和文件,比如设备驱动程序。
所以为了让CC2420通信模块驱动程序成为操作系统映像的一部分,需要在Platform.bib中添加如下信息:
CC2420.dll$(_FLA-TRELEASEDIR\CC2420.dllNKSH,其中$(_FLATRE-
LEASEDIR\CC2420.dll是驱动程序dll文件在被包含进系统映像文件之前的位置信息,NK表示驱动程序最终被加载到NK存储区域,也就是存放系统映像的存储区域,S表示CC2420.dll文件属于系统文件,H表示CC2420.dll是隐藏文件。
配置信息编写完成之后,修改BSP文件夹中有关驱动的makefile文件和sources文件,利用Plat-formBuilder创建一个新的项目,编译生成系统映像文件,通过以太网将映像文件下载到ARM9硬件平台。
至此,基于WindowsCE操作系统下的CC2420
通信模块的驱动程序定制完成。
4结语
本文主要完成基于ARM9的嵌入式无线数据采集器的设计,在熟悉WindowsCE开发系统的情况下
实现CC2420通信模块驱动。
WindowsCE的实时性能够保证数据采集的响应速度,友好的人机交互和较强的抗干扰能力,使采集器可以成功地采集无线传感器网络的数据,并通过ARM9显示出来。
参考文献:
[1]卞东进,曾伟,陈家胜.无线加速度传感器及其ARM基站
的设计[J].仪表技术与传感器,2008,(10:
12-13.[2]张瑞华,袁东风.基于嵌入式无线传感器网络平台的实现
[J].计算机工程与设计,2006,27(18:
3349-3352.
[3]蔡义华,刘刚,李莉,刘卉.基于无线传感器网络的农田信息
采集节点设计与试验[J].农业工程学报,2009,25(4:
176-
178.
[4]孙婷,田泽,闫效莺.基于S3C2440的WindowsCE设备驱
动的研究与实践[J].现代电子技术,2007,269(6:
153-158.[5]张江洪.基于S3C2440和WindowsCE的车载免提电话设
计[J].湖南文理学院学报(自然科学版,2009,21(3:
61-63.[6]潘若禹,朱铮艳,李磊.基于ARM9的道路交通数据采集系
统设计[J].现代电子技术,2008,278(15:
189-192.
[7]王宁宁,赵秋生,王深,李冠.基于ARM9的无线多床位心电
监护仪的设计[J].ARM开发与应用,2009,4(2:
161-163.[8]王平,吴怡,施文灶等.基于S3C2410的ZIGBEE无线传感
器网络网关的设计[J].单片机与嵌入式系统应用,2009,(8:
17-19.
[9]刘卉,汪懋华,王跃宣,马道坤,李海霞.基于无线传感器网络
的农田土壤温湿度监测系统的设计与开发[J].吉林大学学报(工学版,2008,38(3.604-608.
[10]肖本强,党丹丹,张大权.基于ZigBee协议的远程抄表系
统基站的设计[J].传感器与仪器仪表,2008,24(2:
140-142.
阎连龙:
基于ARM的无线数据采集器设计DesignofWirelessDataCollectorBasedonARM
YANLianlong
(GuangdongPolytechnicNormalUniversity,Guangzhou510665,China
Abstract:
Thispaperanalyzesthemonitoringequipmentshortcomingofpersonalcomputer,explainsthene-cessityofadoptingwirelesssensordataacquisitionbasedonARM,focusesonaccomplishingthewirelessdataac-quisitionunitcircuitdesignanddriverprogramming.ARM9achievesdatatransmissionthroughtheSPIbusandcontrolsCC2420bythecorrespondingI/O;InaccordancewithWindowsCEdrivermodel,utilizingstreamingde-
vicedriverprocedurestodriveCC2420torealizethegranarytemperatureandhumiditydataacquisition.
Keywords:
ARM;CC2420;collector
28··
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ARM 无线数据 采集 设计