TinyOS的CC1100驱动程序设计_第1页
TinyOS的CC1100驱动程序设计_第2页
TinyOS的CC1100驱动程序设计_第3页
TinyOS的CC1100驱动程序设计_第4页
TinyOS的CC1100驱动程序设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【Word版本下载可任意编辑】 TinyOS的CC1100驱动程序设计 摘 要:在无线传感器网络中,网络整体性能取决于节点上的通信模块。该文根据实际需要,在实现网络基本功能的前提下,选用功耗较小的CC1100芯片作为节点的无线收发单元。在分析CC1100功能特性并介绍嵌入式操作系统TinyOS的根底上,阐述如何使用NesC语言实现基于MSP430F1611平台的CC1100驱动程序。 1 概述 无线传感器网络(Wireless Sensor Network, WSN)是当前信息技术领域的热点研究方向之一,它综合了传感器技术、遥测技术、嵌入式计算技术、分布式信息处理技术和无线通信技术,是一种通过

2、无线通信方式形成的多跳自组织网络系统。无线传感器网络由大量体积小、功耗低、具有无线通信、传感和数据处理功能的传感器节点组成。节点是无线传感器网络的基本单元,它一般由传感器模块(传感器、A/D转换器)、处理器模块(微处理器、存储器)、无线通信模块(无线收发器)和能量供给模块(电池)组成。 本文研发的无线传感器网络节点选用Chipcon公司低功耗低成本单片收发芯片CC1100作为无线通信模块,将其通过SPI串行总线技术与MCU(MSP430F1611)相连。采用加州大学伯克利分校人员专门为无线传感器网络开发的嵌入式操作系统TinyOS作为软件平台。 2 设计需求分析 无线传感器网络由大量资源受限的

3、节点组成。资源受限的特点决定了在选择无线收发芯片以及开发驱动时,必须满足低功耗,并实现收发分组的基本功能。节点对CC1100的主要功能要求如下:发送时把MCU递交过来的数据封装成帧并实现分组发送;接收时完成分组接收后把数据提取出来交给MCU.无线传感器网络中节点发送一个比特所消耗的能量约等于其处理器开展1 000次32位加法运算消耗的能量,因此,为了减少分组碰撞,降低因分组重发而消耗的能量,CC1100应实现发送数据之前的信道监听即载波监听功能。为了进一步降低能耗,节点在没有数据发送或接收时应置于休眠状态,并可以按指定方式激活,即具有休眠唤醒功能。具体设计需求如下: (1)收发分组。这是CC1

4、100需要实现的主要功能,CC1100在发送数据前,要完成数据的分组封装,CC1100无线通信协议的分组格式如下: 其中,前导码是一连串的10101010?,其数量为8n个比特,n的大小由用户编程决定。同步字的内容和数量均可编程确定,长度为数据域的字节数,数据域内容为MCU递交的数据,CRC校验可以编程选择使用,灰色部分均可编程选择。 (2)载波监听。由于无线传感器中节点数量众多,节点密度大,如果不加控制就互相通信,必然会发生分组碰撞。为了减少碰撞时机,提高节点能量效率,本文通过CC1100的电平检测功能实现载波监听。CC1100提供了2种载波监听方式:门限监听和相对门限监听。门限监听是当信道

5、电平超过某个指定数值时通知信道忙,相对门限监听是当信道电平增加量超过指定倍数(如6 dB)时,检测为信道忙。门限监听需要大量信道特性统计来设置门限电平值,相对门限监听方式可以防止上述工作且能适应时变噪声场合。在本文项目中采用相对门限来监听信道,效果很好。 (3)睡眠唤醒。由于无线传感器节点能量受限,因此在不必要的情况下,应尽量减少节点上硬件资源的活动时间,在多数情况下,无线模块应处于休眠状态。CC1100通过发送一个命令控制器可以关掉无线收发模块。类似地,发送一个唤醒命令控制器可以激活该模块。实现驱动时,笔者把上述命令封装在一个接口中,供上层调用。 3 硬件连接关系 节点上MCU与无线收发模块

6、的硬件连接关系如图1所示。左侧是MCU,采用美国Texas Instruments(TI)公司生产的超低功耗微处理器MSP430F1611,它是一个16 位、具有精简指令集(RISC)、超低功耗的混合型单片机,其片上集成了丰富的外围模块,包括看门狗、定时器、硬件乘法器、A/D转换器等,根据其运行打开的模块数目不同(即采用不同的工作模式),芯片的功耗有着显着差异,除了正常的活动模式外,它具有5种低功耗模式(LPM0LPM4),在等待方式下,其电流仅为0.7 A,在深睡眠情况下,电流仅为0.1 A .右侧是无线收发模块CC1100,它是Chipcon公司采用0.18 m CMOS技术生产的低功耗多

