基于CC2420的Zigbee无线网络系统的实现
1 Zigbee协议概述
1.1 IEEE 802.15.4
Zigbee协议使用IEEE 802.15.4规范作为介质访问层(MAC)和物理层(PHY)。IEEE 802.15.4总共定义了3个频带:2.4GHz、915MHz和868MHz。每个频带提供固定数量的信道。例如,2.4GHz频带有16个信道(信道11-26)、915MHz频带提供10个信道(信道1-10)而868MHz频带提供1个信道(信道0)。
协议的比特率由所选择的工作频率决定。2.4GHz频带提供的数据速率为250kpbs,915MHz频带提供的数据速率为20kbps。由于数据包开销和处理延迟,实际的数据吞吐量会小于规定的比特率。
IEEE 802.15.4 MAC数据包的最大长度为127字节。每个数据包都由头字节和16位CRC值组成。16位CRC值验证帧的完整性。此外,IEEE 802.15.4还可以选择使用应答数据传输机制。使用这种方法,所有特殊ACK标志位置1的帧均会被它们的接收器应答。这就可以确定帧实际上已经被传递了。如果发送帧的时候置位了ACK 标志位而且在一定的超时期限内没有收到应答,发送器将重复进行固定次数的发送,如仍无应答就宣布发生错误。注意接收到应答仅仅表示帧被MAC层正确接收,而不表示帧被正确处理,这是非常重要的。接收节点的MAC 层可能正确地接收并应答了一个帧,但是由于缺乏处理资源,该帧可能被上层丢弃。因此,很多上层和应用程序要求其他的应答响应。
1.2 网络配置
Zigbee无线网络可采用多种类型的配置。
星型网络配置由一个协调器节点(主设备)和一个或多个终端设备(从设备)组成。协调器是实现了一组很多Zigbee服务的一种特殊的全功能设备(FFD)。终端设备可能是FFD或简化功能设备(RFD)。RFD是最小而且最简单的Zigbee节点。它只实现了一组最小的Zigbee服务。在星型网络中,所有的终端设备都只与协调器通信。如果某个终端设备需要传输数据到另一个终端设备,它会把数据发送给协调器,然后协调器依次将数据转发到目标接收器终端设备。星型拓扑结构如图1所示。
图1 星型网络拓扑结构
群集网络配置也是Zigbee使用的一种网络配置结构。在群集网络中,终端设备既可以选择和协调器通信,也可以和路由器(router)通信。路由器有两个功能:一是增加网络中的节点数量,二是扩大网络的物理范围。有了路由器后,终端设备就不必安装在协调器的有效射频范围内。群集网络结构如图2所示。
图2 群集网络拓扑结构
和任何网络一样,Zigbee网络也是多点接入网络,这意味着网络中的所有节点对通信介质的访问是同等的。有两种类型的多点接入机制。在没有使能信标的网络中,只有信道是空闲的,在任何时候都允许所有节点发送。在使能了信标的网络中,仅允许节点在预定义的时隙内进行发送。协调器会定期以一个标知为信标帧的超级帧开始发送,并且希望网络中的所有节点与此帧同步。在这个超级帧中为每个节点分配了一个特定的时隙,在该时隙内允许节点发送和接收数据。超级帧可能还含有一个公共时隙,在此时隙内所有节点竞争接入信道。
1.3 数据传输机制
传输数据到终端设备和从终端设备传输数据的确切机制随网络类型的不同而有所不同。在无信标的星型网络中,当终端设备想要发送数据帧时,它只需等待信道变为空闲。在检测到空闲信道条件时,它将帧发送到协调器。如果协调器想要将此数据发送到终端设备,它会将数据帧保存在其发送缓冲器中,直到目标终端设备明确地来查询该数据为止。此方法确保终端设备的接收器是被开启的,而且可从协调器接收数据。
在点对点网络中,每个节点必须一直保持它们的接收器为开启状态或者同意在一个时间段内开启它们的接收器。这将允许节点发送数据帧并确保数据帧会被其它节点接收。
2 RF收发芯片CC2420
CC2420是Chipcon公司推出的首款符合2.4GHz IEEE 802.15.4标准的射频收发器。该器件是第一款适用于Zigbee产品的RF器件。它基于Chipcon公司的SmartRF 03技术,以0.18um CMOS工艺制成,只需极少外部元器件,性能稳定且功耗极低。CC2420的选择性和敏感性指数超过了IEEE 802.15.4标准的要求,可确保短距离通信的有效性和可靠性。利用此芯片开发的无线通信设备支持数据传输率高达250kbps,可以实现多点对多点的快速组网。
CC2420只需要极少的外围元器件,其典型应用电路如图3所示。
图3 CC2420典型应用电路图
它的外围电路包括晶振时钟电路、射频输入/输出匹配电路和微控制器接口电路三个部分。芯片本振信号既可由外部有源晶体提供,也可由内部电路提供。由内部电路提供时需外加晶体振荡器和两个负载电容,电容的大小取决于晶体的频率及输入容抗等参数。
射频输入/输出匹配电路主要用来匹配芯片的输入输出阻抗,使其输入输出阻抗为50Ω,同时为芯片内部的PA及LAN提供直流偏置。CC2420可以通过4线SPI总线(SI、SO、SCLK、CSn)设置芯片的工作模式,并实现读/写缓存数据,读/写状态寄存器等。通过控制FIFO和FIFOP管脚接口的状态可设置发射/接收缓存器。注意:在SPI总线接口上进行的地址和数据传输大多是MSB优先的。CC2420片内有33个16比特状态设置寄存器,在每个寄存器的读/写周期中,SI总线上共有24比特数据,分别为:1比特RAM/寄存器选择位(0:寄存器,1:RAM),1比特读/写控制位(0:写,1:读),6比特地址选择位、16比特数据位。在数据传输过程中CSn必须始终保持低电平。另外,通过CCA管脚状态的设置可以控制清除通道估计,通过SFD管脚状态的设置可以控制时钟/定时信息的输入。这些接口必须与微处理器的相应管脚相连来实现系统射频功能的控制与管理。 p; 如前所述,CC2420是一款符合IEEE802.15.4标准的RF收发芯片。CC2420硬件支持一部分IEEE802.15.4数据帧格式。数据帧格式示如表1所示。
表1 数据通信帧格式
同步头包括前导序列和开始帧分隔符。在CC2420中,前导序列长度和开始帧分隔符是可以配置的。默认值4字节和1字节是符合IEEE802.15.4协议的。物理头为1字节,帧控制和序列号分别为2字节和1字节,地址包括个人区域网身份识别号码、目的地址和源地址共6字节,待发数据段长度为帧长度减去地址和帧校验序列。当MODEMCTRL0.AUTOCRC控制位置位时,这个帧校验序列自动产生2字节,并由CC2420硬件自动插入。
3 配置寄存器实际系统需要做以下配置:
(1)CC2420
内部寄存器的设置:CC2420内部有33个16位结构寄存器和15个命令脉冲寄存器以及2个8位访问独立的发射和接收缓冲器的RXFIFO、TXFIFO寄存器。这些寄存器在芯片复位时都已设置了一些初始值。例如:MDMCTRL0.AUTOCRC自动循环冗余校验;IOCFG0.FIFOP_THR设置RXFIFO缓冲器中字节门限值;BATTMON.BATTMON_E电池监控使能;TXCTRL.PA_LEVEL输出功率编程(输出功率单位为dBm);IN0.XOSC16M_BYPASS使能外部晶体振荡器等。实际使用时,应根据需要对初始值进行修改。
(2)初始化:定义信息包传输的基本格式;定义单片机和CC2420的端口;打开电压调节器,复位CC2420,开启晶体振荡器,写入所有必须的寄存器和地址识别(为自动地址识别准备),注意晶体振荡器应该一直处于工作状态。寄存器设置如下:SXOSCON打开晶体振荡器;MDMCTRL0=0x0AF2打开自动应答;MDMCTRL1=0x0500;设置关联门限值为20;IOCFG0=0x007F设置FIFOP门限至最大值128;SECCTRL0=0x01C4关闭安全使能。
(3)缓冲发送模式:使用IEEE802.15.4媒介访问控制层数字格式和短地址发送一个信息包。使能发送,当信道评估显示信道空闲时,使能校准然后发送;当没有字节写入,TXFIFO缓冲器发出下溢指示状态位和下溢脉冲,发送自动停止。CTRL1.TX_MODE=0;STXON使能发送;STXONCCA信道估计显示信道空闲,使能校准然后发送;SFLUSHTX当没有字节写入,TXFIFO缓冲器发出下溢脉冲;TXCTL=0xA0FF发射最大电流为1.72mA。
(4)缓冲接收模式:先使能信息包接收和FIFOP中断,通过FIFOP中断服务程序接收信息包,其中RXFIFO缓冲器溢出和不合法信息包格式都有中断服务程序处理,信息包接收采用CC2420自动应答。寄存器设置如下:DMCTRL1.RX_MODE=0;SRXON使能接收;SFLUSHRXRXFIFO缓冲器溢出,复位解调器;RXCTRL0=0x12E5低噪声放大器增益中等。
4 结论
笔者在实现此系统的过程中发现,无线网络的链路层、应用层协议的性能是制约无线传感网络的关键因素。另外,制作电路板时,应采用四层板,外围器件尽量小(采用0402封装),耦合电容尽量靠近芯片,以提高系统性能。
评论