当前位置:文档之家› Microchip_ZigBee协议栈

Microchip_ZigBee协议栈

AN965

引言

ZigBee?是专为低速率传感器和控制网络设计的无线网络协议。有许多应用可从ZigBee协议受益,其中可能的一些应用有:建筑自动化网络、住宅安防系统、工业控制网络、远程抄表以及PC外设。

与其他无线协议相比,ZigBee无线协议提供了低复杂性、缩减的资源要求,最重要的是它提供了一组标准的规范。它还提供了三个工作频带,以及一些网络配置和可选的安全功能。

如果您正在寻求现有的控制网络技术(例如RS-422、RS-485)或专有无线协议的替代方案,ZigBee协议可能是您所需的解决方案。

此应用笔记旨在帮助您在应用中采用ZigBee协议。可以使用在应用笔记中提供的Microchip ZigBee协议栈快速地构建应用。为了说明该协议栈的用法,本文包含了两个有效的演示应用程序。可将这两个演示程序作为参考或者根据您的需求经过简单修改来采用它们。

此应用笔记中提供的协议栈函数库实现了一个与物理层无关的应用程序接口。因此,无需做重大修改就可以轻松地在射频(Radio Frequency,RF)收发器之间移植应用程序。

在此文档末尾的“常见问题解答”中提供了有关Microchip协议栈和用法的一些常见问题及其答案。

假设

此文档假设您熟悉C编程语言。文档中大量使用了有关ZigBee和IEEE 802.15.4规范的术语。此文档没有详细讨论ZigBee规范,只提供了对ZigBee规范的简要概述。建议您仔细阅读ZigBee和IEEE 802.15.4规范。特性

Microchip ZigBee协议栈设计为随着ZigBee无线协议规范的发展而发展。在发布此文档时,该协议栈的 1.0版本具有以下特点(欲知最新特性,请参阅源代码版本日志文件version.log):

? 基于ZigBee规范的0.8版本

? 使用Chipcon CC2420 RF收发器支持2.4GHz频带

? 支持简化功能设备(Reduced Function Device,

RFD)和协调器

? 在协调器节点中实现对邻接表和绑定表的非易失性存储

? 支持非时隙的星型网络

? 可以在大多数PIC18系列单片机之间进行移植

? 协同多任务处理架构

? 不依赖于RTOS和应用

? 支持Microchip MPLAB? C18和Hi-Tech

PICC-18? C编译器

? 易于添加或删除特定模块的模块化设计

限制

Microchip协议栈的1.0版本包含以下限制。请注意随着时间的推移,Microchip会添加新特性。如需了解目前的限制,请参阅源代码版本日志文件(version.log)。

? 不完全符合ZigBee协议

? 不支持群集和点对点网络

? 无安全和访问控制功能

? 无路由器功能

? 不提供标准的配置文件;但是包含创建配置文件必需的所有原始函数

? 不支持一对多绑定

作者:Nilesh Rajbharti

Microchip Technology Inc.

Microchip ZigBee?协议栈

2005 Microchip Technology Inc.DS00965A_CN第1页

AN965

DS00965A_CN 第2页 2005 Microchip Technology Inc.

典型的ZigBee 节点硬件

要使用Microchip 协议栈来创建典型的ZigBee 节点,至少必须具备以下组件:

? 一片带SPI?接口的PIC18F 单片机

? 一个带有所需外部元件的RF 收发器(如需了解所支持的收发器,请参见version.log )

? 一根天线,可以是PCB 上的引线形成的天线或单极天线

如图1所示,控制器通过SPI 总线和一些离散控制信号与RF 收发器相连。控制器充当SPI 主器件而RF 收发器充当从器件。控制器实现了IEEE 802.15.4 MAC 层和ZigBee 协议层。它还包含了特定应用的逻辑。它使用SPI 总线与RF 收发器交互。Microchip 协议栈提供了完全集成的驱动程序,免除了主应用程序管理RF 收发器功能的任务。如果您在使用Microchip ZigBee 节点的参考原理图,那么无需做任何修改就可以开始使用Microchip 协议栈了。如果需要,可以将某些非SPI 控制信号重新分配到其他端口引脚以适合你的应用的硬件。在这种情况下,必须修改物理层接口定义来包括正确的引脚分配。

1.0版的Microchip 协议栈使用由Chipcon 生产的CC2420RF 收发器。CC2420实现了

2.4GHz 的物理层和一些MAC 功能。在Chipcon 网站上可以了解更多有关CC2420的信息(参见“参考书目”)。Microchip 的ZigBee 协议参考设计实现了PCB 引线天线和单极天线两种设计方案。根据您对天线的选择,将可能必须去除或增加一些元件。如需了解更多信息,请

参阅

“PICDEM? Z Demo Kit User's Guide ”(参见“参考书目”)。CC2420需要3.3V 的电源电压。Microchip 参考设计的控制器和RF 收发器均使用3.3V 的电源电压。如果需要,可以将此设计修改为控制器使用5V 电源电压,RF 收发器使用3.3V 电源电压。当对控制器使用5V 电源电压时,在它与CC2420之间必须使用逻辑电平转换电路。根据需要,可以使用交流电源或电池。通常,ZigBee 协调器由交流电源供电,而终端设备由电池供电。当使用电池供电时,要确保CC2420的电源电压在规定电压范围内。

有关Microchip ZigBee 节点的参考设计,请参阅“PICDEM Z Demo Kit User's Guide ”。

图1:典型的ZigBee?节点硬件(添加了控制信号)

P I C m i c r o ?

RF XCVR

天线

SPI?

控制

M C U

AN965

对PIC?单片机的资源要求

Microchip协议栈使用下列I/O引脚与RF收发器接口:表1:PIC? MCU与RF收发器之间的接口

如需了解对程序和数据存储器的完整要求,请参阅协议栈源文件安装目录中的文档version.log。

安装源文件

可从Microchip网站下载完整的Microchip协议栈源文件(参见“源代码”)。源代码以一个Windows?安装文件形式发布(MpZBeeV1.00.00.exe)。

执行下列步骤完成安装:

1.执行MpZBeeV1.00.00.exe文件;Windows

安装向导将指导您完成安装过程。

2.在继续安装之前,必须通过单击I Accept(我接

受)接受软件许可协议。

3.在完成安装过程之后,应该看到“Microchip

Software Stack for ZigBee”程序组。完整的源

代码将被复制到您的计算机的根驱动器的

MpZBee\Source目录中。

4.如需了解最新版本的特定功能和限制,请参阅文

件version.log。源文件构成

Microchip协议栈由多个源文件组成。很多源文件是所有ZigBee应用程序共用的,而有些源文件仅供某些特定的ZigBee应用程序使用。此外,协议栈文件还包括全部演示应用程序的所有源文件。

为了简化文件管理和应用程序开发,所有源文件均位于Source目录下的子目录中。下表给出了目录结构:

表2:Source目录结构

许多协议栈文件包含了所有支持的ZigBee应用程序类型的逻辑;然而,根据zigbee.def文件中的预处理定义,只启用一组逻辑。使用一组共用的协议栈源文件和各自的zigbee.def文件可以开发多种ZigBee节点应用程序。例如,DemoCoordApp和DemoRFDApp节点应用程序在它们各自的目录中有各自的zigbee.def文件。这种方法允许使用共用的源文件开发多种应用程序并根据针对应用程序的选项生成惟一的hex文件。

这种方法要求您在编译应用程序项目时提供搜索路径,包含应用程序和协议栈源文件目录中的文件。与此应用笔记一起提供的演示应用程序项目已经包含了必需的搜索路径信息。

PIC?单片机

I/O引脚

RF收发器引脚RB0 (输入)CC2420: FIFO

RB1 (输入)CC2420: CCA(未使用)

RB2 (输入)CC2420: SFD

RB3 (输入)CC2420: FIFOP RC0 (输出)CC2420: CSn

RC1 (输出)CC2420: VREG_EN RC2 (输出)CC2420: RESET RC3 (输出)CC2420: SCK

RC4 (输入)CC2420: SO

RC5 (输出)CC2420: SI

目录名称内容Stack Microchip协议栈源文件DemoCoordApp演示协调器应用程序源文件DemoRFDApp演示RFD应用程序源文件

2005 Microchip Technology Inc.DS00965A_CN 第3页

AN965

DS00965A_CN 第4页 2005 Microchip Technology Inc.

演示应用程序

1.0版的Microchip 协议栈包含两个演示应用程序:1.DemoRFDApp :演示典型的ZigBee RFD 设备的应用程序。

2.

DemoCoordApp :演示典型的ZigBee 协调器的应用程序。

演示RFD 的应用程序的功能

1.0版的演示RFD 的应用程序实现了下列功能:? 旨在与PICDEM Z 演示板一起使用

? 使用系统休眠和看门狗功能演示低功耗功能? 使用RS-232终端驱动菜单命令来配置多个选项? 通过终端菜单命令对RF 收发器的性能进行测试的功能

? 在一个节点上可由用户配置的简单远程控制开关和LED 应用程序

? 使用D2作为指示发送/接收操作的LED ? 演示自定义绑定接口

? 自动支持MPLAB C18和Hi-Tech PICC-18编译器

演示协调器的应用程序的功能

1.0版的演示协调器的应用程序实现了下列功能:? 旨在与PICDEM Z 演示板配合使用

? 使用RS-232终端驱动菜单命令来配置多个选项? 通过终端菜单命令对RF 收发器的性能进行测试的功能

? 创建非时隙的星型网络

? 使用D2作为指示发送/接收操作的LED ? 演示自定义绑定接口

? 自动支持MPLAB C18和Hi-Tech PICC-18编译器

编译演示应用程序

可以使用Microchip C18或Hi-Tech PICC-18编译器编译包括在此应用笔记中的演示应用程序。总共有4个MPLAB 项目文件,每个演示应用程序有两个。MPLAB 项目文件名的前两个字母表示所使用的编译器的类型。例如,项目文件MpDemoCoordApp.mcp 使用MPLAB C18编译器,而HtDemoCoordApp.mcp 使用Hi-Tech PICC-18编译器。

除了要使用PIC18F4620作为器件外,所有的演示应用程序项目还使用在MPLAB ? IDE 的“Build Options ”(编译选项)中定义的附加包含路径。演示协调器项目使用“..\Stack ”和“..\DemoCoordApp ”,而演示RFD 项目使用“..\Stack ”和“..\DemoRFDApp ”作为附加包含路径。如果正在使用MPLAB IDE 重新创建任何演示应用程序项目,则必须手动地在MPLAB 的“Build Options ”对话框中设置这些包含路径。表3和表4分别列出了编译演示协调器和演示RFD 的应用程序所必需的源文件。

2005 Microchip Technology Inc.DS00965A_CN 第5页

AN965

表3:

演示协调器的应用程序项目文件

表4:

演示RFD 的应用程序项目文件

源文件

目录名称 用途

MpDemoCoordApp.mcp HtDemoCoordApp.mcp DemoCoordApp 在MPLAB ? IDE 中使用的演示协调器的应用程序项目文件DemoZCoordApp.c DemoCoordApp 协调器的主应用程序文件

zigbee.def DemoCoordApp Microchip 协议栈编译时间选项文件D1OnCoord.c DemoCoordApp LED D1的端点任务,只针对协调器节点S2OnCoord.c DemoCoordApp 开关S2的端点任务,只针对协调器节点

18f4620i.lkr DemoCoordApp PIC ?单片机的MPLAB C18链接描述文件,Hi-Tech PICC-18 编译器不需要该文件

Console.c Stack 仅供演示应用程序使用的RS-232终端程序MSPI.c

Stack SPI?主接口

NeighborTable.c Stack 协调器上的邻接表和绑定表逻辑SRAlloc.c Stack 仅供协调器使用的动态存储管理器