7、频段无线收发芯片,具有尺寸小、功耗低、灵敏度高、独立的64字节收发缓存(TXFIFO/ RXFIFO)、数字化接收信号强度输出(RSSI)等特点,并有前向纠错和数据白化等硬件处理模块。它还具有3个通用数字输出引脚GDOx(x=13),在实际应用时,可以通过存放器配置让它们为上层实时提供信道或分组状态.在硬件平台上,CC1100的4个SPI通信管脚(SI, SO, SCLK, CSn)分别连接到相应MSP430F1611的4个SPI串行通信引脚,即MOSI, MISO, UCLK, MCLK上。通过这4根线,处理器可以对CC1100开展存放器读写和功能配置。由于CC1100只是从机模式,因此处理

8、器只能采用主机模式。另外,本项目采用了其中2个通用数字输出引脚GDO0和GDO2,分别用来实现分组发送指示和载波监听指示。 图1 CC1100与MSP430F1611的硬件连接关系 CC1100与MSP430F1611通信时,时钟源由MSP430F1611提供,经过配置处理器存放器,本文采用其外围时钟模块的系统子时钟SMCLK.它们的通信方式为SPI串行通信方式。SPI通信是一种高速、全双工的同步总线通信技术,其硬件功能很强大,仅通过4个管脚,就可以在主机时钟源SCLK节拍的控制下,通过2个双向移位存放器实现CC1100与MSP430F1611的串行数据交换。CSn引脚主要用来控制数据通信的同

9、步性,在CC1100和MSP430F1611通信期间,要始终保证CSn引脚电平为低。 4 软件平台 TinyOS操作系统是目前无线传感器网络中应用较广泛的操作系统,它是UC Berkeley开发的源代码开放式操作系统,专门为无线传感网络设计。它基于组件的架构方式,可以快速实现各种应用。此外,其轻量级线程技术、事件驱动模式、主动消息通信技术等思想极大提高了节点的资源利用率.TinyOS环境下编程语言为NesC,NesC是对C语言的扩展,扩展的目的是将C的模块化思想与TinyOS的事件驱动机制结合起来。为了支持组件化编程模式,NesC语言引入了接口和组件的概念。接口是一系统功能类似或相关的函数声明

10、,根据不同方向命名为命令或事件,具体实现在提供或使用该接口的组件中。组件包括配件和模块,配件负责把不同组件通过接口连接起来,模块提供程序所需的代码实现。组件中的接口是双向的,它给出使用者可以调用的命令或必须处理的事件。不同组件之间通过接口静态连接,以提高程序的运行效率,增加程序的鲁棒性。NesC的并发模型是基于运行到结束的任务实现的,程序运行任务时,硬件中断服务程序能抢占任务,且在中断服务程序中也可能出现其他中断服务程序来抢占的现象,甚至出现多级中断嵌套。但由于中断处理程序只做少量工作,会很快执行完毕,因此没有提交成功的任务不会被无限期挂起。 5 CC1100驱动实现 在TinyOS中,硬件抽

11、象体系构造(Hardware Abstract Architecture, HAA)一般有3个不同的抽象层次,根据不同需要,可以灵活地实现不同芯片、不同平台、甚至不同系统间的程序调用。但考虑到代码数量、程序复杂度、节点资源等因素,在设计CC1100驱动程序时,需要借鉴TinyOS 3层抽象体系外,并兼顾节点存储能力和运算能力。 5.1 TinyOS中的硬件抽象体系构造 TinyOS 中的硬件抽象体系构造一般分为3层,如图2所示,分别为硬件表示层(HPL)、硬件抽象层(HAL)和硬件接口层(HIL).通过对硬件平台开展不同层次的抽象,可以在系统开发中有区别地向上层屏蔽硬件特征,从而实现在不同程度

12、上隔离上层组件和物理平台,便于程序移植。在功能上,硬件抽象组件相当于底层硬件的驱动程序,上层组件通过硬件抽象组件提供的接口开展调用。 图2 TinyOS 中的硬件抽象体系构造 在图2中,硬件表示层通过存储器或端口映射对硬件平台上某个模块(如通信模块、存储模块等)开展直接操作与控制,对上层屏蔽硬件特征,实现软/硬件的分离,从而实现该模块硬件功能的软件语言表达。硬件接口层在硬件抽象层的根底上实现对该硬件的功能操作,这是该体系构造的,通过调用该层接口,可以实现平台上某个模块提供的全部功能。硬件接口层是针对平台上不同芯片(如一个硬件平台上的2个通信模块CC1100和CC2420)的更高层次的抽象,它通

