logo资料库

《Zigbee入门与实践》第六章Zigbee无线组网提高.pdf

第1页 / 共75页
第2页 / 共75页
第3页 / 共75页
第4页 / 共75页
第5页 / 共75页
第6页 / 共75页
第7页 / 共75页
第8页 / 共75页
资料共75页,剩余部分请下载后查看
JIAJIEKEJI [键入文字] ZigBee 无线传感器网络提高 佳杰科技 D&J 2012 H T T P : / / J I E L O V E D A N . T A O B A O . C O M
http://jielovedan.taobao.com 佳杰科技 前言 笔者在上一章中给出了一个简单的点对点的无线通信实验,是读者对 ZigBee 无线传感 器网络中的数据通信方法有个感性的认识。使用 ZigBee 协议栈进行应用程序开发过程中, 虽然说读者可以不必关心 ZigBee 协议栈的具体细节,但是读者需要对 ZigBee 协议栈的基本 构成与内部工作原理有个清晰的认识,只有这样才能将 ZigBee 协议栈提供的函数充分地融 入自己的实际项目开发过程中。 本章将着重讨论 ZigBee 协议栈的构成以及内部 OSAL 的工作原理,在此基础上讲解一下 ZigBee 协议栈中的串口工作原理,最后通过一个具体的无线温度检测试验来帮助读者更好地 理解本章内容。
http://jielovedan.taobao.com 佳杰科技 目录 6.3 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 ZigBee 无线传感器网络提高 ........................................................................................................... 1 前言........................................................................................................................................... 2 6.1 深入理解 ZigBee 协议栈的构成 .................................................................................. 4 ZigBee 协议栈 OSAL 介绍 ............................................................................................ 9 6.2 OSAL 常用术语 ................................................................................................. 9 OSAL 运行机理 ............................................................................................... 10 OSAL 消息队列 ............................................................................................... 15 OSAL 添加新任务 ........................................................................................... 16 OSAL 应用编程接口 ....................................................................................... 17 Zstack 提高知识 .......................................................................................................... 20 6.3.1 地址类型(Address types) ................................................................................ 20 6.3.2 绑定(Binding) .................................................................................................. 22 6.3.3 路由(Routing) .................................................................................................. 25 6.3.4 配置信道(Configuring channel) ...................................................................... 27 6.3.5 描述符(Descriptors) ........................................................................................ 28 6.3.6 非易失性存储项(Non-volatile Memory Items) .............................................. 29 6.3.7 安全(Security) ................................................................................................. 29 Zigbee 与 PC 通信实验 ............................................................................................... 31 6.5.1 提出要求 ......................................................................................................... 32 6.5.2 公共文件的编程 ............................................................................................. 32 6.5.3 协调器编程 ..................................................................................................... 33 6.5.4 实验测试 ......................................................................................................... 37 6.5.5 实验分析 ......................................................................................................... 39 6.5.6 串口工作原理剖析 ......................................................................................... 43 PC 与 Zigbee 任意字符串传输实验 ........................................................................... 48 6.5.1 提出要求 ......................................................................................................... 48 6.5.2 公共文件的编程 ............................................................................................. 48 6.5.3 协调器编程 ..................................................................................................... 49 6.5.4 代码分析 ......................................................................................................... 51 6.5.5 实验现象 ......................................................................................................... 52 6.6 协议栈串口应用扩展实验 ......................................................................................... 53 6.5.1 提出要求 ......................................................................................................... 53 6.5.2 公共头文件编程 ............................................................................................. 54 6.5.3 协调器编程 ..................................................................................................... 54 6.5.4 终端节点编程 ................................................................................................. 58 6.5.5 实例测试 ......................................................................................................... 65 ZigBee 串口控制 LED 灯实验 ..................................................................................... 66 6.6.1 提出要求 ......................................................................................................... 66 6.6.2 头文件的编程 ................................................................................................. 66 6.6.3 协调器编程 ..................................................................................................... 67 6.6.5 实验结果 ......................................................................................................... 74 ZigBee 串口互传实验 ................................................................. 错误!未定义书签。 6.7 6.8 6.4 6.5
http://jielovedan.taobao.com 佳杰科技 6.9 6.10 6.11 ZigBee 按键值串口显示实验 ..................................................... 错误!未定义书签。 ZigBee 官方串口互传实验 ......................................................... 错误!未定义书签。 无线温度检侧实验 ................................................................. 错误!未定义书签。 6.6.1 实验原理及流程图 ......................................................... 错误!未定义书签。 6.6.2 协调器编程 ..................................................................... 错误!未定义书签。 6.6.3 终端节点编程 ................................................................. 错误!未定义书签。 6.6.4 实例测试 ......................................................................... 错误!未定义书签。 ZigBee 协议栈中的 NV 操作 ...................................................... 错误!未定义书签。 NV 操作函数 ................................................................... 错误!未定义书签。 6.7.1 NV 操作基础实验 ........................................................... 错误!未定义书签。 6.7.2 6.7.3 实例测试 ......................................................................... 错误!未定义书签。 本章小结 ......................................................................... 错误!未定义书签。 6.13 扩展阅读之一:ZigBee 协议中规范(Profile)和簇 (Cluester)的概念 ..... 错误!未定义书签。 扩展阅读之二:探究接收数据的存放位置 ............................................ 错误!未定义书签。 6.12 6.1 深入理解 ZigBee 协议栈的构成 ZigBee 协议栈的实现方式采用分层的思想,分为物理层、介质访问控制层、网络层和应 用层,应用层包含应用程序支持子层、应用程序框架层和 ZDO 设备对象。在协议栈中,上 层实现的功能对下层来说是不知道的,上层可以调用下层提供的函数来实现某些功能。 ZigBee 协议栈的构成如图 5-1 所示。
http://jielovedan.taobao.com 佳杰科技 图 5-1 ZigBee 协议栈的构成 物理层(PHY)和介质访问控制层(MAC)是由 IEEE 802.15.4 规范定义的,物理层负责 将数据通过发射天线发送出去以及从天线接收数据;ZigBee 无线网络中的网络号、网络发现 等概念是介质访问控制层的内容,此外,介质访问控制层还提供点对点通信的数据确认 (Per-hop Acknowledgments)以及一些用于网络发现和网络形成的命令,但是介质访问控制 层不支持多跳(Multi-hop)、网型网络(Mesh)等概念。 网络层(NWK)主要是对网型网络提供支持,如在全网范围内发送广播包,为单播数 据包选择路由,确保数据包能够可靠地从一个节点发送到另一节点,此外,网络层还具有安 全特性,用户可以自行选择所需的安全策略。 应用程序支持子层主要是提供了一些 API 函数供用调用,此外,绑定表也是存储在应用 程序支持子层。ZigBee 设备对象 ZDO 是运行在端口 0 的应用程序,主要提供了一些网络管 理方面的函数。每个 ZigBee 设备都与一个特定类别(profile)有关,可能是公共类别或私有 类别。这些类别定义了设备的应用环境、设备类型以及用于设备间通讯的丛集。公共类别可 以确保不同供货商的设备在相同应用领域中的互通作业性。 设备是由类别定义的,并以应用对象(Application Objects)的形式实现(见图 2)。每个应 用对象透过一个端点连接到 ZigBee 堆栈的余下部份,它们都是组件中可寻址的组件。 从应用角度看,通讯的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个 或多个灯组件的远程设备进行通讯,目的是将这些灯点亮)。 端点之间的通讯是透过称之为丛集的数据结构实现的。这些丛集是应用对象之间共享信 息所需的全部属性的容器,在特殊应用中使用的丛集在类别中有定义。 每个接口都能接收(用于输入)或发送(用于输出)丛集格式的数据。一共有二个特殊的端 点,即端点 0 和端点 255。端点 0 用于整个 ZigBee 设备的配置和管理。应用程序可以透过端
http://jielovedan.taobao.com 佳杰科技 点 0 与 ZigBee 堆栈的其它层通讯,因而实现对这些层的初始化和配置。附属在端点 0 的对 象被称为 ZigBee 设备对象(ZD0)。端点 255 用于向所有端点的广播。端点 241 到 254 是保留 端点。 所有端点都使用应用支持子层(APS)提供的服务。APS 透过网络层和安全服务提供层与端点相 接,并为数据传送、安全和固定服务,因此能够适配不同但兼容的设备,如带灯的开关。 APS 使用网络层(NWK)提供的服务。NWK 负责设备到设备的通讯,并负责网络中设备初始化 所包含的活动、消息路由和网络发现。应用层可以透过 ZigBee 设备对象(ZD0)对网络层参数 进行配置和存取。 每个端口(Endpoint)都能用于收发数据,有如下两个端口较为特殊。 1) 端口 0 该端口用于整个 ZigBee 设备的配置和管理,用户应用程序可以通过端口 0 与 ZigBee 协议栈的应用程序支持子层、网络层进行通信,从而实现对这些层的初 始化工作,在端口 0 上运行的应用程序成为 ZigBee 设备对象(ZDO,ZigBee Device Object)。 2) 端口 255 该端口用于向所有的端口广播。 在 ZigBee 协议栈中,各层之间进行数据传递是通过服务接入点(Service Access Point) 来实现的。一般使用两种类型的服务接入点:一种用于数据传输的服务接入点,另 一种用于管理的服务接入点。例如:在 ZigBee 2007 协议栈,发送数据时使用的是 APSDE-DATA.request,显然这是一个发送数据请求,是从 APS 层发给下层来请求数 据发送的。 服务接入点常用缩写如表 5-1 所示。 英文缩写 APS SAP APSDE-SAP 表 5-1 服务接入点常用缩写 全称 备注 Application Support Sub-Layer 应用程序支持子层 Service Access Points APS Data Entity-SAP 服务接入点 应用程序支持子层 数据实体服务接入点 应用程序支持子层 管理实体服务接入点 APSME-SAP APS Management Entity-SAP NLDE-SAP NLME-SAP MCPS-SAP Network Layer Data Entity-SAP 网络层数据实体服务接入点 Network Layer Management Entity-SAP 网络层管理实体服务接入点 MAC Common Part Service-SAP MAC 层统用服务接入点 PD-SAP PLME-SAP Physical Layer Data Entity-SAP 物理层数据实体服务接入点 Physical Layer Management Entity-SAP 物理层管理实体服务接入点 可以将服务接入点理解为一些 API 函数,在上层可以通过调用这些 API 函数来使用下层 提供的功能(服务)。 在 IAR 工程的左侧有很多文件夹,如 App、HAL、MAC 等,如图 5-2 所示,这些文件夹 下面包含了很多源代码,这种实现方式与 ZigBee 协议的分层思想是相对应的,尽量将实现 某些功能的函数放在同一个文件夹下。
http://jielovedan.taobao.com 佳杰科技 图 5-2 工程主界面 整个协议栈是从哪里开始执行的呢?请观察图 5-2 中,在 Zmain 文件夹下有个 Zmain.c 文件,打开该文件可以找到 main()函数,这就是整个协议栈的入口点,即从该函数开始 执行! 下面看一下 main()函数主要做了哪些工作,main()函数原型如下: osal_int_disable( INTS_ALL ); HAL_BOARD_INIT(); zmain_vdd_check(); InitBoard( OB_COLD ); HalDriverInit(); osal_nv_init( NULL ); ZMacInit(); zmain_ext_addr(); zgInit(); #ifndef NONWK afInit(); #endif osal_init_system(); osal_int_enable( INTS_ALL ); InitBoard( OB_READY ); zmain_dev_info(); #ifdef LCD_SUPPORTED zmain_lcd_init(); #endif int main( void ) {
http://jielovedan.taobao.com 佳杰科技 #ifdef WDT_IN_PM1 WatchDogEnable( WDTIMX ); #endif osal_start_znp(); return 0; } 在 main() 函 数 中 调 用 了 很 多 其 他 文 件 中 的 函 数 , 在 此 可 以 暂 不 考 虑 , 重 点 是 osal_start_system()函数,在此之前的函数都是对板载硬件以及协议栈进行的初始化,知道调 用 osal_start_system() 函 数 , 整 个 ZigBee 协 议 栈 才 算 是 真 正 的 运 行 起 来 了 , 那 么 osal_start_system()函数是如何将 ZigBee 协议栈调用起来的呢?下面将进行这部分内容的讲 解。 802.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 层安全:它能提供二个设备之间的可靠链接。 关于服务接取点 ZigBee 堆栈的不同层与 802.15.4 MAC 透过服务接取点(SAP)进行通讯。SAP 是某一特定 层提供的服务与上层之间的接口。 ZigBee 堆栈的大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是 向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供存取内部层参数、配置 和管理数据的机制。 ZigBee 的安全性 安全机制由安全服务提供层提供。然而值得注意的是,系统的整体安全性是在类别级定 义的,这意味着类别应该定义某一特定网络中应该实现何种类型的安全。 每一层(MAC、网络或应用层)都能被保护,为了降低储存要求,它们可以分享安全钥匙。SSP 是透过 ZD0 进行初始化和配置的,要求实现先进加密标准(AES)。ZigBee 规格定义了信任中 心的用途。信任中心是在网络中分配安全钥匙的一种令人信任的设备。 ZigBee 堆栈容量和 ZigBee 设备 根据 ZigBee 堆栈规定的所有功能和支持,我们很容易推测 ZigBee 堆栈实现需要用到设 备中的海量存储器资源。 不过 ZigBee 规格定义了三种类型的设备,每种都有自己的功能要求: ZigBee 协调器是启动和配置网络的一种设备。协调器可以保持间接寻址用的固定表格, 支持关联,同时还能设计信任中心和执行其它活动。一个 ZigBee 网络只允许有一个 ZigBee 协调器。 ZigBee 路由器是一种支持关联的设备,能够将消息转发到其它设备。ZigBee 网格或树型 网络可以有多个 ZigBee 路由器。ZigBee 星型网络不支持 ZigBee 路由器。 ZigBee 端终设备可以执行它的相关功能,并使用 ZigBee 网络到达其它需要与其通讯的 设备。它的内存容量要求最少。 然而需要特别注意的是,网络的特定架构会戏剧性地影响设备所需的资源。NWK 支持
分享到:
收藏