Tick.c Stack 供协议栈使用的节拍(tick )管理器,可用于应用程序zAPL.c Stack ZigBee?应用层zAPS.c Stack ZigBee 应用支持子层ZDO.c Stack ZigBee 设备对象zMAC.c Stack IEEE 802.15.4 MAC 层zNVM.c Stack 非易失性存储器存储程序zNWK.c Stack ZigBee 网络层

zPHYCC2420.c Stack 针对CC2420的物理层程序zProfile.c

Stack

ZigBee 配置程序

源文件

目录名称

用途

MpDemoRFDApp.mcp HtDemoRFDApp.mcp DemoRFDApp 供MPLAB ? IDE 使用的演示RFD 的应用程序项目文件DemoZRFDApp.c DemoRFDApp RFD 的主应用程序文件

zigbee.def DemoRFDApp Microchip 协议栈编译时间选项文件D1OnEndDevice.c DemoRFDApp LED D1的端点任务,只针对终端设备S2OnEndDevice.c DemoRFDApp 开关S2的端点任务,只针对终端设备

18f4620i.lkr DemoCoordApp PIC ?单片机的MPLAB C18链接描述文件,Hi-Tech PICC-18 编译器不需要该文件

Console.c Stack 仅供演示应用程序使用的RS-232终端程序MSPI.c Stack SPI?主接口

Tick.c Stack 供协议栈使用的节拍管理器,可用于应用程序zAPL.c Stack ZigBee?应用层zAPS.c Stack ZigBee 应用支持子层ZDO.c Stack ZigBee 设备对象zMAC.c Stack IEEE 802.15.4 MAC 层zNVM.c Stack 非易失性存储器存储程序zNWK.c Stack ZigBee 网络层

zPHYCC2420.c Stack 针对CC2420的物理层程序zProfile.c

Stack

ZigBee 配置程序

AN965

DS00965A_CN 第6页 2005 Microchip Technology Inc.

以下是编译演示应用程序的粗略步骤。此处假定您熟悉MPLAB IDE 并且将使用MPLAB IDE 来编译应用程序。如果情况并非如此,请参阅MPLAB IDE 特定应用说明来创建、打开和编译项目。

1.

确认安装了Microchip 协议栈的源文件。如果尚未安装,请参阅“安装源文件”。

2.启动MPLAB IDE 并打开相应的项目文件:

对于演示协调器的应用程序来说,该项目文件是Source\DemoCoordApp\??DemoCoordApp.mcp ;对于演示RFD 的应用程序来说,该项目文件是Source\DemoRFDApp\??DemoRFDApp.mc p 。项目文件的确切名称取决于您选择的编译器。MPLAB C18 编译器使用的项目文件名为“Mp*.mcp ”,而Hi-Tech PICC-18编译器使用的项目文件名为“Ht*.mcp ”。

3.使用MPLAB IDE 菜单命令来编译项目。注意仅

当源文件位于硬盘驱动器根目录的MpZBee 目录中时,创建的演示应用程序项目才能正确工作。如果您已将源文件移动到了另一个位置,则必须重新创建项目或修改现有的项目设置才能编译项目。更多信息,请参见“编译演示应用程序”。4.编译过程应该成功完成。如果未成功编译,请确

认正确设置了MPLAB IDE 和编译器。将演示应用程序烧写到器件中

要使用两个演示应用程序之一对目标板进行编程,必须要有PIC 编程器。下面的步骤假定您将使用MPLAB ICD 2作为编程器。 如果使用其他编程器,请参阅具体编程器的说明。1.将MPLAB ICD 2连接到PICDEM Z 演示板或您的目标板。2.对目标板通电。3.启动MPLAB IDE 。4.选择PIC 器件(仅当导入以前编译生成的hex 文件时需要)。

5.

使能MPLAB ICD 2作为编程器。

6.

如果您希望使用以前编译生成的hex 文件,只要导入DemoCoordApp\MpDemoCoordApp.hex 文件或DemoRFDApp\MpDemoRFDApp.hex 文件即可。为了简化对演示协调器节点和演示RFD 节点的辨别(如果您在使用PICDEM Z 板),推荐您将MpDemoCoordApp.hex 文件烧写到贴有“COORD...”标签的单片机中;将MpDemoRFDApp.hex 文件烧写到贴有“RFD...”标签的单片机中。 如果正在对定制的硬件进行编程,请确保使用某种标识方法来标识协调器节点和RFD 节点。

7.

如果正在重新编译hex 文件,请打开相应的演示项目文件并遵循编译步骤来生成应用程序hex 文件。

8.

两个演示应用程序文件都包含PICDEM Z 演示板所需的必要的配置选项。如果正在对另一种类型的板编程,请确保从MPLAB ICD 2配置设置菜单选择了适当的振荡器模式。

9.

从MPLAB Programmer (编程器)菜单选择Program (编程)菜单选项,开始对目标板编程。

10.

数秒之后,应该看到“Programming successful ”(编程成功)的消息。如果未看到这条消息,请仔细检查板和MPLAB ICD 2的连接。如需进一步的帮助,请参阅MPLAB 在线帮助。

11.除去板的电源并断开MPLAB ICD 2电缆与目标板的连接。

12.

重新为该板加上电源,并确认D1和D2 LED 点亮。如果未点亮,请仔细检查您的编程步骤,如果需要还需重复这些编程步骤。

配置演示应用程序

如果这是您第一次运行这两个演示应用程序之一,必须首先为每块板分配一个惟一的节点ID 。节点ID 是一个惟一的4位10进制数,用于产生惟一的MAC 地址。两个演示应用程序都使用Microchip 组织惟一标识符(Organizational Unique Identifier ,OUI )编号编译。这些应用程序使用节点ID 值来创建满足IEEE 802.15.4规范要求的惟一64位MAC 地址。可通过以下网址申请获得您自己的OUI 编号:

https://https://www.doczj.com/doc/4e53427.html,/regauth/oui/forms/OUI-form.shtml 要配置演示应用程序,将需要下列工具:1.带有至少一个RS-232端口的PC 。2.一个基于PC 的RS-232终端程序,如Windows ?操作系统的超级终端。

3.一条DB-9针式到孔式RS-232电缆。

4.

带9V 电源的目标板。

AN965

编程节点ID值

对每个新编程的演示应用程序执行下列步骤(此步骤假定您使用Microsoft?超级终端程序。您可以选用任何终端程序,只要按要求设置了端口即可):

1.使用直插针式到孔式DB9 RS-232电缆将目标

PICDEM Z板连接到计算机上的可用串口。

2.通过选择开始>程序>附件>通讯启动超级终端。

3.在“连接描述”对话框中,为该连接输入任何便

捷名称。单击确定。

4.在“连接到”对话框中,选择与PICDEM Z板

相连的COM端口。单击确定。

5.用如下设置配置与PICDEM Z节点连接的串口:

19200 bps、8个数据位、1个停止位、无奇偶校

验、无数据流控制。

6.单击确定以发起连接。

7.通过选择文件>属性打开属性对话框。

8.选择“设置”选项卡,并单击ASCII码设置...9.选中“本地回显键入的字符”。

10.单击确定依次关闭所有打开的对话框。

11.在按住S3按钮开关或在按住RESET和S3按钮

开关的同时对节点通电,然后释放RESET开关。

终端窗口中将出现如例1所示的配置菜单(实际

的头文本将取决于您尝试重新配置的节点的类型

和编译的日期)。

12.输入1更改节点ID值。

13.按照说明,输入节点ID值。

14.按下节点上的RESET开关或输入0以退出配置

模式并运行应用程序。

要确认新的节点ID值已被正确地保存,只要通过按下演示板上的RESET按钮使该板复位,并确认D1和D2 LED未点亮即可。还要确认RS-232终端上未显示任何菜单。这样就确保了目标板已被正确编程,并且为进一步配置做好了准备。

如果这是新编程的演示RFD板,必须执行其他配置以观察全部的演示功能。

例1:演示应用程序配置菜单

编程绑定配置

此刻,您准备执行其余的配置。这要求您有一块演示协调器应用板和一块或多块演示RFD应用板。为了简化起见,此步骤假定您只有一块演示协调器板和一块RFD 板。然而,您可以轻松地将此步骤扩展到任何数量的演示RFD板。

作为此配置的一部分,您将把演示RFD应用板(终端设备)与演示协调器应用程序板关联起来。还将把一块板上的S2开关绑定到另一块板上的D1 LED。在成功地完成此配置之后,即可使用这两个演示应用程序进行实验。为了简化绑定配置,演示RFD应用程序提供了一个快速演示绑定菜单选项。快速绑定选项是一个单步绑定操作,演示终端设备和协调器之间的数据传输。除了快速绑定菜单选项之外,还可以使用板上开关来创建其他高级的绑定配置。

***************************************************************************

ZigBee Demo RFD Application v1.0 (Microchip Stack for ZigBee v1.0.0)

Built on Nov 11 2004

***************************************************************************

1. Set node ID...

2. Join a network.

