简单的讲解一下ZigBee协议栈

  ZigBee技术是物联网行业中最常用的一种无线技术,如果我们要做一个基于ZigBee技术的物联网应用,那么最好还是要对ZigBee协议栈要有一定的了解。所以下面就让成都亿佰特电子科技有限公司的小编来给大家简单的讲解一下ZigBee协议栈。

QQ截图20191126143630

  概述

  本文就来给大家讲解的ZigBee协议栈是ZigBee2007,也是现在最常用的一个版本。

  ZigBee协议栈可以分为四层:物理层(PHY)媒体访问控制层(MAC)网络层(NWK)应用层(APL)。如图所示,粉色的部分是由IEEE标准中定义的,浅蓝色部分是由ZigBee联盟规定的,黄色部分是由设备厂商自行定义。

QQ截图20191126143654

  ZigBee协议栈图示

  在ZigBee协议栈的图示中,我们还可以发现有很多圆角矩形,都带有SAP的字样。SAP的意思就是服务接入点(Service Access Point)的意思,是协议栈层与层之间的接口,协议栈都是分层结构的,接口就是层与层之间的沟通渠道。

  协议栈相邻的上下层之间一般都有两个接口,也就是两个SAP。名字中带字母D的SAP是数据接口,负责层间数据传输;名字中带字母M的SAP是管理接口,供上层或协议栈的管理平面对该层进行控制,比如进行一些参数配置,或读取状态等。

  PHY & MAC & NWK

  ZigBee2007协议栈的物理层及MAC层都是IEEE802.5.14-2003标准中定义的。PHY层(物理层)规定了所使用的频段,以及所使用的编码、调制、扩频、调频等无线传输技术;有了物理层,就有了一个实现点到点之间的信号发射与接收的基础,没有物理层协议,设备间是根本没有办法通信的,有可能都不在一个频段上。

  MAC层的主要作用规定了无线信道的访问控制机制,也就是规定各个设备按照什么规矩轮流使用信道;如果没有MAC层协议,节点一多,大家没有个规矩,就会发生信号冲突,谁都没法正常传输数据了。。

  ZigBee协议栈在802.15.4协议基础上定义了网络层。网络层的主要作用是负责设备的连接和断开、在帧数据传递时采用的安全机制、路由发现和维护。简单说,就是保障设备之间的组网和网络节点间的数据传输。ZigBee技术支持多跳路由,可以实现星型拓扑、树型拓扑和网状拓扑等不同的网络拓扑结构。

  PHY & MAC & NWK这三层协议,主要是为了上面的应用层服务的,在产品开发过程中,不需要深入涉及这三层协议的实现细节,应用层才是开发关注的部分。

  应用层

  ZigBee的应用层的内部又分了三个部分:包括应用框架应用支持子层(APS)ZigBee设备对象(ZDO)。应用框架中包含至少一个应用程序对象,也就是ZigBee设备的应用程序,是ZigBee产品开发人员所要实现的部分。

QQ截图20191126143729

  应用支持子层APS参考模型

  除了接口,协议栈中还经常会碰到实体(Entity)的概念。所谓实体,就是在协议栈里面进行数据发送或接收的一个基本组成,可能是软件,也有可能是硬件,具体与协议的实现有关系。每一层协议都是由一个或多个实体组成的。

  应用支持子层(APS)包括了数据实体(APSDE)管理实体(APSME),作用就是向上层提供数据传输和管理配置的服务。应用支持子层隔离了应用框架与网络层,为应用程序的运行提供支撑。

  APS与应用程序之间的数据接口是APSDE-SAP,最多可以支持240个应用程序对象,通过端点(EndPoint)来连接应用程序对象。每个端点都有一个编号,0号端点比较特殊,是连接ZDO的。应用程序的端点编号是从1号开始,一直到240号。一个ZigBee设备,比如无线开关、无线灯具之类的,一般会用到1~3个端点。

  ZigBee设备对象(ZDO)可以认为是一个特殊的应用程序对象,满足了其他应用程序对象的一般性需求。

  在一个ZigBee设备中,ZDO扮演着管家的作用,它管的事情横跨了好几层 。ZDO的任务包括:协议栈初始化,如APS和NWK层以及安全服务的初始化;还有应用程序要通过ZDO来执行设备发现、服务发现、安全管理、网络管理、绑定管理等管理工作。

  应用开发

  上面说的ZigBee协议栈,是ZigBee联盟制定的协议规范。所有的ZigBee产业链内的厂商都要按照这个规范来开发产品,才能保证各自产品的兼容性,尤其是上游的芯片厂商。按照规范来做东西,才能让大家放心购买。

  ZigBee芯片厂商一般也是开发工具链的提供者,同时也是ZigBee协议的开发者。ZigBee联盟只是告诉大家协议是怎么一回事,但并没有实现出来。ZigBee芯片厂商为了下游设备厂商更方便地开发产品,不仅要提供芯片,还要提供基于这个芯片的一整套ZigBee协议栈,还包括了协议栈的开发接口,也就是SDK。

  比如TI公司的Z-Stack,就是ZigBee设备厂商早期使用最多的ZigBee协议栈。不过现在提供芯片和协议栈的公司也多了起来,除了TI,还有Freescale,Ember,Jennic等芯片厂商,每家芯片厂商都有自己独立实现的协议栈,设备厂商也有了更多的选择。