我是靠谱客的博主 飞快酒窝,最近开发中收集的这篇文章主要介绍ZIGBEE通讯-7.ZigBee协议栈简介,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

想要学习协议栈,必须先知道协议是什么。协议定义的是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据收发,而协议栈是协议的具体实现形式,通俗的理解为用代码实现的函数库,以便于开发人员调用。

ZigBee的协议分为两部分,IEEE802.15.4定义了PHY(物理层)和 MAC(介质访问层)技术规范,ZigBee联盟定义了NWK(网络层)、APS(应用程序支持子层)、APL(应用层)技术规范。ZigBee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层API,供用户调用。ZigBee 无线网络协议如下图所示:

 ZigBee协议栈具有很多版本,不同厂商提供的ZigBee协议栈有一定的区别,在本手册中,采用TI公司推出的ZigBee 2007协议栈ZStack-CC2530-2.5.1a进行讲解。

该协议栈可以在TI官网进行下载,下载后的文件为ZStack-CC2530-2.5.1a.exe,双击协议栈安装包进行安装,在安装过程中选择安装的位置,如图:

 安装完成后,找到安装目录下工作空间文件,如图:

打开工程后,可以看到SampleApp工程的文件布局,工程界面中,左侧有很多文件夹,如App、 HAL、 MAC等,这些文件夹对应了ZigBee协议中不同的层,可以看到,在每个层中都有着大量的文件,不过在学习过程中也不用担心,简单来说,可以把Z-stack协议栈理解为一个小型的操作系统,而这个系统采用任务轮询机制进行工作。如图:

 Z-Stack协议栈和网络通信一样采用分层架构,从下往上依次为物理层,介质访问层,网络层和应用层,应用层包含应用程序支持子层,应用程序框架层和ZDO设备对象。在Z-Stack协议栈中,上层可以调用下层的函数来实现某些功能,但是下层对上层的功能是不知道的。

其中,APSDE-SAP为应用支持子层数据实体-服务接入点 ,MLDE-SAP为媒体接入控制子层数据实体-服务接入点,APSME-SAP为 应用支持子层管理实体-服务接入点,MLME-SAP 为媒体接入控制子层管理实体-服务接入点,NLDE-SAP为网络层数据实体-服务接入点,PD-SAP 为物理层数据实体-服务接入点,NLME-SAP为 网络层管理实体-服务接入点,PLME-SAP为物理层管理实体-服务接入点。服务接入点就是应用函数API接口,这些接口用于调用下层的功能函数。

Z-Stack协议物理层和媒体访问控制层采用了IEEE 802.15.4协议规范。物理层无线频段为全球通用的2.4GHz、欧洲适用的868MHz、美国适用的915MHz,使用直接序列扩频技术,提供27个信道,20Kb/s、40Kb/s、250Kb/s三种数据速率用于数据收发,其中,常用的2.4GHz频段提供16个信道。物理层功能包括了激活和休眠射频收发器、信道能量检测、信道接收数据包的链路质量指示、空闲信道评估、收发数据等。

Z-Stack的MAC层负责设备间无线数据链路的建立、维护和结束,确认模式的数据传送和接收,采用载波侦听多址冲突避免接入方式,数据包的最大长度为127字节,每个数据包均由头字节和16位CRC校验值组成。

网络层为Z-Stack协议栈的核心部分,实现节点接入或离开网络、路由查找及传送数据等功能,支持星形、树形、网络三种拓扑结构,网络拓扑结构根据具体的ZigBee应用来选择。节点按功能分为全功能设备(FFD)、简化功能设备(RFD)、协调器(ZcRD)和路由器,协调器与路由器通常也是全功能设备。

Z-Stack的应用层包括了应用支持子层(APS)、ZigBee设备对象(ZDO)和制造商制订的应用对象。应用支持子层负责维护绑定表,根据服务和需求在两个绑定实体间传递信息。ZDO负责定义设备节点在网络中的角色,并负责网络设备的发现,决定提供何种应用服务,还负责初始化或响应绑定请求及建立网络设备间安全关系。

ZigBee网络采用多点接入,有使能信标网络或不使能信标网络两种类型。使能信标的网络中,协调器在预定义的时隙周期性发送信标帧用于节点关联、加入网络、同步传送数据。在不使能信标的网络中,协调器也周期性发送信号,但这只用于终端设备并检测协调器的存在,设备要随时准备好进行点对点通信,通过发送数据请求和应答进行通信。

在安全方面,Z-Stack采用IEEE802.15.4媒体访问控制子层的安全模型,其规范了四个方面的安全服务,即访问控制、数据加密、帧完整性检查及采用顺序更新值防止帧重放。

ZigBee 协议栈已经实现了 ZigBee 协议,用户可以使用协议栈提供的 API 进行应用程序的开发,在开发过程中完全不必关心 ZigBee 协议的具体实现细节,要关心的问题是:应用层的数据是使用哪些函数通过什么方式把数据发送出去或者把数据接收过来的。所以最重要的是学会使用 ZigBee协议栈。

用户实现一个简单的无线数据通信时一般只需要关注组网、发送、接收等三个问题,而这三个问题,协议栈都已经实现了,只需要调用相应的API函数即可。

最后

以上就是飞快酒窝为你收集整理的ZIGBEE通讯-7.ZigBee协议栈简介的全部内容,希望文章能够帮你解决ZIGBEE通讯-7.ZigBee协议栈简介所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部