学习记录 | ZigBee协议栈工作流程

2023-05-16

第一次来CSDN记录一下学习过程,其实就是笔记啦

之前用Typora 的 但前几天电脑出问题重装系统后打开笔记文件发现照片都打不开了,索性想换一种记笔记方式

好啦 以下是正文!!!

对了 笔记来源是深圳安联德公司提供的学习文档资料

目录

前言

一、ZigBee协议栈简介

​编辑

二、ZigBee协议的体系结构

1.物理层(PHY)

2.介质接入控制子层(MAC)

3.网络层(NWK)

4.应用层(APL)

 5.应用程序框架(AF)

 三、ZigBee基本概念

拓扑结构

一、星状拓扑

二、树状拓扑

三、Mesh拓扑(网状拓扑)

 工作模式

一、信标模式

二、非信标模式

 地址定义

一、IEEE 地址

二、网络地址

寻址

发送信息方式

一、单点传送(Unicast)

 二、间接传输(Indirect)

三、广播传送(broadcast)

四、组寻址(Group Addressing)

总结


前言

在校加入了一个使用CC2530的Zigbee物联网的项目  前段时间已经学习了CC2530基本的一些外设配置和使用 比如定时器 中断 串口通信 

CC2530集成了51单片机的内核

接下来进入协议栈内容的学习

一、ZigBee协议栈简介

ZigBee 是 IEEE 803.15.4 协议的代名词。

这个协议规定的技术是一种短距离、低功耗的无线通信技术

特点是:近距离、低复杂度、自组织、低功耗、低数据速率、低成本。主要适合用于自动控制和远程控制领域,可以嵌入各种设备

简而言之,ZigBee是一种便宜的、低功耗的近距离无线组网通讯技术

协议栈:指网络中各层协议的总和,形象的反映了一个网络中文件传输的过程

二、ZigBee协议的体系结构

 

1.物理层(PHY)

定义了物理无线信道和MAC子层之间的接口,提供物理层数据服务和物理层管理服务。

内容:

2.介质接入控制子层(MAC)

MAC层负责处理所有的物理信道访问,并产生网络信号、同步信号;支持PAN连接和分离,土风两个对等MAC实体之间可靠的链路

内容:

3.网络层(NWK)

 协议栈的核心部分,主要实现节点加入或者离开网络、接收或抛弃其他节点、路由查找及传送数据等功能。

内容:

4.应用层(APL)

包括应用支持层(APS)、ZigBee设备对象(ZDO)和制造商所定义的应用对象。

内容:

 5.应用程序框架(AF)

 三、ZigBee基本概念

存在三种逻辑设备类型:Coordinator(协调器)  Router(路由器)  End-Device(终端设备)

ZigBee网络由一个协调器和多个路由器和多个终端设备组成

 上图为一个简单的ZigBee网络示意图

拓扑结构

一、星状拓扑

只包含一个Coordinator节点和一系列的End-Device节点  ,每个终端节点只能和协调器节点进行通信 ,如果需要在两个终端节点之间进行通讯必须通过协调器节点进行信息的转发

缺点 :节点之间的数据路由只有唯一的一个路径

实现星状网络拓扑不需要使用ZigBee的网络协议,IEEE的协议层就能实现,但需要开发者在应用层做更多的工作,包括自己处理信息的转发

二、树状拓扑

包含一个Coordinator和一系列的Router和End-Device节点

协调器连接一系列的Router和End-Device,其子节点的Router也可以链接一系列的Router和EndDevice,这样可以重复多个层级

注意 :协调器和路由器可以有自己的子节点,但终端不能有子节点

三、Mesh拓扑(网状拓扑)

包含一个Coordinator和一系列的Router和End Device

网状拓扑与树状类似,但具有更加灵活的信息路由规则,在可能的情况下,路由节点之间可以直接通讯,这种路由机制使得信息的通讯变得更有效率,而且意味着一旦一个路由路径出现了问题,信息可以自动的沿着其他的路由路径进行传输

 工作模式

一、信标模式

实现了网络中所有的设备同步工作和同步休眠,以达到最大限度的功耗节省

二、非信标模式

指运训终端设备进行周期性的休眠,协调器和所有的路由器设备必须长期工作状态

 

 地址定义

一、IEEE 地址

64位,即MAC地址,全球唯一的地址,设备在他的生命周期中一直拥有他,通常由制造商或者被安装时设置,由 IEEE 来维护和分配

