Zigbee协议栈介绍|学习笔记

简介: 快速学习Zigbee协议栈介绍

开发者学堂课程【嵌入式之RFID开发与应用2020版Zigbee协议栈介绍】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/665/detail/11133


Zigbee协议栈介绍

 

内容介绍:

一、协议栈的层级

二、每层含义

三、小结

 

本节课主要了解协议栈的组成结构。(具体协议栈实现的原理:协议的规范有更加的详细的手册并且可以找到源码。但是现在使用的pi 的源码实际上被分装成库,能够拿到源码但是对于早期的用户来说主要建立在应用层。APL的使用这一块。)

 

一、协议栈的层级

image.png

首先整个的协议栈从不同的角度看,一般情况下分为5层。

(4层:第一层物理层;第二层MAC层;第三层网络层;APL统称为第四层。)有时会把APL和APS这两层分开,就会变为五层。物理层、MAC层、网络层、APL和APS层。

 

二、每层含义

1、最底层提供无限物理的通道。

例如:能够提供频段、频率、信道的选择(2.4GHz Radio、868/915 MHz)包括无线收发的接收器、发射器的开关、最低链路的数据质量的指示。

核心:提供数据收发的接口(原始数据包)、防冲撞的机制以及一些算法。

2、MAC层:符合IEEE的802.15.4通过这个协议保证数据的正确性。

重点:星标。设备如何加入到网络中,无论是无线还是蓝牙。建立网络的设备在不断的向外辐射星标,通过星标完成设备的同步和加入的功能。同时也可以实现时期的保障,也能提供底层的CSMA防冲撞的

物理信道。MAC层更多的是给上层提供支持的,与PHY层合起来也可以叫做物理层。

3、网络层(重要):为上层提供数据服务、管理服务。包括数据包的分装。

例如:创建一个网络,路由器或者节点会加入一个网络。甚至是协调器或者路由器还会让一些支节点脱离网络。总之完成了网络的维护,可以发现新的设备、新的节点,维护网络层的各种状态。包括数据收发的时间等。

可以看到图中的说明:提供了网络安全的管理、网络间消息的中介收发、路由功能、大量的网络的管理的功能(入网出网、建立网络、加入网络)

4、APS层:应用层支持子层,是一个抽象层。本身用户使用的是Zigbee网络,但是不能直接使用网络,需要在用户和网络之间插入一层,所以称应用层支持子层。主要,目的就是支持上面的应用服务,也就是为上面的ZD0、ZD1-240所有的应用端点提供服务的层。

5、AF层(常见)

可以分为AF层和ZDO层两块。ZDO层使用的端点标号是0但是这里是O(Zigbee device object)而不是0。

这一层完成所有普通端点的管理。AF指的就是普通端点。

AF:为用户提供各种各样具体的应用的活动空间。例如每个节点除了每一个通讯的模块、长地址、短地址、网络地址还有8位的端点地址。

端点:简单理解成网络通信有MAC地址,IP地址还有端口号。MAC地址是找到网络设备(网卡)、IP地址是找到主机、端点确定某个应用程序。这里的端点是确定具体的应用。

一个电脑或者一个操作系统,在同一个IP环境下可以有多个端点,也就是可以拥有多个应用程序。现在不仅可以登录QQ也可以登录微信、游戏,这些都是需要有专门的端口为应用服务的。因此端点就是具体应用,这一点借鉴了TCPIP的协议栈。

端点0(特殊):建立普通端点以及下面各层之间通讯的管理服务。可以初始化APS等一些接口,包括发现端点,当网络在没有信标的时候怎样加入一个父节点,还包括安全、加密、设定权限、权限管理等整个网络的维护。绑定:绑定通讯内需要对绑定的表、解除提供服务,这时可以用AD0。

AF层的端点主要的作用是与应用有一定关联的,每一个端点代表一个具体的应用。每一个应用会有一个profile文件(配置文件),这个文件会记录下应用的端点号。包括ID事务、属性。都通过一个数据结构来表达,后面会详细看到这个数据结构。

image.png

总之上图显示的是建立在协议栈基础上具体的应用,包括将来对数据的采集、对象的控制,通过信号能量的方式分析定位,都是在上图的层做的。

整个协议栈到APS就结束了。

例如:AF-datarequest是发送数据的函数接口。AF指的就是application framework最上层的应用。

AF再往下就到底层了。通过APSDE-datareq这个函数发送的。APSDE指的是数据服务,到了第四层。就不能继续点了。

再往下就是网络层,就被分装了,没有机会再次改动了。

image.png

框架是从官方的协议文档内提取的,可以结合旁边的进行了解。图中的绿色部分是过程的接口。黄色的是每一层具体的实现功能有什么,例如:安全功能、消息的管理、频段、路由、网络。

深黄色是指具体的应用。

蓝色是Zigbee标准的定义。

粉色是802.15.4,是美国电器工程协会规定的规范。

(下面讲解的内容主要针对上面的五层框架进行具体的说明)

 

三、小结

1、PHY,从无线物理信道上为MAC层提供数据收发的服务:

(1)启动和关闭RF收发器

(2)当前信道能量检测

(3)对接收到的数据报进行链路服务质量指示LQT(Link Quality Indication)

