微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 传感器 > 一种无线传感器网络CSMA协议的设计与实现

一种无线传感器网络CSMA协议的设计与实现

时间:02-14 来源:3721RD 点击:

CSMA协议是网络中运用得最为广泛的竞争协议,因此无线传感器网络的MAC层大多使用CSMA机制来提供竞争信道的功能。随着IEEE 802.15.4标准的制定,各射频芯片厂家也纷纷推出了性能更好、功能更强的射频芯片。TI公司(原Chipcon)推出CC2420来替代原来无线传感器网络使用最多的射频芯片CC1000。由于各射频芯片特性功能各不相同,为了使CSMA协议达到更好的性能,根据射频芯片的具体特性来重新优化设计CSMA机制也就变得很有必要。

本文使用TI公司的MSP4301611超低功耗MCU,以及CC2420射频芯片作为硬件实验平台,充分利用CC2420部分IEEE 802.15.4协议MAC封装的特性,设计并实现了一个全新的、灵活的CSMA协议。

1 信道监测的设计

实现CSMA协议的最基本的条件就是物理层必须提供可靠、实用的信道监测手段,因此首先要了解射频芯片的一些特性。

1.1 CC2420的相关特性

CC2420是TI公司推出的2.4 GHz射频芯片,其硬件封装支持部分IEEE 802.15.4的MAC层协议规定。CC2420的功能结构如图1所示,CC2420的数字接口具有自动CRC校验、自动加密的功能,并维护两个缓冲区(一个接收FIFO,一个发送FIFO)。数字接口通过SPI通信接口与微处理器相连。CC2420是以数据包为单位的射频芯片,即必须从微处理器收满一个数据包,才会发送该数据包。数字接口收满一整包后,自动添加CRC校验,并送入调制模块进行数据调制和整形,最后发送出去。当监测到信道有数据时,将数据经过模/数转换后送入数字解调器中进行帧同步;如果同步就将数据填入接收缓冲区中,最后填充当前信道内的RSSI(Receive Signal Strength Indicator,接收信号强度指示器)信息。

图1 CC2420功能结构图

CC2420提供一个读取RSSI值的命令,开发者可以调用该命令来得到当前信道的信号强度值,并通过对该值的解析来判定当前信道是空闲还是繁忙。另外,CC2420在接收到数据包时,可以自动在数据包的倒数第二个字节里填充当前接收数据包时的RSSI值。这种特性对于信号强度阈值的更新维护十分有用。

1.2 信道监测的设计

CC2420提供了一项CSMACA的功能,称为CCA(Clear Channel Assessment,空闲信道评估),它使用一个寄存器来设置阈值。当CC2420收到CCA命令后,就开始采样RSSI值,只有采样到的RSSI值小于寄存器中的阈值时才允许发送数据。CCA虽然实现了信道监测的基本功能,但是也有其自身的缺点: 不够灵活且开放程度不够,只能进行一次完整的通道监测,并不能设置采样次数。这就限制了它在其他协议中的使用,例如在LPL(Low Power Listening,低功耗侦听)协议中,只需要进行一次采样作为侦听。另外,它的判定机制并不够完善,只有一个阈值,因而开发者难以找到合适的阈值。

本文参照CCA的阈值机制,设置上下阈值并利用CC2420读取RSSI采样值的命令,用软件来完成信道监测工作。本文使用的信道监测及判定的基本原理就是: 先设置两个适当的信号强度阈值,一个是最小信号强度minSignal,其含义是信道中有数据发送时的最小信号强度值;另一个是噪声强度noiseStrength,其含义是信道空闲时的信号强度值。然后物理层在一段时间内不断地进行RSSI采样,并把采样结果按照某种规则(在实现中有具体说明)与阈值进行比较,从而得到信道的活动状态。而且为了更准确地反映信道状态,在不能判断信道活动状态时,还应有扩展采样机制。

另外,这两个信号强度阈值并不是一直不变的,它们必须根据信道一段时期的信号强度情况来动态更新,因此本文还实现了一种阈值更新机制,它能根据当前的信道信号强度和一些强度统计信息来动态地更新阈值。

从接口上看,物理层的信道监测只是提供给MAC层的CSMA协议一个探测信道的接口。为了设计一个灵活的信道探测接口给上层,就必须给上层一些调整的接口,例如可以让上层来设定具体某次监测的采样次数,这样上层就可以根据不同的实际情况来设定采样数。图2为物理层信道监测提供的接口与MAC层CSMA的关系简图。

图2 信道监测接口与CSMA关系简图

2 信道监测的实现

2.1 信道活动状态判断的基本规则

采样得到的RSSI值是一个有符号的振幅值,它只有一个字节。这样的值并不利于分析,所以统一将其值上升128,即对读出的RSSI值统一加上128,因此转换后的值都是为正的,后面提到的RSSI值指的都是转换后的值。

假设上层设定信道采样窗口数为N。为了完成连续的N次采样,需要使用一个采样定时器。CC2420的RSSI采样时间约为128 μs,再加上硬件延迟以及软件处理延迟时间,采样定时器设置为1 ms循环触发(这1 ms的采样在CSMA中称为"采样窗口")。每次定时器触发

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top