多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
>[success] 导师**视频**讲解:[**去听课**](https://www.bilibili.com/video/BV1k34y1D7Vz/) >[success] **技术支持说明:** >**1**.一般以自主学习为主 > **2**.可到官方问答社区中提问:[**去提问**](https://bbs.csdn.net/forums/zigbee) > **3**.工程师**会尽快**解答社区问题,但他们是一线开发,【**难以保证**】解答时效,解答辛苦,感谢理解!解! <br/> 要讨论 ZigBee 技术,自然绕不开 IEEE 802.15.4协议,因为ZigBee的物理层和MAC层就是 IEEE 802.15.4 协议 ### IEEE 是一个组织,叫作“电气和电子工程师协会”, 802.15 是这个协会里面的一个部门,部门里的第 4 工作组开发了一个协议,就叫 IEEE 802.15.4协议。这个协议是专门为低速无线个人区域网络(Low-rate wireless personal area network,WPAN)而设计的,具有超低复杂度、超低功耗、低数据传输率的特点。 ![](https://img.kancloud.cn/8f/c4/8fc4fd1e6a831b17aace2c723e2c5a38_1440x716.png =400x) <br/> ## **物理层** IEEE 802.15.4的物理层作为Zigbee协议结构的最低层,提供了最基础的服务。通常地,作为ZigBee技术的应用开发者,只需通俗地理解物理层的主要作用是将一个设备的数据转换为电磁波信号之后发送到另一个设备,再由另一个设备解读电磁波信号获取数据。 ![](https://img.kancloud.cn/e6/9c/e69c8a38f4f3da9791697d127b262764_1440x917.png =300x) <br/> IEEE 802.15.4提供了基于2.4GHz、868MHz以及915MHz电磁波频带的3两种物理层协议。这3者之间存在一些差异: * **地域差异** 在世界各地均能使用2.4GHz,但是868MHz和915MHz只能分别在欧洲和美国中使用。因此,在中国,ZigBee协议是基于2.4GHz的。 ### * **通信速率差异** 2.4GHz物理层支持240kb/s的数据率,而868MHz和915MHz物理层的数据率分别是20kb/s和40kb/s。 ### * **信道数量的差异** 868MHz频段定义了一个信道,915MHz频段定义了10个信道,2.4GHz频段定义了16个信道。 ### 2.4GHz频段的信道定义在ZStack 3.0的工程文件Tools/f8wConfig.cfg中,该工程文件所在位置如图所示。 ![](https://img.kancloud.cn/c3/f8/c3f8bac50432d92be965d3f40383f0e4_698x1000.png =200x) ### 配置文件f8wConfig.cfg中默认开启的是2.4G频段的11信道,关于信道的定义如下: ``` /* Default channel is Channel 11 - 0x0B */ // Channels are defined in the following: // 0 : 868 MHz 0x00000001 // 1 - 10 : 915 MHz 0x000007FE // 11 - 26 : 2.4 GHz 0x07FFF800 // //-DMAX_CHANNELS_868MHZ 0x00000001 //-DMAX_CHANNELS_915MHZ 0x000007FE //-DMAX_CHANNELS_24GHZ 0x07FFF800 //-DDEFAULT_CHANLIST=0x04000000 // 26 - 0x1A //-DDEFAULT_CHANLIST=0x02000000 // 25 - 0x19 //-DDEFAULT_CHANLIST=0x01000000 // 24 - 0x18 //-DDEFAULT_CHANLIST=0x00800000 // 23 - 0x17 //-DDEFAULT_CHANLIST=0x00400000 // 22 - 0x16 //-DDEFAULT_CHANLIST=0x00200000 // 21 - 0x15 //-DDEFAULT_CHANLIST=0x00100000 // 20 - 0x14 //-DDEFAULT_CHANLIST=0x00080000 // 19 - 0x13 //-DDEFAULT_CHANLIST=0x00040000 // 18 - 0x12 //-DDEFAULT_CHANLIST=0x00020000 // 17 - 0x11 //-DDEFAULT_CHANLIST=0x00010000 // 16 - 0x10 //-DDEFAULT_CHANLIST=0x00008000 // 15 - 0x0F //-DDEFAULT_CHANLIST=0x00004000 // 14 - 0x0E //-DDEFAULT_CHANLIST=0x00002000 // 13 - 0x0D //-DDEFAULT_CHANLIST=0x00001000 // 12 - 0x0C -DDEFAULT_CHANLIST=0x00000800 // 11 - 0x0B ``` 在不同的信道中创建的ZigBee网络互不干扰,但在相同的信道下,也可以组建多个独立的ZigBee网络,那么如何区分在相同的信道下构建间的多个ZigBee网络? ### 答案是每个ZigBee网络都会被分配一个唯一的ID号,称为“PanID”,可以利用PanID来区分相同信道中的不同ZigBee网络。 <br/> ## **MAC层** 如果有多个网络设备都要发送数据,那么需要怎么控制它们有序地来发送数据呢? ![](https://img.kancloud.cn/82/2f/822f28d5c9ce606b3448756c572beb2b_1440x930.png =400x) ### 为了解决这个问题,媒体接入控制层(MAC,Media Access Control)应运而生。 ### 媒体接入控制层,是建立在物理层之上,它不关心数据是怎么转换成电磁波信号、电磁波的频率是多少等,它只关心自己负责那部分,也就是: * 第1,将设备划分为协调器和普通设备; * 第2,协调器产生并发送信标帧,普通设备根据协调器的信标帧与协调器同步; * 第3,个域网的关联和取消关联; * 第4,确保无线信道的通信安全; * 第5,支持带有冲突避免的载波侦听多路访问(CSMA/CA); * 第6,提供时槽保障(GTS,Guaranteed Time Slot)服务; * 第7,提供不同设备之间的MAC层的可靠传输服务。 同样地,我们暂时只需通俗地理解MAC层的主要作用是控制多个网络设备有序地进行可靠通信。 <br/> **MAC地址** ZigBee 网络的中的每一个设备都会有一个固定的MAC地址,也称为物理地址或者IEEE地址,用于标识MAC层设备的地址。MAC这是一个64位的二进制地址,通常由芯片厂商在芯片生产过程固化到芯片中的。 <br/> <br/> ## **项目定制** * 如需项目定制开发,可扫码添加项目经理好友(注明“**项目定制**”) * 定制范围:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技术方案 * 善学坊官网:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =200x) * 非项目定制**勿扰**,此处**非**技术支持