(4)为CSMA/ CA算法提供空闲信道评估CCA(Clear Channel Assessment)

(5)对信道频密讲行诜择

(6)数据包的传输和接收

最底层是物理收发的通道

2、MAC,兼容IEEE802. 15.4标准,保证协议数据正确收发:

(1)全功能设备产生并发送信标帧 (Beacon)

(2)普通设备根据全功能设备的信标帧进行同步。

(3)支持pan(个域网)的关联(association)建立和取消关联(disassociation)断开操作。

(4)为设备的安全性提供支持。

(5)一使用CSMA/CA机制共享物理信道。

(6)处理和维护时隙保障GTS (Guaranteed Time Slot) 机

制。

(7)在两个对等的MAC实体之间提供一个可靠的数据链路

MAC层主要完成星标、防冲撞、时隙保障。

3、NWK,为上层提供数据服务 (NLDE)和管理服务 (NLME):

(1)产生网络层的数据包:当网络层接受到来自应用子层的数据包,网络层对数据包进行解析,然后加上适当的网络层包头向MAC传输。

(2)提供路由数据包的功能,如果包的目的节点是本节点的话,将该数据包向应用子层发送,如果不是,则将该数据包转发给路由表中下一节点。

(3)提供入网器件的参数配置协议,比如建立新的协调器并发起建立PAN网络或者加入一个己有的网络。

网络层:完成网络通信相关的入网出网、网络维护等。

4、APS,为ZD0访问NWK提供了通路:

(1)APS层协议数据单元APDU的处理。

(2)APSDE提供在同一个网络中的应用实体之间的数据传输机制。

(3)APSME提供多种服务给应用对象,这些服务包括安全服务和绑定服务,并维护管理对象的数据库,也就是我们常说的AIB.

应用支持层

5、AF,为各个用户自定义的应用对象提供了模板式的活动空间:

(1)为每个应用对象提供了键值对KVP服务和报文MSG服务两种服务供数据传输。

(2)每个节点除了64位的IEEE地址,16位的网络地址外,AF还为每个节点提供了8位的应用层、入口端点地址,对应于用户应用对象。

(3)端点0用于整个ZigBee设备的配置和管理

(4)端点255用于向所有端点的广播(同一终端的不同应用)区别于短地址广播(不问终端)

(5)端点1至240供用户自定义用于对象使用

(6)端点241-254保留将来使用

(7)每一个端点应用都对应一个配置文件(Profile)

(8)Profile配置文件包括:

·设备ID (Device ID)

·事务集群ID (cluster ID)

·属性ID (Attribute ID)

·等等

(9)AF可以通过对这些信息来决定服务类型

AF:最上层的应用层。

每个应用都有一个端点,后面讲数据发送、接受之前。首先要先注册一个端点才能发送或者接受数据。所有的操作都建立这个端点之上。还要明确端点有哪些事情,这些都是每一层里面提供的服务。 

6、ZD0,是一个特殊的应用层的端点(Endpoint )占用了端点0,它是应用层其他端点与子应用层管理实体之间交互的中间件,它主要提供的功能有:

(1)初始化应用支持子层,网络层。

(2)发现节点和节点功能,在无信标的网络中,加入节点只对其父节点可见。

(3)而其他节点可以通过ZDO的功能来确定网络的整体拓扑结构以及节点所能提供的功能。

(4)安全加密管理,主要包括安全key的建立和发送,以及安全授权。

以上就是讲到的特殊端点,ADO占用了第0个端点。提供了管理应用等服务。

以上就是整个Zigbee协议栈简单的框架,做一个了解。可以在通讯的过程中对接口的使用的过程中逐渐理解协议栈的每一项功能。

相关文章
|
25天前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
116 9
|
16天前
|
存储 算法
非递归实现后序遍历时,如何避免栈溢出?
后序遍历的递归实现和非递归实现各有优缺点,在实际应用中需要根据具体的问题需求、二叉树的特点以及性能和空间的限制等因素来选择合适的实现方式。
22 1
|
3天前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
22 5
|
18天前
|
存储 算法 Java
数据结构的栈
栈作为一种简单而高效的数据结构,在计算机科学和软件开发中有着广泛的应用。通过合理地使用栈,可以有效地解决许多与数据存储和操作相关的问题。
|
21天前
|
存储 JavaScript 前端开发
执行上下文和执行栈
执行上下文是JavaScript运行代码时的环境,每个执行上下文都有自己的变量对象、作用域链和this值。执行栈用于管理函数调用,每当调用一个函数,就会在栈中添加一个新的执行上下文。
|
23天前
|
存储
系统调用处理程序在内核栈中保存了哪些上下文信息?
【10月更文挑战第29天】系统调用处理程序在内核栈中保存的这些上下文信息对于保证系统调用的正确执行和用户程序的正常恢复至关重要。通过准确地保存和恢复这些信息,操作系统能够实现用户模式和内核模式之间的无缝切换,为用户程序提供稳定、可靠的系统服务。
47 4
|
28天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
2月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
33 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
2月前
初步认识栈和队列
初步认识栈和队列
61 10
|
2月前
数据结构(栈与列队)
数据结构(栈与列队)
20 1