二、网络地址

16位,当设备加入网络后分配,在网络中是唯一的,用来在网络中鉴别设备和发送数据

寻址

 

 

发送信息方式

一、单点传送(Unicast)

将一个数据包发送给一个已经知道网络地址的网络设备

将 afAddrMode 设置为 Addr16Bit 并且在数据包中携带目标设备地址

 二、间接传输(Indirect)

不知道数据包的目标设备在哪里时使用

将 afAddrMode 设置为 AddrNotPresent 并且目标地址没有指定,从发送设备的栈的绑定表中查找目标设备——源绑定

当数据向下发送到栈中,在绑定表中查找并使用该目标地址,这样数据包被处理成一个标准的单点传送数据包,如果在绑定表中找到了多个设备,就向每一个都发送数据包的拷贝

三、广播传送(broadcast)

将数据包发送给网络的每一个设备 将 afAddrMode 设置为 AddrBroadcast

目标地址可以设置为下面广播地址的一种:

四、组寻址(Group Addressing)

需要将数据包发送给网络上的一组设备

将 afAddrMode 设置为 afAddrGroup 并且 addr.shortAddr 设置为 组 ID

  

 

总结

以上是关于ZigBee协议栈的底层理论知识,有点枯燥 感觉也没有完全理解 ,有些概念虽不陌生但仍然是模糊的,或许实践了会比较好吧

 下一章学习如何使用协议栈 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学习记录 | ZigBee协议栈工作流程 的相关文章

  • 备赛电赛学习硬件篇(一):电机部分

    目录 一 电机选型 二 电机的正反转 xff0c 刹车 一 电机选型 1 电机类型 无刷电机较贵 xff0c 但是静音且损耗小 xff0c 由于霍尔元件的特殊性 xff08 不带霍尔需要转速高的时候才可以利用反电动势准确确定转子的位置 xf
  • 【总线】一文看懂RS232和RS485通信总线

    目录 RS232概述 RS232特性 RS485 概述 RS485 特性 RS232 和 RS485 的区别 区别总结 RS232概述 RS 232接口符合电子工业联盟 xff08 EIA xff09 建立的串行数据通信接口标准 原始编号是
  • 【C++学习笔记】vector构造函数

    文章目录 1 vector构造函数说明 xff1a 2 实战 xff1a 2 1 vector构造函数代码示例2 2 输出 3 参考资料 1 vector构造函数说明 xff1a span class token keyword templ
  • 请求报文/相应报文

    一 请求报文分为4个部分 请求行 请求头 请求空行 请求体 1 1 请求行 主要是3个部分 GET 请求方式 1 2 请求地址 所带的参数 demo demo php userName 61 E6 9D 8E E5 9B 9B amp us
  • python+requests——高级用法——auth认证

  • C语言char指针的使用

    在c语言中 xff0c char指针不仅能指向char变量 xff0c 还能指向常量字符串 xff0c 同时也能指向一个char数组的 想要访问单个字符 xff0c 就要通过 来进行解引用 xff0c 若是要访问整个数组或字符串的话 xff
  • HTTP协议的请求格式解析

    HTTP协议是一个使用较多的应用层协议 xff0c 它是一个请求 响应式的一个协议 xff0c 就是我客户端给你发一个请求 xff0c 你客户端需要返回给我一样响应 首先我们来看一下HTTP协议的请求格式 HTTP请求格式 xff1a HT
  • 运行Gazebo+moveit+Rviz,报错,提示无控制器

    在rviz里规划成功后 xff0c 执行显示failed rviz里能规划 xff0c 但是Gazebo里动不了 moveit报错如下 xff1a WARN 1679466487 132361192 26 763000000 Waiting
  • 基于UDP协议搭建的简单客户端与服务器(UDP协议)

    UDP协议 UDP协议的介绍1 UDP的缺点 基于UDP实现的回显服务器基于UDP实现的客户端 UDP协议的介绍 UDP协议特点 xff1a 1 无连接 2 面向数据报 3 不可靠传输 4 全双工 16位源端口号 目的端口号 xff1a 表
  • C++之AStar寻路算法

    仅以记录 有一种算法 名为AStar 它的作用是求图中两点之间的最短路径 沉迷 该算法的我 自己编写了一个版本 注释虽少 但求传神 代码虽 恶心 但求理解 include lt iostream gt include lt vector g
  • 使用livox_viewer2对激光雷达livox_mid360进行调试

    准备 系统 windows10 硬件 xff1a livox mid360 软件 xff1a livox viewer2 测试 连接号激光雷达设备 xff0c 电脑ip相关设置和livox avia一样 livox系列激光雷达ip设置都是一
  • 听说你还不会制作“GIF动图”,手把手包教会,这不就来了吗

    近期 xff0c 看了好多写的博客 xff0c xff08 不管是前端HTML的还是后端Java的 xff0c 前端制作的3D部分的效果图需要展示动图 xff09 发现有点还存在想使用动图 xff0c 但是不会制作 xff0c 又或者是制作
  • HTML+js实现贪吃蛇小游戏(内含完整代码)

    案例分析 看图拆解游戏 首先我们根据图片上的内容把这个游戏拆解成几个部分去单独看 xff1a 最外面的大盒子包裹着内容加边框限制蛇的活动范围 xff0c 整个范围可以看成由许多小方格排列构成的 xff0c 例如这样子的 xff1a xff1
  • 【华为Hilink SDK Linux系统开发】第三章:华为hilink SDK Linux系统网关适配

    mark xff1a https blog csdn net qq 24550925 article details 107282773 关注嘉友创科技公众号 声明 xff1a 文章只做技术交流 xff0c 没有其他任何用途 xff0c 侵
  • 快速去除GIF动图的背景(让背景变透明),保姆级教程

    很多小伙伴在看到好看的动图效果时 xff0c 想用在自己的页面上 xff0c 可是常常会碰到一些动图背景颜色不符合自己的需求 xff0c 所以会产生修改动图背景的想法 xff0c 但是GIF动图终究是GIF动图 xff0c 不像静态图片那样
  • Vue在HTML中如何使用

    x1f440 Vue是什么 一套用于构建用户界面的渐进式JavaScript框架 构建用户界面 xff1a 数据变成界面渐进式 xff1a Vue可以自底向上逐层的应用 x1f440 Vue如何使用 一 引入vue js lt script
  • 简单记录一下怎么看package.json文件

    首先每个vue工程文件从仓库克隆代码下来的时候 xff0c 一般都会包含这个文件 xff0c 这个文件非常重要 xff0c package json包含了关于项目重要信息 xff0c 如下图所示 其中包含了name version desc
  • 项目中常用到的前端vue根据后端接口返回文件地址实现在线预览和下载功能

    简简单单的记录一下项目中做过的东西 项目中时常会有要求查看附件 xff0c 附件的下载的要求 xff0c 在这里简单记录一下前端vue根据后端接口返回文件地址实现在线预览和下载功能 x1f440 文件在线预览 目前我这里使用的是点击a链接跳
  • 记录面试问题

    以下问题不分先后 xff0c 按照印象深浅排序 xff0c 可能一次记录不完成 xff0c 后面想起来会及时补充 xff0c 如有不对 xff0c 恳请各位围观大佬多多指教 x1f64f 印象最深的是一道很简单很简单的题目 xff0c 我结
  • C++中“.“,“->“,“:“和“::“的区别

    在 C 43 43 中 xff0c 34 34 xff0c 34 gt 34 xff0c 34 34 和 34 34 都是运算符 xff0c 它们的作用是明显不同的 xff0c 但是初学者很容易被其迷惑 1 34 34 是成员访问运算符 x