3. Perform quick demo binding (Must perform #2 first)

4. Leave a previously joined network (Must perform #2 first)

5. Change to next channel.

6. Transmit unmodulated signal.

7. Transmit random modulated signal.

0. Save changes and exit.

Enter a menu choice:

2005 Microchip Technology Inc.DS00965A_CN 第7页

AN965

DS00965A_CN 第8页 2005 Microchip Technology Inc.

执行快速演示绑定

快速演示绑定选项将演示RFD 板上的S2开关绑定到演示协调器上的D1 LED ,并将演示协调器上的S2开关绑定到演示RFD 板上的D1 LED 。在完成快速演示绑定之后,您将能够通过按下演示RFD 板上的S2开关控制演示协调器上的D1 LED ,通过按下演示协调器板上的S2开关控制演示RFD 板上的D1 LED 。

快速演示绑定主要是为双节点(一个协调器和一个RFD )网络而设计的。如果您在多块演示RFD 板上执行快速演示绑定,那么演示协调器上的D1 LED 将被任何演示RFD 板控制。但是,演示协调器上的S2开关将仅控制最后一块执行快速演示绑定的演示RFD 板上的D1。

快速演示绑定选项需要使用至少带有一个标准串口和终端软件的PC 。如果您有两个串口和两条串行线缆可用,就可以同时从演示协调器和RFD 板查看活动日志。如果您只有一个串口可用,则只能将RFD 板连接到PC 。执行下列步骤以执行快速演示绑定:1.去除所有节点的电源。

2.

可选:如果您有两个串口和两条串行线缆可用,选择启动一个基于PC 的RS-232终端程序并选择具有如下设置的COM1端口:19200 bps ,8-N-1,无数据流控制并回显输入的字符。

3.

找到演示协调器板并为其加上电源以启动正常执行模式。确认在D1和D2闪烁后,D2短暂闪烁。可选:如果连接了一个串口,注意终端显示“New network successfully started ”(新网络成功启动)的消息。

4.

选择启动一个基于PC 的RS-232终端程序并选择具有以下这些设置的COM2端口:19200 bps ,8-N-1,无数据流控制并回显输入的字符。

5.

现在,保持演示协调器板通电,在按住S3按钮开关时给演示RFD 板上电,或者同时按住RESET 和S3按钮开关,然后松开RESET 开关。您应该看到终端程序输出窗口中的文本菜单。

6.

输入2以启动“Join a network ”(加入一个网络)命令。注意终端显示“Successfully associated ”(成功关联)消息。如果您没有看到此消息,请确认演示协调器节点已加电并且在正常模式下运行。可选:注意在连接到该演示协调器节点的第二个终端上将显示“A new node has just joined ”(一个新节点刚连入)消息。

7.此时,演示RFD 节点已成功连入由演示协调器

建立的网络。现在您准备开始执行快速演示绑定。

8.输入3以启动“Perform quick demo

binding ”(执行快速演示绑定)命令。注意终端显示“Demo binding complete ”(演示绑定完成)消息。如果您没有看到此消息,请确认演示协调器节点已加电并且在正常模式下运行。可选:注意在连接到该演示协调器节点的第二个终端上将显示“Custom binding successful ”(自定义绑定成功)消息。

9.输入0以“Save current changes and

exit configuration ”(保存当前更改并退出配置)。终端现在应该显示“Rejoin successful ”(重新连入成功)消息。

10.现在可按下演示RFD 节点上的S2并观察演示协

调器上D1 LED 切换状态。同样,按下演示协调器节点上的S2并观察演示RFD 节点上的D1 LED 切换状态。当您在演示协调器节点上按下S2时,将发现演示RFD 节点上的D1 LED 并不会立即切换状态。这是由于演示RFD 节点必须通过定期查询演示协调器才能获得其LED 状态。查询周期取决于编程到演示RFD 节点的看门狗预分频值。还应该注意到演示RFD 节点和演示协调器上的D2都定期闪烁。这表明演示RFD 节点定期查询演示协调器以获得其D2的状态。

11.关联和快速演示绑定配置将永久地存储在演示协

调器的闪存存储器中。

注:

下面的步骤假定演示RFD 板连接到COM1,且可将演示协调器板连接到COM2。

AN965

执行高级绑定

高级绑定操作使用板上开关在多块演示RFD板之间创建总共四种绑定配置的组合。高级绑定操作不需要终端和串行线缆。为了避免重复信息,以下步骤假定您希望在终端窗口上查看活动日志并且已经阅读了“执行快速演示绑定”部分和知道如何设置终端软件。

执行下列步骤以执行高级绑定:

1.去除所有节点的电源。

2.找到演示协调器板并为其通电以启动正常执行模

式。确认在D1和D2闪烁后,D2短暂闪烁。可

选:如果连接了一个串口,注意终端显示“New

network successfully started”(新网络

成功启动)。

3.保持演示协调器板通电,在按住S3按钮开关时

给演示RFD板上电,或者同时按住RESET和

S3按钮开关,然后松开RESET开关。可选:您

应该看到终端程序输出窗口中的文本菜单。4.按下演示RFD节点上的S2以开始与演示协调器

的关联过程。可选:终端窗口应该显示“Successfully associated”(成功关联)。

5.如果您有多个演示RFD节点,则按下每个演示

RFD节点上的S2以使它们与演示协调器节点关联。

6.由于绑定配置可能有很多不同的组合,下表用来

描述每种组合必须按顺序执行的步骤。

7.按下每个演示RFD节点上的RESET开关以开始

正常执行。如果连接到终端程序,注意将显示“Rejoin successful”(重新连入成功)消息。

8.根据执行绑定的方式,按下某个节点上的S2来

确认同一个节点或其他节点上的D1的切换状态。

表5:绑定操作

绑定以下设备上的开关S2绑定以下设备上的LED D1结果

RFD:首先按住S3,然后按下S2并释放S2,随后释放S3协调器:首先按住S3,然后按下S2

并释放S3,随后释放S2

RFD上的S3控制协调器上的D1

协调器:首先按住S3,然后按下S2并释放S2,随后释放S3RFD:首先按住S3,然后按下S2并

释放S3,随后释放S2

协调器上的S3控制RFD上的D1

RFD:首先按住S3,然后按下S2并释放S2,随后释放S3RFD:首先按住S3,然后按下S2并

释放S3,随后释放S2

RFD上的S3控制同一个RFD上的

D1

RFD1:首先按住S3,然后按下S2并释放S2,随后释放S3RFD2:首先按住S3,然后按下S2并

释放S3,随后释放S2

RFD #1上的S3控制RFD #2上的

D1

协调器:N/A协调器:N/A不允许

注1:当每一步执行时,各个节点上的LED D1和D2将从点亮/熄灭状态切换到熄灭/点亮状态。还要注意连接到RFD节点的终端程序将显示“Attempting to bind...”(尝试绑定...)消息,而连接到协调器节

点的终端将显示“Received valid...”(有效接收...)消息。

2:要完成绑定过程,必须执行“绑定设备上的开关S2”和“绑定设备上的LED D1”操作。

2005 Microchip Technology Inc.DS00965A_CN 第9页

AN965

DS00965A_CN 第10页 2005 Microchip Technology Inc.

执行演示应用程序

在观察演示应用程序的功能之前,您必须至少有一块演示协调器板和一块演示RFD 板。您还必须已经执行了在“配置演示应用程序”中说明的配置。

演示应用程序实现了简单的远程控制开关和LED 功能。有了此功能,您可以通过按下一块板上的开关来控制同一块或另一块演示RFD 板上的LED 。

演示应用程序是完全独立的,不需要有与主机的接口。然而,如果您可以访问主机,则可以使用主机来查看应用程序的活动日志。与主机的接口对于了解和诊断可能遇到的设置问题很有用。

遵循以下步骤来执行演示应用程序:1.去除所有板的电源(如果以前在通电的话)。2.定位演示协调器节点。

3.

可选:将演示协调器节点连接到一个PC 串口,并启动您喜欢的终端程序。选择具有以下设置的相应COM 端口:19200 bps 、8-N-1、无数据流控制并回显输入的字符。

4.

为演示协调器节点通电。观察到D1和D2同时闪烁,然后D2独自闪烁。如果连接到PC ,观察到终端程序显示“New network successfully started ”(新网络成功启动)的消息。

5.现在定位演示RFD 节点。

6.

可选:将RFD 节点连接到一个PC 串口,并启动您喜欢的终端程序。选择具有以下设置的相应COM 端口:19200 bps 、8-N-1、无数据流控制并回显输入的字符。

7.

在保持演示协调器节点通电的同时,为演示RFD 节点加电。观察到LED D1和D2同时闪烁,然后D2多次闪亮。如果连接到PC ,则观察一到两秒钟后,终端程序显示“Rejoin successful ”(重新连入成功)消息。如果您未看到任何消息或者看到“Rejoin failed ”(重新连入失败)消息,请确认已经为协调器节点通电并运行正常;复位演示RFD 节点,并再试一次。

8.此时,RFD 节点已经与演示协调器节点成功关联。

9.

根据执行绑定配置的方式,按下演示RFD 节点上的S2并观察同一个节点或其他节点上D1的状态。

演示应用的功能说明

演示协调器和演示RFD 应用演示了一个简单的ZigBee 网络。演示协调器和演示RFD 应用形成了一个非时隙的星型网络。

当一个事先已编程了任一个演示应用程序的节点在启动时,这个演示节点将自动进入配置模式。必须使用终端接口来设置惟一的节点ID 。演示RFD 节点需要额外的设置(例如关联和绑定配置)以使其完全地发挥功能。

演示协调器的功能说明

上电时,演示协调器通过扫描空信道尝试建立一个新的网络。作为扫描过程的一步,演示协调器从当前频带的第一个信道开始发送BEACON_REQ 帧。如果有另一个协调器处于同一信道,它将响应BEACON_REQ ,而原来的协调器将认为此信道已被占用。然后它会切换到下一个信道并重复该过程直到没有接收到任何对其BEACON_REQ 帧的响应时为止。一旦找到某个信道为空,它会选择一个随机的个人区域网络(Personal Area Network ,PAN )ID 并开始侦听该信道。此时就建立了网络。从现在开始,如果另一个协调器广播BEACON_REQ 帧,我们原来的协调器将响应并声明其存在。

该演示协调器现在准备开始接受新的终端设备节点加入其网络。当一个新的终端设备希望加入网络时,它首先会发出BEACON_REQ 以检测是否存在协调器。一旦终端设备确认了在某个特定的信道上存在协调器时,它会开始进行关联或孤立通知过程,以加入或重新加入网络。

实际的应用可能不会总是希望一直允许进行新的关联。例如,在一个基于ZigBee 协议的控制网络中,可能不希望让任何新的传感器加入您的控制网络。您可能希望首先进入一个特殊的模式来控制新的关联。Microchip 演示协调器对关联没有施加任何限制。任何设备可以在任何时间进行关联或解除关联。协调器不必进入一个特殊模式来执行这些操作。

AN965

演示协调器还实现了一个简单的开关和远程控制LED的接口。当协调器被编入程序之初,开关和LED没有绑定到任何目标。一旦执行正确的绑定过程,可以按下S2开关来控制其他终端设备上的D1 LED。演示协调器实现了特殊的按键顺序以将板上开关和LED绑定到远程设备上。通过同时按下S2和S3并遵循“配置演示应用程序”部分中简述的过程可以启动绑定过程。

演示RFD的功能说明

除了惟一的节点ID值之外,演示RFD应用程序要求您将演示RFD与附近的演示协调器关联。上电时,演示RFD节点尝试查找一个临近的演示协调器。它将扫描所有可用的信道来查找演示协调器。一旦找到了演示协调器,它会尝试重新加入网络。仅当此节点以前加入过该演示协调器的网络时,此次重新加入的尝试才会成功。这也就是为何在以正常模式执行演示RFD节点之前必须先将它加入到邻近节点的网络的原因。

该演示RFD节点被置于配置模式以加入一个新的网络。一旦该节点加入网络之后,您还必须将板上开关S2和D1 LED端点绑定到某些目标节点上。如需了解更多有关如何执行这些配置操作的信息,请参见“配置演示应用程序”。

当完全地配置了演示RFD节点之后,在下一次正常执行启动时,它将自动尝试重新加入邻近的演示协调器的网络。由于过去它已经加入过该演示协调器的网络,该演示协调器将允许该演示RFD节点重新加入其网络。

一旦重新加入网络之后,演示RFD节点将使能看门狗定时器,禁止RF收发器并将控制器置于休眠状态。

当按下任何按钮时,演示RFD节点使用PORTB的电平变化中断功能来唤醒它自己。如果按下了S2,它会发送一个具有当前开关状态的特殊的MSG数据帧(更多信息请参见ZigBee规范)到演示协调器。一旦演示协调器应答该MSG数据帧,演示RFD节点将重新回到休眠状态。还可以通过看门狗超时唤醒演示RFD节点。在控制器退出休眠状态时,演示RFD节点将查询演示协调器以得到新的S2状态。如果有新的S2状态,演示RFD节点将相应地更新其D1 LED。

为了进一步说明演示RFD节点如何接收其S2状态,假定演示RFD节点上的S2开关被绑定到同一个节点上的D1 LED。此绑定配置允许我们通过按下同一块板上的S2来控制D1。当您按下演示RFD节点上的S2时,该演示RFD节点将首先发出一个开关状态更新帧到演示协调器。此时,演示RFD节点不知道谁将接收到该开关更新帧。它只是将该帧定向到演示协调器并回到休眠状态。对于协调器来说,当它接收到开关状态帧时,它首先会在绑定表中查找以确定该帧是否有任何已知的目标。由于S2开关已被绑定到同一个演示RFD节点上的D1 LED,所以该演示协调器将会发现该帧有一个已分配的目标,并且它会将当前的开关状态帧存储到其间接发送帧缓冲器中。如果没有绑定项,演示协调器将丢弃该帧。演示协调器会将开关状态帧保存到其间接发送帧缓冲器中,直到目标接收节点取出它或者发生超时为止。

假定我们原来的演示RFD节点被及时唤醒,并将查询请求发送到演示协调器。演示协调器将会查找其间接发送缓冲器并发现有一个帧正等待发送给该节点。然后它会将该开关状态帧发送给演示RFD节点,并等待应答。一旦该帧被应答,它会将该开关状态帧从其间接发送缓冲器中删除。

该演示RFD节点现在已接收到了它早些时候发出的新的开关状态。现在它将对该开关状态译码并相应地切换LED的状态。由于在第一次按下开关和查询开关状态之间有一个时间差,您将看到LED状态变化会有略微的延迟。

由于协调器存储帧并将其转发给相应的接收者,所以只要更改协调器存储器中的绑定表即可在完全不同的节点上控制LED。

2005 Microchip Technology Inc.DS00965A_CN 第11页

AN965

DS00965A_CN 第12页 2005 Microchip Technology Inc.

使用MICROCHIP 协议栈

此应用笔记随附的文件包含Microchip ZigBee 协议栈的完整源文件(参见“源代码”)。这些源文件还包括了两个演示应用程序:一个RFD 演示应用程序和一个演示协调器的应用程序。

所有基于Microchip 协议栈的应用程序必须以协同多任务处理方式编写。协同多任务处理架构由一些按顺序执行的任务组成。协同任务会快速地执行其所需的操作并返回,以便能够执行下一个任务。为了达到此要求,应该使用状态机方法将需要等待某些外部输入或需要执行长操作的任务分解成多个子任务。有关协同多任务处理和状态机编程的进一步讨论不在本文档的范围之内。如需更多详细信息,请参阅软件工程文献。

所编写的Microchip 协议栈在不做任何更改的情况下就能支持MPLAB C18和Hi-Tech PICC-18 C 编译器。所有源文件自动检测当前正在使用的编译器并相应地调整其代码。Microchip 协议栈以带有C18和PICC-18特定扩展的标准ANSI C 编写。如果需要,可以修改这些源文件以支持您选择的编译器。

为了简化文件管理和应用程序开发,所有源文件均位于Source 目录下的子目录中。更多信息,请参见“源文件构成”。当使用Microchip 协议栈开发应用程序时,推荐您使用演示应用程序目录结构作为参考,并创建针对您自己的应用程序的子目录。

下面是开发基于Microchip 协议栈的应用程序的典型步骤。注意这些步骤假定您使用MPLAB IDE 并且熟悉MPLAB IDE 界面。1.按照前面在“安装源文件”部分中的描述,安装Microchip 协议栈源文件。

2.在MpZBee\Source 目录中创建针对您的应用程序的目录。

3.

根据这是协调器应用程序还是RFD 应用程序,将Source\DemoCoordApp 或Source\DemoRFDApp 目录中的zigbee.def 文件复制到针对您的应用程序的目录中。

4.根据您的应用需求修改zigbee.def 。更多信息,请参见“协议栈配置”。

5.

使用MPLAB IDE 来创建您的应用程序项目,并根据您的ZigBee 节点功能添加协议栈源文件。更多信息,请参见“协议栈源文件”。

6.如果正在使用MPLAB C18编译器,则添加针对您所使用的器件的链接描述文件。

7.

使用MPLAB Build Option (编译选项)对话框来设置两个附加的包含搜索路径:“..\Stack ”和“..\”,其中是包含针对您的应用程序的zigbee.def 文件的目录的名称。8.添加针对您的应用程序的源文件。9.

现在准备开始编译您的应用程序项目。

2005 Microchip Technology Inc.DS00965A_CN 第13页

AN965

协议栈源文件

根据应用程序的类型,您将需要在项目中包含一组特定的源文件。表6列出了编译典型ZigBee RFD 应用程序

所需的所有源文件,而表7列出了编译典型ZigBee 协

调器应用程序所需的所有源文件。

表6:典型的RFD 应用程序文件

表7:

典型的协调器应用程序文件

源文件

用途

您的应用程序文件必须包括main()入口点

zigbee.def 针对应用程序的Microchip 协议栈选项

Console.c RS-232终端程序,如果定义了ENABLE_DEBUG 或您的应用程序使用控制台程序则需要此程序

MSPI.c 用于访问RF 收发器的主SPI?接口程序Tick.c 节拍管理器,用于跟踪超时和重试条件zAPL.c ZigBee?应用层zAPS.c ZigBee 应用支持子层

ZDO.c ZigBee 设备对象,如果需要ZigBee 远程管理则需要ZigBee 设备对象zMAC.c IEEE 802.15.4 MAC 层

zNVM.c 非易失性存储器存储程序,可用您自己的非易失性存储特定文件来替换zNWK.c ZigBee 网络层

ZPHY???.c 针对RF 收发器的程序,对于Chipcon CC2420收发器是zPHYCC2420.c ;对于ZMD 44101收发器是zPHYZMD44101.c

zProfile.c ZigBee 配置程序,如果需要支持标准配置(在版本1.00.00中未完全实现)则需要该程序

18f????.lkr

针对您所选择的器件的链接描述文件,如果使用C18则需要此文件

源文件

用途

您的应用程序文件必须包括main()入口点

zigbee.def 针对应用程序的Microchip 协议栈选项

Console.c RS-232终端程序,如果定义了ENABLE_DEBUG 或您的应用程序使用控制台程序则需要此程序

NeighborTable.c 实现邻接表和绑定表

SRAlloc.c 实现间接发送缓冲器的动态存储器管理器Tick.c 节拍管理器zAPL.c ZigBee?应用层zAPS.c ZigBee 应用支持子层

ZDO.c ZigBee 设备对象,如果需要ZigBee 远程管理则需要ZigBee 设备对象zMAC.c IEEE 802.15.4 MAC 层

zNVM.c 非易失性存储器存储程序,可用您自己的非易失性存储特定文件来替换zNWK.c ZigBee 网络层

ZPHY???.c 针对RF 收发器的程序,对于Chipcon CC2420收发器是zPHYCC2420.c ;对于ZMD 44101收发器是zPHYZMD44101.c

zProfile.c ZigBee 配置程序,如果需要支持标准配置(在版本1.00.00中未完全实现)则需要该程序18f????.lkr

针对您所选择的器件的链接描述文件,如果使用C18则需要此文件

AN965

协议栈配置

此Microchip协议栈使用多种编译时间选项来使能/禁

止多个内核逻辑和RAM变量。具体的内核逻辑与RAM

变量的组合由ZigBee应用程序的类型决定。为了简化

编译时间的配置,所有编译时间选项均被保存在

zigbee.def文件中。作为应用程序开发的一部分,您

必须修改zigbee.def。

接下来的章节将定义所有的编译时间选项。应该查看

zigbee.def文件以获取编译时间选项的最新列表。

选项名称CLOCK_FREQ

用途定义处理器时钟频率。Tick.c和Debug.c分别使用此值来计算TMR0和SPBRG的值。需要的话,也可以在您的应用程序中使用此值。

前提无

有效值必须符合PIC频率规范。

示例下面的行将CLOCK_FREQ定义为4MHz:

#define CLOCK_FREQ 4000000

选项名称TICK_PRESCALE_VALUE

用途Timer0预分频值。Tick.c使用此值来计算TMR0载入值。

前提无

有效值可能的TMR0预分频值请参阅PIC器件的数据手册。

示例以下行设置TMR0预分频值为2:

#define TICK_PRESCALE_VALUE 2

注无

选项名称TICKS_PER_SECOND

用途一秒钟内的节拍数。由Tick.c文件使用。

前提无

有效值1-255,必须根据TICK_PRESCALE_VALUE对此值进行调整。

示例以下行将每秒的节拍数设置为50:

#define TICKS_PER_SECOND 50

注无

选项名称BAUD_RATE

用途定义USART波特率值。Console.c文件将使用此值。可以根据应用程序的要求更改此值。

前提无

有效值无

示例以下行将波特率定义为19200 bps :

#define BAUD_RATE (19200)

注必须确保当前的波特率选择对于当前的CLOCK_FREQ选择是可能的。

DS00965A_CN 第14页 2005 Microchip Technology Inc.

AN965

选项名称ENABLE_DEBUG

用途它使能调试模式。如果在zigbee.def文件中定义它,就能为所有源文件使能调试模式。此外,可以通过在特定文件的开头定义ENABLE_DEBUG来有选择地使能各个调试模式。

前提无

有效值无

示例以下行使能调试模式:

#define ENABLE_DEBUG

注当定义ENABLE_DEBUG时,应用程序代码将会增加。ENABLE_DEBUG模式定义很多ROM字符串消息。

选项名称USE_CC24240

用途用于指示正在使用Chipcon CC2420收发器。

前提不能定义USE_ZMD44101。

有效值无

示例以下行定义正在使用CC2420:

#define USE_CC2420

注只能定义USE_CC2420或USE_ZMD44101中的一种。协议栈均设计为同一时刻只使用一种类型的RF收发器。

选项名称USE_ZMD44101

用途用于指示正在使用ZMD 44101收发器(当前版本不支持)。

前提不能定义USE_CC2420。

有效值无

示例以下行定义正在使用ZMD 44101:

#define USE_ZMD44101

注只能定义USE_CC2420或USE_ZMD44101中的一种。协议栈均设计为同一时刻只使用一种类型的RF收发器。

选项名称I_AM_COORDINATOR

用途表示此节点是一个协调器。

前提不能定义I_AM_ROUTER和I_AM_END_DEVICE。

有效值无

示例以下行将当前节点设置为协调器:

#define I_AM_COORDINATOR

注一旦定义了I_AM_COORDINATOR,就不能定义I_AM_ROUTER和I_AM_END_DEVICE。

选项名称I_AM_ROUTER

用途指示此节点是一个路由器(在当前版本中不使用)。

前提不能定义I_AM_COORDINATOR和I_AM_END_DEVICE。

有效值无

示例以下行将当前节点设置为路由器:

#define I_AM_ROUTER

注一旦定义了I_AM_ROUTER,就不能定义I_AM_COORDINATOR和I_AM_END_DEVICE。当前版本不支持路由器功能。

2005 Microchip Technology Inc.DS00965A_CN 第15页

AN965

选项名称I_AM_END_DEVICE

用途表示这是一个终端设备,可以是RFD或FFD(在当前版本中,终端设备必须总是RFD)。

前提不能定义I_AM_COORDINATOR和I_AM_ROUTER。

有效值无

示例以下行将当前节点设置为终端设备:

#define I_AM_END_DEVICE

注一旦定义了I_AM_END_DEVICE,就不能定义I_AM_COORDINATOR和I_AM_ROUTER。

选项名称MY_FREQ_BAND_IS_868_MHZ

用途将工作频带定义为868MHz(当前版本中不支持)。

前提必须定义USE_ZMD44101(在以后的版本中会有更多选项)。

有效值无

示例以下行设置868MHz 频带:

#define MY_FREQ_BAND_IS_868_MHZ

注一旦定义了MY_FREQ_BAND_IS_868_MHZ,就不能定义MY_FREQ_BAND_IS_900_MHZ和MY_FREQ_BAND_IS_2400_MHZ。当前版本不支持868/915 MHz工作。

选项名称MY_FREQ_BAND_IS_900_MHZ

用途将工作频带定义为915MHz(当前版本中不支持)。

前提必须定义USE_ZMD44101(在以后的版本中会有更多选项)。

有效值无

示例以下行设置915MHz 频带:

#define MY_FREQ_BAND_IS_915_MHZ

注一旦定义了MY_FREQ_BAND_IS_915_MHZ,就不能定义MY_FREQ_BAND_IS_868_MHZ和MY_FREQ_BAND_IS_2400_MHZ。当前版本不支持868/915 MHz工作。

选项名称MY_FREQ_BAND_IS_2400_MHZ

用途将工作频带定义为2.4GHz。

前提必须定义USE_CC2420(在以后的版本中会有更多选项)。

有效值无

示例以下行设置2.4GHz 频带:

#define MY_FREQ_BAND_IS_2400_MHZ

注一旦定义了MY_FREQ_BAND_IS_2400_MHZ,就不能定义MY_FREQ_BAND_IS_868_MHZ和MY_FREQ_BAND_IS_900_MHZ。

选项名称I_AM_ALT_PAN_COORD

用途表示可以将当前FFD节点作为备用PAN协调器(当前版本中不支持)。

前提无

有效值无

示例以下行将当前节点定义为备用PAN协调器:

#define I_AM_ALT_PAN_COORD

注当前版本不支持FFD和备用PAN协调器功能。

DS00965A_CN 第16页 2005 Microchip Technology Inc.

AN965

选项名称I_AM_MAINS_POWERED

用途表示当前节点由交流电源供电。通常,协调器和路由器的电源都是交流电源(在当前版本中不使用)。

前提不能定义I_AM_RECHARGEABLE_BATTERY_POWERED和

I_AM_DISPOSABLE_BATTERY_POWERED。

有效值无

示例以下行表示这是一个交流电源供电的设备:

#define I_AM_MAINS_POWERED

注一旦定义了I_AM_MAINS_POWERED,就不能定义I_AM_RECHARGEABLE_BATTERY_POWERED 和I_AM_DISPOSABLE_BATTERY_POWERED。当前版本不使用此信息。将使用此信息来创建标

准节点的ZigBee配置文件。

选项名称I_AM_RECHARGEABLE_BATTERY_POWERED

用途表示当前节点使用电池作为电源(当前版本中不可用)。

前提不能定义I_AM_MAINS_POWERED和I_AM_DISPOSABLE_BATTERY_POWERED。

有效值无

示例以下行表示这是使用电池供电的设备:

#define I_AM_RECGARGEABLE_BATTERY_OPERATED

注一旦定义了I_AM_RECHARGEABLE_BATTERY_POWERED,就不能定义I_AM_MAINS_POWERED 和I_AM_DISPOSABLE_BATTERY_POWERED。当前版本不使用此信息。将使用此信息来创建标

准节点的ZigBee配置文件。

选项名称I_AM_DISPOSABLE_BATTERY_POWERED

用途表示当前节点使用一次性电池作为电源(当前版本中不可用)。

前提不能定义I_AM_MAINS_POWERED和I_AM_RECHARGEABLE_BATTERY_POWERED。

有效值无

示例以下行表示这是使用一次性电池供电的设备:

#define I_AM_DISPOSABLE_BATTERY_POWERED

注一旦定义了I_AM_DISPOSABLE_BATTERY_POWERED,就不能定义

I_AM_RECHARGEABLE_BATTERY_POWERED和I_AM_DISPOSABLE_BATTERY_POWERED。当

前版本不使用此信息。将使用此信息来创建标准节点的ZigBee配置文件。

选项名称I_AM_SECURITY_CAPABLE

用途表示此节点使用加密/解密来发送和接收数据包(当前版本中不支持)。

前提无

有效值无

示例以下行表示此节点具有安全功能:

#define I_AM_SECURITY_CAPABLE

注当前版本不支持安全功能。

2005 Microchip Technology Inc.DS00965A_CN 第17页

AN965

选项名称MY_RX_IS_ALWAYS_ON_OR_SYNCED_WITH_BEACON

用途表示此节点总是将接收器保持在开启状态或者周期性地监听信标(当前版本中不支持)。

前提不能定义MY_RX_IS_PERIODICALLY_ON和MY_RX_IS_ON_WHEN_STIMULATED。

有效值无

示例#define MY_RX_IS_ALWAYS_ON_OR_SYNCED_WITH_BEACON

注当前版本不使用或支持此信息。

选项名称MY_RX_IS_PERIODICALLY_ON

用途表示此节点周期性地开启接收器(当前版本中不使用)。

前提不能定义MY_RX_IS_ALWAYS_ON_OR_SYNCED_WITH_BEACON和

MY_RX_IS_ON_WHEN_STIMULATED。

有效值无

示例#define MY_RX_IS_PERIODICALLY_ON

注当前版本不使用此信息。

选项名称MY_RX_IS_ON_WHEN_STIMULATED

用途表示此节点只有在受到激励时才开启接收器(当前版本中不支持)。

前提不能定义MY_RX_IS_ALWAYS_ON_OR_SYNCED_WITH_BEACON和

MY_RX_IS_PERIODICALLY_ON。

有效值无

示例#define MY_RX_IS_ON_WHEN_STIMULATED

注当前版本不使用此信息。

选项名称MAC_LONG_ADDR_BYTEn

用途为此节点定义默认的64位MAC地址。总共可定义8个MAC地址,每个字节一个地址。主应用程序会使用此值来初始化MAC地址或根据需要在运行时更改它。

前提无

有效值0-255

示例将默认的MAC地址设置为04:a3:00:00:00:00:01

#define MAC_LONG_ADDR_BYTE0 (0x01)

#define MAC_LONG_ADDR_BYTE1 (0x00)

#define MAC_LONG_ADDR_BYTE2 (0x00)

#define MAC_LONG_ADDR_BYTE3 (0x00)

#define MAC_LONG_ADDR_BYTE4 (0x00)

#define MAC_LONG_ADDR_BYTE5 (0xa3)

#define MAC_LONG_ADDR_BYTE6 (0x04)

#define MAC_LONG_ADDR_BYTE7 (0x00)

注此协议栈源不自动设置此地址。主应用程序必须使用此值来初始化MAC层提供的MAC地址变量macLongAddr。

DS00965A_CN 第18页 2005 Microchip Technology Inc.

AN965

选项名称MAX_EP_COUNT

用途定义此设备所支持的端点的最大数量。

前提无

有效值1-255(最小值必须为1。最大值根据可用的RAM容量来决定;每个端点需要占用

RAM的5个字节。)

示例#define MAX_EP_COUNT (4)

注必须至少有1个端点支持标准的ZDO端点。每增加一个端点数就要增加5个字节的RAM占用。

在给定的设备中,最大限制为255个端点;但是实际数量将受到可用的RAM容量的限制。

选项名称MAC_USE_RF_TEST_CODE

用途使能收发器的特定测试功能。

前提无

有效值无

示例#define MAC_USE_RF_TEST_CODE

注在当前版本的Chipcon RF收发器中,有两个收发器测试功能,一个用于发送随机调制的信号而另一个用于发送未调制的信号。这两个功能对于测试RF电路的性能很有用处。

选项名称MAC_USE_SHORT_ADDR

用途仅应用于终端设备(即定义了I_AM_END_DEVICE的设备),终端设备在与网络相关联的时候使用此选项来请求新的短地址。

前提无

有效值无

示例#define MAC_USE_SHORT_ADDR

注基于当前版本的ZigBee终端设备将总是请求来自协调器的短地址。

选项名称MAC_CHANNEL_ENERGY_THRESHOLD

用途定义阈值,超过该阈值的信道将被使用(当前版本中未使用)。

前提无

有效值0-255(具体的值由RF收发器决定。)

示例#define MAC_CHANNEL_ENERGY_THRESHOLD (0x20)

注无

选项名称MAC_MAX_FRAME_RETRIES

用途设置在没有接收到应答的情况下的最大帧重试次数。

前提无

有效值1-5

示例#define MAC_MAX_FRAME_RETRIES (3)

注无

2005 Microchip Technology Inc.DS00965A_CN 第19页

AN965

选项名称MAC_ACK_WAIT_DURATION

用途设置此节点等待来自另一个节点的应答的最大时间。

前提无

有效值1-4,294,967,296 tick

示例将应答等待时间设置为半秒:

#define MAC_ACK_WAIT_DURATION (TICK_SECOND/2)

注无

选项名称MAC_RESPONSE_WAIT_TIME

用途设置此节点等待来自另一个节点的响应的最大时间。

前提无

有效值1-255 节拍

示例#define MAC_RESPONSE_WAIT_TIME (TICK_SECOND)

注在星型网络中,由于查询请求,终端设备需要等待这么长的时间才能收到响应。

选项名称MAC_ED_SCAN_PERIOD

用途设置能量检测周期。在此周期中,RF接收器保持开启状态以测量RF能量。

前提无

有效值1-4,294,967,296节拍

示例将能量检测扫描周期设置为1/4秒:

#define MAC_ED_SCAN_PERIOD (TICK_SECOND/4)

注无

选项名称MAC_ACTIVE_SCAN_PERIOD

用途设置有效扫描周期。在有效扫描期间,节点请求来自附近的协调器的信标并期待协调器在这个周期内发出响应。

前提无

有效值1-4,294,967,296节拍

示例将有效扫描周期设置为1/2秒:

#define MAC_ACTIVE_SCAN_PERIOD (TICK_SECOND/2)

注无

选项名称MAC_MAX_DATA_REQ_PERIOD

用途仅在定义了I_AM_COORDINATOR时使用。

设置一个周期,在此周期之内,终端设备必须向此协调器请求它们的数据帧。也可以把这个周期

看作是网络中的每个节点必须查询协调器的一段时间。

前提必须定义I_AM_COORDINATOR。

有效值1-4,294,967,296节拍

示例将最大数据请求周期设置为10秒:

#define MAC_MAX_DATA_REQ_PERIOD (TICK_SECOND*10)

注无

DS00965A_CN 第20页 2005 Microchip Technology Inc.

Zigbee协议栈系统事件

系统常用事件处理函数: -按键事件 -接收消息事件 -网络状态改变事件 -绑定确认事件 -匹配响应事件 1、按键事件 Case KEY_CHANGE: 当有按键事件发生的时,调用按键事件处理函数Sample_HandleKeys()来处理按键事件。 在SampleApp例程中按键处理函数处理了以下2件事情 -如果按键1按下,将向网络中的其他设备发送LED闪烁命令 -如果按键2按下,检测组ID号为SAMPLEAPP_FLASH_GROUP的组是否已经注册。如果已经注册,调用aps_RemoveGroup()将其删除;如果没注册就在APS层注册

2、接收消息事件 Case:AF_INCOMING_MSG_CMD: 如果有接收消息事件发生,则调用函数SampleApp_MessageMSGCB(MSG)对接收的消息进行处理。一般的接收消息事件是通过用户自定义的端点输入簇和输出簇来处理的。 在LED闪烁命令的发送函数中的输出簇为SAMPLEAPP_FLASH_CLUSTERID,所以在接收消息事件的输入簇中为SAMPLEAPP_FLASH_CLUSTERID即收到LED闪烁命令

3、网络状态改变事件 Case:ZDO_STATE_CHANGE 当有网络状态改变事件发生后,会调用函数SampleApp_NwkState()来处理网络状态改变事件。在SampleApp例程中,网络状态改变事件主要处理了以下事件: -判断设备类型(区分协调器、路由节点、终端节点) -当协调器网络建立成功后或其他类型节点加入网络后点亮led1 -通过调用osal_start_timerEx()设置一个定时事件,当时间到达后启用用户自定义事件SampleApp_Send_PERIODIC_MSG_EVT 备注:在使用过程中这里的3种设备类型不是全选,写一个就可以了,其他的删除

ZigBee 协议架构

根据应用和市场需要定义了ZigBee 协议的分层架构,其协议的体系结构如图1 所示,其中物理层(physical layer,PHY)和媒介访问控制层(medium access control sub-layer,MAC)是由IEEE802.15.4-2003 标准定义的,在这个底层协议的基础上ZigBee 联盟定义了网络层(network layer,PHY)和应用层(application layer,APL)架构. 图1 zigbee协议栈体系结构 物理层规范 物理层定义了它与MAC 层之间的两个接口:数据服务接口PD-SAP 和管理服务接口PLME-SAP,其中PD-SAP 接口还为物理层提供了相应的数据服务,负责从无线物理信道上收发数据,而PLME-SAP 接口同时为物理层提供相应的管理服务,用于维护一个由物理层相关数据组成的数据库。物理层负责数据的调制、发送和接收、空闲信道评估(clear channel assessment,CCA)信道能量的监测(energy detect,ED)和链接质量指示(link quality indication,LQI)等。物理层帧结构由同步头、物理层帧头和物理层有效载荷三部分组成,如表1 所示。

同步头又包括32bit 的前同步码和8bit 的帧定界符,前同步码用来为数据收发提供码元或数据符号的同步;帧界定符用来标识同步域的结束及数据的开始。物理层帧头包括7bit 的帧长度和1bit 的预留位,帧长度定义了物理层净荷的字节数。物理层有效载荷就是MAC层的帧内容。 表一物理层帧格式 媒体接入控制层规范 MAC 层定义了它与网络层之间的接口,包括提供给网络层的数据服务接口MLDE-SAP 和管理服务接口MLME-SAP,同时提供了MAC 层数据服务和MAC 层管理服务。MAC层数据服务主要实现数据帧的传输;MAC 层管理服务主要负责媒介访问控制、差错控制等。 MAC 层主要功能包括以下几个方面: (1)ZigBee 协调器产生网络信标 (2)设备与信标同步 (3)支持节点加入或着退出操作 (4)信道接入方式采用免冲突载波检测多路访问(CSMA-CA)机制 (5)建立并维护保护时隙机制 (6)为设备提供安全支持 MAC 帧格式由三个基本部分组成:MAC 帧头、MAC 帧载荷和MAC 帧尾。不同类型的MAC 帧,其帧头和帧尾都是一样的,只是MAC 帧载荷有差别,通用MAC 帧格式如表2所示。 表二通用MAC帧格式 网络层规范 网络层定义了它与应用层之间的接口,包括提供给应用层的数据服务接口NLDE-SAP和管理服务接口NLME-SAP , 同时提供了网络层数据服务和网络层管理服务。网络层主要负责拓扑结构的建立和网络的维护,具体的功能如下:(1)初始化网络,即建立一个新的包含协调器、路由器和终端设备的网络(2)设备连接和断开时所采用的机制 (3)对一跳邻居节点的发现和相关节点信息的存储 (4)ZigBee 协调器和路由器为新加入节点分配短地址

Zigbee协议栈原理基础

1Zigbee协议栈相关概念 1.1近距离通信技术比较: 近距离无线通信技术有wifi、蓝牙、红外、zigbee,在无线传感网络中需求的网络通信恰是近距离需求的,故,四者均可用做无线传感网络的通信技术。而,其中(1)红外(infrared):能够包含的信息过少;频率低波衍射性不好只能视距通信;要求位置固定;点对点传输无法组网。(2)蓝牙(bluetooth):可移动,手机支持;通信距离10m;芯片价格贵;高功耗(3)wifi:高带宽;覆盖半径100m;高功耗;不能自组网;(4)zigbee:价格便宜;低功耗;自组网规模大。?????WSN中zigbee通信技术是最佳方案,但它连接公网需要有专门的网关转换→进一步学习stm32。 1.2协议栈 协议栈是网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 1.2.1Zigbee协议规范与zigbee协议栈 Zigbee各层协议中物理层(phy)、介质控制层(mac)规范由IEEE802.15.4规定,网络层(NWK)、应用层(apl)规范由zigbee联盟推出。Zigbee联盟推出的整套zigbee规范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeepro zigbee协议栈:很多公司都有自主研发的协议栈,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN 等。 1.2.2z-stack协议栈与zigbee协议栈 z-stack协议栈与zigbee协议栈的关系:z-stack是zigbee协议栈的一种具体实现,或者说是TI公司读懂了zigbee 协议栈,自己用C语言编写了一个软件—---z-stack,是由全球几千名工程师共同开发的。ZStack-CC2530-2.3.1-1.4.0软件可与TI的SmartRF05平台协同工作,该平台包括MSP430超低功耗微控制器(MCU)、CC2520RF收发器以及CC2591距离扩展器,通信连接距离可达数公里。 Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。与z-stack 相比msstatePAN、freakz协议栈都是全部真正的开源的,它们的所有源代码我们都可以看到。但是由于它们没有大的商业公司的支持,开发升级方面,性能方面和z-stack相比差距很大,并没有实现商业应用,只是作为学术研究而已。 还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,当网络节点要求不多在30个以内,通信距离500m-1000m时用simpliciti。 1.2.3IEEE802.15.4标准概述 IEEE802.15.4是一个低速率无线个人局域网(LowRateWirelessPersonalAreaNetworks,LR-WPAN)标准。定义了物理层(PHY)和介质访问控制层(MAC)。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。 ◆具有16位短地址或者64位扩展地址。 ◆支持冲突避免载波多路侦听技术(carriersensemultipleaccesswithcollisionavoidance,CSMA/CA)。(mac层) ◆用于可靠传输的全应答协议。(RTS-CTS) ◆低功耗。 ◆能量检测(EnergyDetection,ED)。 ◆链路质量指示(LinkQualityIndication,LQI)。 ◆在2.45GHz频带内定义了16个通道;在915MHz频带内定义了10个通道;在868MHz频带内定义了1个通道。 为了使供应商能够提供最低可能功耗的设备,IEEE(InstituteofElectricalandElectronicsEngineers,电气及电子工程师学会)定义了两种不同类型的设备:一种是完整功能设备(full.functionaldevice,FFD),另一种是简化功能设备

ZigBee协议栈OSAL介绍

讨论ZigBee协议栈的构成以及内部OSAL的工作机理。 ZigBee协议栈OSAL介绍 操作系统抽象层 OSAL常用术语: 1.资源(Resource):任何任务所占用的实体都叫资源,如变量、数组、结构体 2.共享资源(Shared Resource):两个或两个以上任务使用的资源,为防止破坏资源,任务在操作共享资源时是独占状态。 3.任务(Task):即线程,简单的程序的执行过程。任务设计时将问题尽可能分成多个任务,每个任务独立完成某项功能,同时赋予优先级、CPU寄存器和堆栈空间。一般一个任务设计为一个无限循环。 4.多任务运行(Muti-task Running):其实同一时刻只有一个任务运行。 5.内核(Kernel):内核负责管理各个任务。包括:分配CPU时间;任务调度;任务间的通信。 6.互斥(Mutual Exclusion):多任务通信最常用方法是共享数据结构。 保护共享资源常用的方法: 关中断; 使用测试并置位指令(T&S指令); 禁止任务切换; 使用信号量; 7.消息队列(Message Queue):用于任务间传递消息。 OSAL提供如下功能: 任务注册、初始化和启动; 任务间的同步、互斥; 中断处理; 储存器分配和管理; OSAL运行机理: OSAL就是一种支持多任务运行的系统资源分配机制。 OSAL是一种基于事件驱动的轮询式操作系统。、 void osal_start_system(void)是ZigBee协议栈的灵魂,不断的查看事件列表,如果有事件发生就调用相应的事件处理函数。 SYS_EVENT_MSG是一个事件集合,是由协议栈定义的事件,即系统强制事件(Mandatory Events),它的定义为: #define SYS_EVENT_MSG 0x8000; 它包含如下事件: AF_INCOMING_MSG_CMD 收到一个新的无线数据

2020年Zigbee协议栈中文说明免费

1.概述 1.1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层:网络层(NWK)、应用层和安全服务提供层。图1-1给出了这些组件的概况。 1.1.1ZigBee堆栈层 每个ZigBee设备都与一个特定模板有关,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。 设备是由模板定义的,并以应用对象(Application Objects)的形式实现(见图1-1)。每个应用对象通过一个端点连接到ZigBee堆栈的余下部分,它们都是器件中可寻址的组件。 图1-1 zigbe堆栈框架 从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。 端点之间的通信是通过称之为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。图1-1-2就是设备及其接口的一个例子:

图1-1-2 每个接口都能接收(用于输入)或发送(用于输出)簇格式的数据。一共有二个特殊的端点,即端点0和端点255。端点0用于整个ZigBee设备的配置和管理。应用程序可以通过端点0与ZigBee 堆栈的其它层通信,从而实现对这些层的初始化和配置。附属在端点0的对象被称为ZigBee设备对象 (ZD0)。端点255用于向所有端点的广播。端点241到254是保留端点。 所有端点都使用应用支持子层(APS)提供的服务。APS通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。APS使用网络层(NWK)提供的服务。NWK负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过ZigBee设备对象(ZD0)对网络层参数进行配置和访问。 1.1.2 80 2.15.4 MAC层 IEEE 802.15.4标准为低速率无线个人域网(LR-WPAN)定义了OSI模型开始的两层。PHY层定义了无线射频应该具备的特征,它支持二种不同的射频信号,分别位于2450MHz波段和868/915MHz 波段。2450MHz波段射频可以提供250kbps的数据速率和16个不同的信道。868 /915MHz波段中,868MHz支持1个数据速率为20kbps的信道,915MHz支持10个数据速率为40kbps的信道。MAC层负责相邻设备间的单跳数据通信。它负责建立与网络的同步,支持关联和去关联以及MAC 层安全:它能提供二个设备之间的可靠链接。 1.1.3 关于服务接入点 ZigBee堆栈的不同层与802.15.4 MAC通过服务接入点(SAP)进行通信。SAP是某一特定层提供的服务与上层之间的接口。 ZigBee堆栈的大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。 1.1.4 ZigBee的安全性 安全机制由安全服务提供层提供。然而值得注意的是,系统的整体安全性是在模板级定义的,这意味着模板应该定义某一特定网络中应该实现何种类型的安全。 每一层(MAC、网络或应用层)都能被保护,为了降低存储要求,它们可以分享安全钥匙。SSP是通过ZD0进行初始化和配置的,要求实现高级加密标准(AES)。ZigBee规范定义了信任中心的用

从Zigbee协议栈底层添加自己的按键配置

本实验是基于ZStack-CC2530-2.5.1a版本的协议栈来进行实验的,整个实验需要改动 hal_board_cfg.h、hal_board_cfg.h、hal_key.c、hal_key.h和自己定义的Coordinator.c这5个文件。 注意:添加自己的按键时尽量不要修改协议栈里面的按键程序,自己另行添加即可。 1、hal_key.h 在/* Switches (keys) */下面添加自己的按键定义 #define HAL_KEY_SW_8 0x80 图1: ---------------------------------------------------------------------------------------- 2、hal_board_cfg.h 在/* S6 */ #define PUSH1_BV BV(1) #define PUSH1_SBIT P0_1 #if defined (HAL_BOARD_CC2530EB_REV17) #define PUSH1_POLARITY ACTIVE_LOW #elif defined (HAL_BOARD_CC2530EB_REV13) #define PUSH1_POLARITY ACTIVE_LOW #else #error Unknown Board Indentifier #endif 下面模仿/* S6 */下的程序定义自己的按键值: /* S8 */ #define PUSH8_BV BV(4)//修改 #define PUSH8_SBIT P0_4//修改 #if defined (HAL_BOARD_CC2530EB_REV17)

ZigBee测试与协议分析

ZigBee测试与协议分析 1 前言 ZigBee协议栈包括物理层协议(IEEE802.15.4)和上层软件协议(ZigBee 2007以及其他的ZigBee网络协议)。本文将从这两方面来了解这些协议,通过介绍如何捕获及如何理解关键参数,深层次剖析ZigBee技术。有了这些本质性的认识,对于分析解决无线产品应用问题,会有很大的帮助。 2 物理层分析 ZigBee的物理层为IEEE802.15.4标准所规定,定义了ZigBee底层的调制编码方式。这些规约大多是芯片设计者需要关心的,对于应用开发来说,更关心的是衡量一个芯片、一个射频系统性能的参数。在过去的文章中,已介绍了输出功率、接收灵敏度和链路预算等参数,这一讲将更深入地介绍一个调制质量的参数:EVM。EVM指的是误差向量(包括幅度和相位的矢量),表征在一个给定时刻理想无误差基准信号与实际发射信号的向量差,。从EVM参数中,可以了解到一个输出信号的幅度误差及相位误差。 EVM是衡量一个RF系统总体调制质量的指标,定义为信号星座图上测量信号与理想信号之间的误差,它用来表示发射器的调制精度,调制解调器、PA、混频器、收发器等对它都会有影响。EVM数据和眼图。 了解完这个参数之后,再看看实际测试中是如何获取EVM参数的。 ZigBee物理层的测试,在产品研发、生产和维护阶段,可以分别采用不同的仪器。 (1)产品研发阶段要测量EVM参数,需要使用带协议解析的频谱仪,最好是自带相应协议插件的仪器,可以使用安捷伦PXA N9030A频谱分析仪+8960B插件(选配了ZigBee分析插件)。这些仪器可以测试出ZigBee调制信号的星座图、实时数据和眼图等信息,在芯片级开发过程中,需要考量高频电容电感以及滤波器等的单个及组合性能,特别需要注意的是ZigBee信号的临道抑制参数,利用PXA N9030A的高分辨率,可以查看点频的带外信号,这些细节在更换射频器件供应商时,需要仔细测量,一般数字电路抄板比较容易,因为器件性能的影响不是很大,只要值和封装对了就可以,但是射频前端的设计上,即使原样的封装、容值和感值,供应商不一样,射频参数也是不一样的,板材的选用也极大地影响着阻抗匹配,因此复制和再开发都有较大难度。合格的测试工具,加上有质量保证的射频器件供应商资源,方能真正具备RF设计能力。安捷伦PXA N9030A频谱分析仪。 (2)批量生产阶段在批量生产中,不可能将实验室的研发测试仪器搬到工厂,因此,需要便携小巧的测试设备,这时可用罗德与斯瓦茨公司的热功率探头,如NRP-Z22,做一个2.4 GHz的输出功率测试,保证能够输出公差允许的功率信号即可,因为在生产中,射频器件的焊接不良、馈线连接头的接触不良,都会造成输出功率的下降甚至消失。需要注意的是,探头非常容易被静电损坏,必须要带上防静电手套进行操作,返修过程如需要经过德国,则时间长,经费也不便宜,不是很严重的损坏倒是可以在深圳维修中心处理。NRP-Z22。 (3)应用阶段在现场出现问题时,ZigBee节点已经安装到现场,不能逐一拆下来测试,并且周围的电磁环境也是没办法在单个节点上检测到,这时就需要手持式的频谱仪进行现场勘查了,例如安捷伦公司的N9912A手持式频谱仪。使用该频谱仪,可以完成无线系统设计初期的现场勘查工作,检测现场各个地点是否有异常电磁干扰,对于ZigBee来说,当然是检测是否有持续的WIFI信号干扰了。同时,更为详细的现场勘查,还包括在定点进行数据发送,预期覆盖点进行信号强度分析,以实地评估墙体等障碍物的信号衰减,在已经架设好的ZigBee网络中,也可以检测信号覆盖,数据通信是否正常等。N9912A。

zigbee协议栈代码主要名词解释

zigbee协议重要名词解释及英文缩写(转载)网络层功能: 1. 加入和退出网络 2. 申请安全结构 3. 路由管理 4. 在设备之间发现和维护路由 5. 发现邻设备 6. 储存邻设备信息 当适当的重新分配地址联合其他设备,ZIGBEE2006可以依赖于网络协调者建立一个新网络. ZIGBEE应用层由APS(应用支持)、AF(应用结构)、ZDO(ZIGBEE设备对象)和厂商自定义应用对象组成。 APS功能 1. 绑定维持工作台,定义一个两个合拢的设备进行比较建立他们的需要和服务。 2. 促进信息在设备之间的限制 3. 组地址定义,移除和过滤组地址消息 4. 地址映射来自于64位IEEE地址和16位网络地址 5. 分裂、重新组装和可靠数据传输 ZDO功能 1. 定义设备内部网络(ZigBee协调者和终端接点) 2. 开始和/或回答绑定请求 3. 在网络设备中建立一个网络安全关系 4. 在网络中发现设备和决定供给哪个应用服务 ZDO同样有责任在网络中发现设备和为他们提供应用服务。 1.1.4 网络拓扑 ZIGBEE网络层支持星状、树状和网状拓扑。在星状拓扑中网络受约束与单个设备,呼叫COORD。COORD有责任建立和维持在网络中发现的设备和其他所有设备,都知道的终端接点直接和COORD 通信。在网状和树状拓扑中,COORD有责任建立一个网络和选择几个关键网络参数,但是网络有有可能直接应用于ZigBee路由器。在树状网络中,利用分等级路由策略完成路由传输数据和控制消息直通网络。树状网络在802.15.4-2003中可以采用信标引导通信。网状网络将允许所有对等网络通信。ZIGBEE 路又将不能在网状网络中发射规则的IEEE802.15.4-2003信标。

一文读懂zigbee技术的协议原理

一文读懂zigbee技术的协议原理 一.前言 从今天开始,我们要正式开始进行zigbee相关的通信实验了,我所使用的协议栈是ZStack 是TI ZStack-CC2530-2.3.0-1.4.0版本,大家也可以从TI的官网上直接下载TI公司为cc2530写的协议栈代码,毕竟,我们作为初学者,应该先不要去深究协议栈是怎么用代码编写的,毕竟zigbee已经相当成熟了,我们应该先学会使用zigbee协议栈进行通信,并能应用于实际项目中,比如说智能家具,不知道大家是不是有同感,所以下面我就先给大家介绍一下zigbee通信的原理以及体系架构。 二.ZStack 体系架构 ZStack 的体系结构由称为层的各模块组成。每一层为其上层提供特定的服务:即由数据服务实体提供数据传输服务;管理实体提供所有的其他管理服务。每个服务实体通过相应的服务接入点(SAP) 为其上层提供一个接口,每个服务接入点通过服务原语来完成所对应的功能。 ZStack 根据IEEE 802.15.4 和ZigBee 标准分为物理层,介质接入控制层,网络层,应用层。物理层提供了基础的服务,数据传输和接收,网络层提供了各个节点连入的服务,是zigbee网络通信的关键,应用层是我们关注的重点,提供了应用的框架和ZDO。大家如果想了解体系结构的具体内容,可以自己去看说明文档,下面我给大家介绍一下zigbee 工作原理。 ZStack 采用操作系统的思想来构建,采用事件轮循机制,而且有一个专门的Timer2 来负责定时。从CC2530 工作开始,Timer2 周而复始地计时,有采集、发送、接收、显示…等任务要执行时就执行。当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。如果同时有几个事件发生,判断优先级,逐次处理事件。这种软件构架可以极大地降级系统的功耗。 整个ZStack 的主要工作流程,如图所示,大致分为以下6 步:(1) 关闭所有中断;(2) 芯

TI_zigbee协议栈结构分析应用

无线盛世《快速进入ZB世界》
Ver:1

进入Zigbee世界的准备工作
§ 首先,我们需具备一些硬件设备及平台。以下 我就罗列一下Zigbee开发基本工具: § 计算机:不管是设计电路还是编程开发都是离 不开它的。 § Zigbee开发板:对于初学者来说,Zigbee开发 板无疑是最佳选择。有了开发板,你可以在我 们成熟设计的基础上学习或者做自己的设计。 § Zigbee模块:集MCU,RF,天线设计于一体 的Zigbee模块。使用它,我们可省去设计天线 及IC周边电路设计的复杂工作。

进入Zigbee世界的准备工作
§ Zigbee仿真器:是集烧写程序、在线编程和在线仿真 功能于一身的开发过程工作中必不可少的开发工具。 编程器既能对CC243x芯片(其实包括TI产品中的CC 系列的大部分芯片)进行烧写程序(hex标准文件程序 ),也能对CC243x芯片进行在线编程和仿真,让我们 能方便地在线调试开发,从而大大地提高了开发效率 。 § Zigbee协议分析仪:ZigBee的设计开发者必不可少的 工具!ZigBee协议分析仪具有广泛的功能,包括:分 析以及解码在PHY、MAC、NETWORK/SECURITY、 APPLICATION FRAMEWORK、和APPLICATION PROFICES等各层协议上的信息包;显示出错的包以 及接入错误;指示触发包;在接收和登记过程中可连 续显示包。

进入Zigbee世界的准备工作
§ 再次,我们需要在将用于开发Zigbee的计 算机平台上安装这些软件: § Zigbee协议分析软件(sniffer) § 程序烧写软件(Flash Programmer) § IAR公司的EW8051 version 7.20I/W32 。

ZigBee协议架构

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 ZigBee协议架构 甲方:___________________ 乙方:___________________ 日期:___________________

(application layer,APL )架构. 图1 zigbee协议栈体系结构 物理层规范 物理层定义了它与MAC层之间的两个接口:数据服务接口PD-SAP和管理服务接口PLME-SAP其中PD-SAP接口还为物理层提供了相应的数据服务,负责从无线物理信道上收发数据,而PLME-SAPg口同时为物理层提供相应的管理服务,用丁维护一个由物理层相关数据组成的数据库。物理层负责数据的调制、发送和接收、空闲信道评估(clear channel assessment,CCA)信道能量的监测(energy detect,ED )和链接质量指示(link quality indication , LQI)等。物理层帧结构由同步头、物理层帧头和物理层*效载荷三部分组成,如表1所示。 同步头乂包括32bit的前同步码和8bit的帧定界符,前同步码用来为数据收发提供码元或数据符号的同步;帧界定符用来标识同步域的结束及数据的开始。物理层帧头包括7bit的帧长度和1bit的预留位,帧长度定义了物理层净荷的字节数。物理层有效载荷就是MAC层的帧内容。 表一物理层帧格式

媒体接入控制层规范 MAC层定义了它与网络层之间的接口,包括提供给网络层的数据服务接口MLDE-SAFffi管理服务接口MLME-SAP同时提供了MAC层数据服务和MAC层管理服务。MA@数据服务主要实现数据帧的传输;MAC层管理服务主要负责媒介访问控制、差错控制等。 MAC层主要功能包括以下几个方面: (1) ZigBee协调器产生网络信标 (2) 设备与信标同步 (3) 支持节点加入或着退出操作 (4) 信道接入方式采用免冲突载波检测多路访问(CSMA-CA机制 (5) 建立并维护保护时隙机制 (6) 为设备提供安全支持 MAC帧格式由三个基本部分组成:MAC帧头、MAC帧载荷和MAC帧尾。不同类型的MAC帧,其帧头和帧尾都是一样的,只是MAC帧载荷有差别,通用MAC帧格式如表2所小。 表二通用MA#格式 网络层规范 网络层定义了它与应用层之间的接口 ,包括提供给应用层的数据服务接口 NLDE-SAP管理服务接口NLME-SAP,同时提供了网络层数据服务和网络层管理 服务。网络层主要负责拓扑结构的建立和网络的维护,具体的功能如下: (1) 初始化网络,即建立一个新的包含协调器、路由器和终端设备的网络 (2) 设备连接和断开时所采用的机制 (3) 对一跳邻居节点的发现和相关节点信息的存储 (4) ZigBee协调器和路由器为新加入节点分配短地址 (5)确保MAC正常工作,并且为应用层提供合适的服务接口 网络层帧结构包括网络层帧头(Network header, NHR和网络层载荷(Network payload,NPL)两部分,其中网络层帧头域由帧控制域、目的设备地址、源设备地址、广播半径和广播序列号等部分组成,通用网络帧的结构如表3所示。 表3通用网络层帧结构

ZigBee协议栈任务处理分析笔记

ZigBee协议栈任务处理分析笔记 ----(转载请注明出处774910349@https://www.doczj.com/doc/4e53427.html,)Everhuai写于2011-11-17 弄了这么久ZigBee协议栈,今天终于有一点头绪了,基本上知道了整个系统任务怎么被添加,又是怎么被切换的一个过程。下面就简单讲一讲这部分内容。 首先看的当然是main()函数,不过这个函数不是今天的重点,里面有我添加的注释,先就一笔带过吧。 int main( void ) { // Turn off interrupts osal_int_disable( INTS_ALL );//关闭全局中断EA=0,初始化过程不响应任何中断 // Initialization for board related stuff such as LEDs HAL_BOARD_INIT();//配置了时钟、LED、串口 // Make sure supply voltage is high enough to run zmain_vdd_check();//检查电源电压 // Initialize stack memory zmain_ram_init();//初始化堆内存 // Initialize board I/O /初始化板子用到的IO口 InitBoard( OB_COLD ); // Initialze HAL drivers HalDriverInit();//初始化外设 // Initialize NV System //系统初始化 osal_nv_init( NULL ); // Initialize basic NV items//任务初始化 zgInit(); // Initialize the MAC ZMacInit(); // Determine the extended address //确定长地址 zmain_ext_addr(); #ifndef NONWK // Since the AF isn't a task, call it's initialization routine afInit(); #endif // Initialize the operating system osal_init_system(); //系统初始化

zigbee协议栈源码

竭诚为您提供优质文档/双击可除 zigbee协议栈源码 篇一:zigbeez-stack协议栈构架 zstack基础 1、zstack协议栈构架 zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层api,供用户调用。协议栈体系分层架构与协议栈代码文件夹对应表如下:整个协议栈的构架,如图所示 app:应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。 hal:硬件层目录,包含有与硬件相关的配置和驱动及操作函数。 mac:mac层目录,包含了mac层的参数配置文件及其mac的lib库的函数接口文件。 mt:监控调试层,主要用于调试目的,即实现通过串口调试各层,与各层进行直接交互。nwk:网络层目录,含网络层配置参数文件及网络层库的函数接口文件,aps层库的

函数接口。 osal:协议栈的操作系统。 profile:aF层目录,包含aF层处理函数文件。 security:安全层目录,安全层处理函数接口文件,比如加密函数等。 services:地址处理函数目录,包括着地址模式的定义及地址处理函数。 tools:工程配置目录,包括空间划分及zstack相关配置信息。 zdo:zdo目录。 zmac:mac层目录,包括mac层参数配置及mac层lib 库函数回调处理函数。zmain:主函数目录,包括入口函数main()及硬件配置文件。 output:输出文件目录,这个ew8051ide自动生成的。 2、zigbee20xx协议栈源码库结构分析 了解了zigbee20xx协议栈整个构架后,再来看看协议栈源码库结构是什么样的,各层的具体文件是什么,建立不同的项目、添加自己的应用层任务及处理函数需要修改什么文件。zigbee20xx协议栈zstack-1.4.2文件目录及说明如下: 打开smapleapp项目工程 先看app层:

Zigbee协议栈学习总结教学提纲

典型的智能家居网络总体结构图 智能家居系统模块整体框图

ZigBee是一种标准,该标准定义了短距离、低速率传输速率无线通讯所需要的一系列通信协议。基于ZigBee的无线网络所使用的工作频段为868MHz、915MHz和2.4GHz,最大数据传输速率为250Kbps。 ZigBee无线网络共分为5层:物理层(PHY),介质访问控制层(MAC),网络层(NWK),应用程序支持子层(APS),应用层(APL)。 总体而言,ZigBee技术有如下特点:高可靠性,低成本,低功耗,高安全性,低数据速率

Zigbee网络中的设备主要分为三种: 1,协调器,协调器节点负责发起并维护一个无线网络,识别网络中的设备加入网络,一个ZigBee 网络只允许有一个ZigBee 协调器; 2,路由器,路由器节点支撑网络链路结构,完成数据包的转发;。ZigBee 网格或树 型网络可以有多个ZigBee 路由器。ZigBee 星型网络不支持ZigBee 路由器。 3,终端节点,负责数据采集和可执行的网络动作。 从功能上,zigbee节点应由微控制器模块、存储器、无线收发模块、电源模块和其它外设功能模块组成。 ZigBee/IEEE802.15.4定义了两种类型的设备:它们是全功能设备(FFD,Full Function Device)和精减功能设备(RFD,Reduced Function Device)。FFD可以当作一个网络协调器或者一个普通的传感器节点,它可以和任何其他的设备通讯,传递由RFD发来的数据到其他设备,即充当了路由的功能。而RFD只能是传感器节点,它只能和FFD进行通讯,经过FFD可以将自己测得数据传送出去。在ZigBee网络中大多是这两种设备,网络中结点数理论上最多可达65,536个,可以组成三种类型网络:星型、网状型和树型。 星状网络由一个PAN 协调器和多个终端设备组成,只存在PAN 协调器与终端的通讯,终端设备间的通讯都需通过PAN 协调器的转发。 树状网络由一个协调器和一个或多个星状结构连接而成,设备除了能与自己的父节点或子节点进行点对点直接通讯外,其他只能通过树状路由完成消息传输。 网状网络是树状网络基础上实现的,与树状网络不同的是,它允许网络中所有具有路由功能的节点直接互连,由路由器中的路由表实现消息的网状路由。 星型,如果用星型网络的话,在房间内的节点是否能够穿墙,与房间外的协调器进行正常通信。

zigbee协议名词解释

zigbee协议重要名词解释及英文缩写(转载) 网络层功能: 1.加入和退出网络 2.申请安全结构 3.路由管理 4.在设备之间发现和维护路由 5.发现邻设备 6.储存邻设备信息 当适当的重新分配地址联合其他设备,ZIGBEE2006可以依赖于网络协调者建立一个新网络. ZIGBEE应用层由APS(应用支持)、AF(应用结构)、ZDO(ZIGBEE设备对象)和厂商自定义应用对象组成。 APS功能 1.绑定维持工作台,定义一个两个合拢的设备进行比较建立他们的需要和服务。 2.促进信息在设备之间的限制 3.组地址定义,移除和过滤组地址消息 4.地址映射来自于64位IEEE地址和16位网络地址 5.分裂、重新组装和可靠数据传输 ZDO功能 1.定义设备内部网络(ZigBee协调者和终端接点) 2.开始和/或回答绑定请求 3.在网络设备中建立一个网络安全关系 4.在网络中发现设备和决定供给哪个应用服务 ZDO同样有责任在网络中发现设备和为他们提供应用服务。 1.1.4网络拓扑 ZIGBEE网络层支持星状、树状和网状拓扑。在星状拓扑中网络受约束与单个设备,呼叫COORD。COORD有责任建立和维持在网络中发现的设备和其他所有设备,都知道的终端接点直接和COORD 通信。在网状和树状拓扑中,COORD有责任建立一个网络和选择几个关键网络参数,但是网络有有可能直接应用于ZigBee路由器。在树状网络中,利用分等级路由策略完成路由传输数据和控制消息直通网络。树状网络在802.15.4-2003中可以采用信标引导通信。网状网络将允许所有对等网络通信。ZIGBEE 路又将不能在网状网络中发射规则的IEEE802.15.4-2003信标。

1.ZigBee协议栈简介

1、ZigBee协议栈简介 本节内容仅仅是对ZigBee协议栈的一些大家必须理解清楚的概念进行简单的讲解,并没有对ZigBee协议栈的构成及工作原理进行详细的讨论。让刚接触ZigBee协议栈的朋友们对它有个初步的感性认识,有助于后面使用ZigBee协议栈进行真正的项目开发。 什么是ZigBee协议栈呢?它和ZigBee协议有什么关系呢 协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议的,进而实现无线数据收发。 图1展示了ZigBee无线网络协议层的架构图。ZigBee的协议分为两部分,IEEE 802.15.4定义了PHY(物理层)和MAC(介质访问层)技术规范;ZigBee 联盟定义了NWK(网络层)、APS(应用程序支持子层)、APL(应用层)技术规范。ZigBee协议栈就是将各个层定义的协议都集合在一直,以函数的形式实现,并给用户提供API(应用层),用户可以直接调用。 图1 ZigBee无线网络协议层 在开发一个应用时,协议较底下的层与应用是相互独立的,它们可以从第三方来获得,因此我们需要做的就只是在应用层进行相应的改动。 介绍到这里,大家应该清楚协议和协议栈的关系了吧,是不是会想着怎么样才能用协议栈来开发自己的项目呢?技术总是不断地在发展地,我们可以用ZigBee厂商提供的协议栈软件来方便地使用ZigBee协议栈(注意:不同厂商提供的协议栈是有区别的,此处介绍TI推出的ZigBee 2007协议栈也称Z-Stack)。 Z-stack是挪威半导体公司Chipcon(目前已经被TI公司收购)推出其CC2430开发平台时,推出的一款业界领先的商业级协议栈软件,由于这个协议栈软件的出现,用户可以很容易地开发出具体的应用程序来,也就是大家说的掌

Zigbee协议栈原理基础

Zigbee协议栈原理基础

1Zigbee协议栈相关概念 1.1近距离通信技术比较: 近距离无线通信技术有wifi、蓝牙、红外、zigbee,在无线传感网络中需求的网络通信恰是近距离需求的,故,四者均可用做无线传感网络的通信技术。而,其中(1)红外(infrared):能够包含的信息过少;频率低波衍射性不好只能视距通信;要求位置固定;点对点传输无法组网。(2)蓝牙(bluetooth):可移动,手机支持;通信距离10m;芯片价格贵;高功耗(3)wifi:高带宽;覆盖半径100m;高功耗;不能自组网;(4)zigbee:价格便宜;低功耗;自组网规模大。?????WSN中zigbee通信技术是最佳方案,但它连接公网需要有专门的网关转换→进一步学习stm32。 1.2协议栈 协议栈是网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 1.2.1Zigbee协议规范与zigbee协议栈 Zigbee各层协议中物理层(phy)、介质控制层(mac)规范由IEEE802.15.4规定,网络层(NWK)、应用层(apl)规范由zigbee联盟推出。Zigbee联盟推出的整套zigbee规范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeepro zigbee协议栈:很多公司都有自主研发的协议栈,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN 等。 1.2.2z-stack协议栈与zigbee协议栈 z-stack协议栈与zigbee协议栈的关系:z-stack是zigbee协议栈的一种具体实现,或者说是TI公司读懂了zigbee 协议栈,自己用C语言编写了一个软件—---z-stack,是由全球几千名工程师共同开发的。ZStack-CC2530-2.3.1-1.4.0软件可与TI的SmartRF05平台协同工作,该平台包括MSP430超低功耗微控制器(MCU)、CC2520RF收发器以及CC2591距离扩展器,通信连接距离可达数公里。 Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。与z-stack 相比msstatePAN、freakz协议栈都是全部真正的开源的,它们的所有源代码我们都可以看到。但是由于它们没有大的商业公司的支持,开发升级方面,性能方面和z-stack相比差距很大,并没有实现商业应用,只是作为学术研究而已。 还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,当网络节点要求不多在30个以内,通信距离500m-1000m时用simpliciti。 1.2.3IEEE802.15.4标准概述 IEEE802.15.4是一个低速率无线个人局域网(LowRateWirelessPersonalAreaNetworks,LR-WPAN)标准。定义了物理层(PHY)和介质访问控制层(MAC)。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。 ◆具有16位短地址或者64位扩展地址。 ◆支持冲突避免载波多路侦听技术(carriersensemultipleaccesswithcollisionavoidance,CSMA/CA)。(mac层) ◆用于可靠传输的全应答协议。(RTS-CTS) ◆低功耗。 ◆能量检测(EnergyDetection,ED)。 ◆链路质量指示(LinkQualityIndication,LQI)。

相关主题
相关文档 最新文档