13、过不同硬件抽象层提供的接口,把平台上不同芯片的组件封装成与底层组件芯片甚至硬件芯片无关的接口供高层调用,从而屏蔽不同芯片的差异,实现了兼容性较强的跨平台抽象体 系构造。 5.2 CC1100驱动体系构造 在设计驱动程序时,由于CC1100硬件功能强大并能够提供丰富的控制存放器资源,通过对这些存放器的配置可以实现基本功能,因此在设计时,笔者侧重于构建一个合理的组件层次构造,以便模块的修改与跨平台应用。在笔者开发的节点上只有一个通信模块CC1100,未涉及多个无线收发芯片,加上节点处理、存储能力的限制,在满足需求的前提下,本文只设计了TinyOS 硬件抽象体系3层中的下2层,从而到达缩减代码、节约

14、能量的目的。CC1100驱动体系构造体系如图3所示。 图3 CC1100驱动体系构造 在图3中,硬件表示层配件HPLCC1100C向上层提供了3个接口:StdControl, Chipcon, CCFIFO,模块HPLCC1100M完成对CC1100直接控制和基本功能的软件表达,实现3个接口的全部命令执行代码。硬件抽象层配件CC1100RadioC向上层提供了4个接口:StdControl, PhyState, PhyPacket和CarriSns,模块CC1100RadioM包含了CC1100全部功能的软件实现。本文结合CC1100驱动体系构造,简要介绍其主要功能,即收发分组。 HAL层的C

15、C1100RadioM模块是物理层组件构造的高层,该模块主要实现对分组的发送与接收、对无线发送模块的状态开展控制以及载波监听功能。其中,StdControl接口主要完成无线收发模块的初始化和CC1100的启动及停止;PhyState实现CC1100的各个工作状态的切换,包括无线模块的休眠和唤醒;PhyPacket实现分组的收发,高层组件可以直接调用该接口开展数据发送或接收;CarriSns用来为上层提供载波监听功能,通过硬件引脚电平情况来判断信道忙闲状态。上述接口只是相关命令或事件的声明,其真正实现在提供这些接口的模块,即CC1100RadioM中。 HPL层的HPLCC1100M()模块实现

16、对无线通信模块的直接控制和软件表达,实质是对CC1100各个存放器开展读写。该模块为整个硬件平台提供了SPI同步串行通信机制,向上层提供了StdControl, Chipcon, CCFIFO接口。其中,StdControl接口完成CC1100复位并初始化底层芯片,包括SPI通信时钟源选择、波特率设置、引脚输入输出方式以及无线收发模块的射频频率、调制方式、数据速率、信号检测方式等;Chipcon接口实现控制存放器读写操作和命令控制器的发送,以实现对CC1100的配置和控制,其实现方式是SPI串行通信,CCFIFO主要完成TXFIFO和RXFIFO的数据连续读写操作,主要是在发送或接收数据时供C

17、C1100RadioM调用。上述接口只是相关命令或事件的声明,其真正实现在提供这些接口的模块即HPLCC1100M中。 当上层组件把需要发送的数据递交下来,并调用CC1100RadioM组件提供的接口PhyPacket中的发送命令时,CC1100RadioM会先调用HPLCC1100M中CCFIFO接口提供的写FIFO命令把要发送的数据写入发送缓存TXFIFO中,笔者使用CC1100的连续读写方式来实现。然后发送命令控制器STX使能CC1100开始发送分组,并把CC1100状态切换到发送状态。本文使用了CC1100的通用数字输出引脚GDO2,通过适当配置,该引脚电平会在CC1100发送/接收完

18、前导码时产生上升沿跳变,在整个分组发送/接收完成后产生下降沿跳变。可以通过查询GDO2引脚电平来判断分组是否写入完毕。当发送数据写完以后,CC1100会按第2节所述的分组格式对数据开展封装,上层组件通过查询GDO2引脚确定分组发送完毕后,根据需要再发送命令控制器把CC1100置于空闲或休眠状态。 接收分组时节点会先检测信道中的前导码,如果按指定方式检测到指定数量的前导码,CC1100的GDO2引脚电平会产生一个上升沿跳变,上层组件得知引脚跳变后,会把CC1100切换到接收状态并调用HPLCC1100M组件中的读取接收缓存RXFIFO命令,然后开始读取接收缓存,读取完CC1100接收缓存中的分组并把有用数据提取出来交给上层后,可以根据需要把它置于空闲或休眠状态。在程序实现过程中,为了节约节点能源,减少MSP430F1611的活动时间,笔者没有使用等待查询方式而采用硬件中断方式,即使用了GDO2引脚的电平跳

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论