随机推荐

  • ubuntu系统中忘记root密码的解决办法

    1 启动ubuntu按shift进入grub菜单 xff1b 2 选择recovery mode进入Recovery Menu界面 xff0c 选择root Drop to root shell prompt 3 修改root密码操作 xf
  • C++语言实现哈希表中的线性探测法和平方探测法

    哈希表 xff08 Hash表 xff09 xff0c 也称为散列表 xff0c 是一种数据结构 xff0c 通过使用哈希函数将键映射到数组的特定位置来实现高效的查找 插入和删除操作 哈希函数将键转换为一个整数 xff0c 这个整数对应数组
  • C++实现的二叉树前序遍历函数

    include lt iostream gt using namespace std struct TreeNode int val TreeNode left TreeNode right TreeNode int x val x lef
  • c语言和c++实现层序遍历

    层序遍历是一种二叉树的遍历方式 xff0c 也称为广度优先遍历 xff0c 它的遍历顺序是 xff1a 从上到下 xff0c 从左到右 xff0c 一层一层地遍历整棵树 在 C 语言中 xff0c 我们可以使用队列来实现层序遍历 具体实现步
  • C语言获取wifi状态

    mark https blog csdn net dongyoubin article details 122134198 int getWirelessStatus char ath char ssid char ipAddr
  • 最全Visual Studio版本号对应表VisualStudioVersion

    名字 版本号 简称 全称 msvc70 VC7 0 VS2002 Microsoft Visual Studio 2002 msvc71 VC7 1 VS2003 Microsoft Visual Studio 2003 msvc80 VC
  • 二叉树静态实现的示例代码

    使用指针对于初学者容易出现很多困惑 下面是一个完整的二叉树静态实现的示例代码 xff0c 包括初始化 插入节点 各种遍历方法以及一些辅助函数 include lt stdio h gt include lt stdlib h gt defi
  • 广度优先搜索(BFS)算法实现二叉树层序遍历的 C++ 代码

    include lt iostream gt 输入输出流 include lt vector gt 向量容器 include lt queue gt 队列容器 using namespace std 命名空间 定义二叉树节点结构体 stru
  • PAT 1005 Spell It Right

    Given a non negative integer N your task is to compute the sum of all the digits of N and output every digit of the sum
  • 在PC的Ubuntu虚拟机上完成一个TCP 服务器,在设备上实现一个TCP客户端

    要求 在虚拟机上实现一个服务器 xff0c 设备终端上实现一个客户端设备客户端每隔 1 秒 检测一次网卡eth2 1 xff08 WAN口网卡 xff09 的信息 xff08 使用popen调用ifconfig xff09 然后将RX和TX
  • TCP发送数据、接受数据及TCP通信程序练习

    目录 一 TCP发送数据 二 TCP接收数据 三 TCP通信程序练习 一 TCP发送数据 Java中的TCP通信 xff1a Java对于基于TCP协议的网络提供了良好的封装 xff0c 使用Socket对象来代表两端的通信端口 xff0c
  • slam学习笔记

    ubuntu20 04 使用vs code编写 现放cmake文件 xff08 记得链接库文件和配置C 43 43 版本 xff09 cmake minimum required VERSION 2 8 project learingMat
  • SLAM学习笔记

    编译环境ubuntu20 04 vs code xff08 李群 李代数 xff09 先是CMakeLists txt cmake minimum required VERSION 3 0 project learning sophus s
  • SLAM学习笔记

    编译环境ubuntu20 04 xff0c vs code 先cmake文件 cmake minimum required VERSION 2 8 project image set CMAKE BUILD TYPE 34 Release
  • SLAM学习笔记

    编译环境ubuntu20 04 vscode ceres库2 0 0 g2o库同gaoxiang12 slambook2中的版本号一致 cmake文件 cmake minimum required VERSION 2 8 project c
  • 数据结构之C语言单链表操作

    实验目的 xff1a 1 xff0e 创建一个带头结点的单链表 2 xff0e 插入元素操作 xff1a 将新元素x插入到单链表head的头部 将新元素x插入到单链表head的尾部 将新元素x插入到单链表head中第i个元素之后 3 xff
  • DBUS入门与C编程

    https blog csdn net weixin 45566765 article details 125028296 一 D Bus简介 1 D Bus是什么 D Bus最主要的用途是在 Linux 桌面环境为进程提供通信 xff0c
  • 模拟IIC——关于模拟IIC的IO口的配置选取推挽输出还是开漏输出,以及是否需要更改IO口输入输出模式和是否需要对IO配置上拉

    在使用模拟IIC的时候 xff0c 观看别人的程序的时候发现了程序之间的一些不一样的地方 代码1 IO方向设置 define SDA IN GPIOB gt MODER amp 61 3 lt lt 9 2 GPIOB gt MODER 6
  • C语言——链表

    C语言 链表 链表是一种基础的数据结构类型 xff0c 一种能够动态维护数据的线性数据表 链表的数据以结点形式存储信息 xff0c 并通过结点之间的指针实现结点之间的衔接 为什么要用链表 xff1f 链表和数组类似 xff0c 但是功能比数
  • 学习记录 | ZigBee协议栈工作流程

    第一次来CSDN记录一下学习过程 xff0c 其实就是笔记啦 之前用Typora 的 但前几天电脑出问题重装系统后打开笔记文件发现照片都打不开了 xff0c 索性想换一种记笔记方式 好啦 以下是正文 xff01 xff01 xff01 对了