解析基于射频芯片CC2420的ZigBee无线通信设计
时间:2009-10-13 15:53:05点击:次
为满足小型、低成本设备的无线联网要求,2000年12月IEEE成立了IEEE802.15.4工作组,致力于定义一种适于固定、便携或移动设备使用的极低复杂度、成本和功耗的低速率无线连接技术--ZigBee技术。本文针对使用PIC18系列单片机及CC2420为RF收发器,从ZigBee节点的硬件及ZigBee通信协议和协议栈方面,介绍了ZigBee无线通信网络的组成。
1 ZigBee技术简介
2002年8月ZigBee联盟成立,由英国Invensys公司、日本三菱电气公司、美国摩托罗拉公司以及荷兰飞利浦半导体公司组成。IEEE802.15.4的ZigBee标准于2003年5月获得批准。
ZigBee技术的物理层和链路层协议主要采用IEEE802.15.4标准,而ZigBee联盟负责网络层和应用层的开发,以及制定其安全协议和市场推广等。IEEE802.15.4定义了两个物理层标准,分别是2.4GHz物理层和868/915 MHz物理层。两个物理层都基于DSSS直接序列扩频技术,使用相同的物理层数据包格式。ZigBee在2.4 GHz频段有16个信道,能够提供250 kb/s的传输速率,采用O-QPSK调制;915 MHz和868 MHz分别是欧洲和美国的ISM 频段,这两个频段的引入避免了2.4 GHz附近各种无线通信设备的相互干扰。在916MHz频段有10个信道,传输速率为是40 kb/s,在868 MHz频段只有一个信道,传输速率为20 kb/s,这两个频段都采用BPSK调制。
2 ZigBee节点的硬件构成
2.1 典型的ZigBee节点硬件
ZigBee协议栈对系统微处理器的要求有:8位微处理器;完全的协议栈:ROM<32K;简单功能节点协议栈:ROM约6K;协调器还需要足够的RAM,用于保存节点器件数据库、传输路由表等。
可供选用的单片机种类较多,本设计所选用的是PIC18系列的单片机,因此要创建典型的ZigBee节点至少必须具备以下组件:一片带SPI接口的PIC18F单片机;一个带有所需外部元件的RF收发器;一根天线,可以是PCB上的引线形成的天线或单极天线。ZigBee节点的构成如图1所示,控制器通过SPI总线和一些离散控制信号与RF收发器相连。控制器充当SPI主器件而RF收发器充当从器件。控制器实现了IEEE 802.15.4 MAC层和ZigBee协议层。
在RF收发器上,本设计选用了Chipcon公司的CC2420射频收发器,它实现ZigBee协议的物理层(PHY)及媒体访问控制器(MAC)层,具备65,000个节点通道并可随时扩充,以及低耗电、250kbps传输速率、快速唤醒时间(<30ms)、CSMA-CA通道状态侦测等特性。
2.2 ZigBee节点硬件电路实现
CC2420只需要极少的外围元器件, 其外围电路包括晶振时钟电路、射频输入/ 输出匹配电路和微控制器接口电路三个部分。芯片本振信号既可由外部有源晶体提供,也可由内部电路提供。由内部电路提供时需外加晶体振荡器和两个负载电容, 电容的大小取决于晶体的频率及输入容抗等参数。射频输入/ 输出匹配电路主要用来匹配芯片的输入输出阻抗。CC2420可以通过4线SPI总线(SI、SO、SCLK、CSn) 设置芯片的工作模式, 并实现读/ 写缓存数据,读/ 写状态寄存器等。通过控制FIFO和FIFOP管脚接口的状态可设置发射/ 接收缓存器。在数据传输过程中CSn必须始终保持低电平。另外, 通过CCA管脚状态的设置可以控制清除通道估计, 通过SFD管脚状态的设置可以控制时钟/ 定时信息的输入。
为CC2420的外围电路及与PIC18系列单片机的连接方式。此外,CC2420需要3.3V的电源电压,可以选用PIC18系列单片机中的低压型号,使控制器和RF收发器均使用3.3V电源电压。
3 ZigBee通信协议
3.1 IEEE 802.15.4MAC数据包
在本文的第一部分,已经对IEEE 802.15.4规范做了介绍,以下补充MAC层数据包的部分内容。IEEE 802.15.4 MAC数据包的最大长度为127字节,每个数据包都由头字节和16位CRC 值组成,16位CRC值验证帧的完整性。此外,IEEE 802.15.4还可以选择使用应答数据传输机制,使用这种方法,所有特殊ACK标志位置1的帧均会被它们的接收器应答。如果发送帧的时候置位了ACK标志位而且在一定的超时期限内没有收到应答,发送器将重复进行固定次数的发送,如仍无应答就宣布发生错误。
3.2 网络配置与网络关联
ZigBee无线网络可采用多种类型的网络配置。本设计使用星型网络实现通信。星型网络配置由一个协调器节点(主设备)和一个或多个终端设备(从设备)组成。在星型网络中,所有的终端设备都只与协调器通信。
根据系统需求,协调器会在非易失性存储器中存储所有网络关联,称为邻接表。为了连接到网络,终端设备可能执行孤立通知过程来查找先前与之关联的网络或者执行关联过程来加入一个新网络。在执行孤立通知过程的情况下,协调器将通过查找其邻接表来识别先前与之关联的终端设备。
3.3 端点、接口及端点绑定
典型的ZigBee节点可支持多种特性和功能,为了便于在I/O节点和两个控制器节点之间进行数据传输,所有节点中的应用程序必须保存多个数据链路。为了减少成本,ZigBee节点仅使用一个无线信道来和多个端点/ 接口来创建多条虚拟链路或信道,每个端点总共有8个接口。
在星型网络中的终端设备总是只与协调器通信,协调器负责将端点发送的数据包从一个节点转发到接收终端设备的相应端点。所以,当建立一个新的网络时,必须告知协调器如何创建源端点和目标端点之间的链路,ZigBee协议使用了一个称为端点绑定的特殊过程来实现链路的连接。
3.4 数据传输机制
传输数据到终端设备和从终端设备传输数据的确切机制随网络类型的不同而有所不同。在无信标的星型网络中,当终端设备想要发送数据帧时,它只需等待信道变为空闲。在检测到空闲信道条件时,它将帧发送到协调器。如果协调器想要将此数据发送到终端设备,它会将数据帧保存在其发送缓冲器中,直到目标终端设备明确地来查询该数据为止。
4 协议栈构架
在本设计中,我们的协议栈是使用C语言编写的,协议栈使用内部闪存程序存储器来存储可配置的MAC地址、网络表和绑定表,因此,必须使用可自编程的闪存存储器单片机。
用户应用程序
ZigBee设备对象
应用层
应用支持子层
网络层
MAC层
物理层
协议栈根据ZigBee规范的定义将其逻辑分为多个层。实现每个层的代码位于一个独立的源文件中,而服务和应用程序接口(API)则在头文件中定义。要实现抽象性和模块性,顶层总是通过定义完善的API和紧接着的下一层进行交互,该层的C头文件定义该层所支持的所有API。 用户应用程序总是与应用支持子层(APS)和应用层(APL)交互。典型的应用程序总是与应用层(APL)和应用支持子层(APS)接口,APL模块提供高级
协议栈管理功能,用户应用程序使用此模块来管理协议栈功能。
APS层主要提供ZigBee端点接口。应用程序将使用该层打开或关闭一个或多个端点并且获取或发送数据。它还为键值对(KVP)和报文(MSG)数据传输提供了原语。当首次对协调器编程时绑定表为空,主应用程序必须调用正确的绑定API来创建新的绑定项。APS还有一个间接发送缓冲器RAM,用来存储间接帧,直到目标接收者请求这些帧为止。MAC_MAX_ DATA _REQ_PERIOD编译时间选项定义了确切的请求时间。节点请求数据时间越长,数据包需要保存在间接发送缓冲器里的时间也越长,数据请求时间越长需要的间接缓冲空间越大。
网络层(NWK)负责建立和维护网络连接,它独立处理传入数据请求、关联、解除关联和孤立通知请求。ZigBee设备对象(ZDO)负责接收和处理远程设备的不同请求。介质访问控制(MAC)层实现了IEEE 802.15.4规范所要求的功能,并负责同物理(PHY)层进行交互。
5 结束语
ZigBee是为低速率控制网络设计的标准无线网络协议,ZigBee协议的一些应用包括建筑自动化网络、建筑安防系统、工业控制网络、远程抄表以及PC外设。本文针对使用PIC18系列单片机及CC2420为RF收发器,从ZigBee节点的硬件及ZigBee通信协议和协议栈方面,介绍了ZigBee无线通信网络的组成。