首先,本人是一名在读本科生,因为要参加本年度的物联网比赛,故需要掌握一定的Z-Stack知识。一周前本人对Z-Stack了解是完全空白,当时连什么是ZigBee都没听说过,不过本人是本校的物理实验室的常驻人员,有一定的单片机基础。经过近一周的学习现在对Z-Stack也只能说是刚刚入门,把自己的学习笔记分享出来,也算给广大菜鸟级入门童鞋一些参考的东西吧。由于本人本来是做海洋类开发的,兼顾单片机嵌入式系统的学习,所以基础知识各方面不比各位程序员,有些稚嫩,甚至可能有些错误,让大家见笑了,也只能是给如我一般的菜鸟入门的时候做一个参考吧。 好,闲话少叙,下面是我的学习笔记。 一、 基础定义及知识。1、 何为ZigBee,与普通的RF技术有何区别? ZigBee是一种具有低成本低复杂度低功耗的小范围低速率的无线传输技术。 相对于普通的RF技术,其重要的特点是; (1) 低功耗,速率低数据量少。、 (2)自组织网络,可适应网络拓扑结构动态变化。 (3)高可扩充,在有协调器加入的情况下,最高可达65535个ZigBee节点。 2、何为IEEE 802.15.4,其特点。 是ZigBee无限传感器网络通信标准,具有短距离(10m),低功耗,低速率,低成本的特点,支持单跳星形(10m内)和多跳对等(>10m)两种网络拓扑。 3、何为Z-Stack? Z-Stack是TI公司开发的ZigBee协议栈,并且经过了ZigBee联盟的认可而为全球众多开发商所广泛采用。Z-Stack实际上是帮助程序员方便开发ZigBee的一套系统,它采用轮转查询式操作系统,包括两个主要流程(如图):系统初始化和执行操作系统。系统初始化完成后,就进入执行操作系统,并且在其中是一个死循环。执行操作系统中主函数即为轮询式操作系统的主体部分,也是我们需要重点开发、调用、掌握的部分。欲知其详,且听下文分解。 有关第一部分的题外话,笔者在学习的时候,还是详细看了ZigBee概述和IEEE 802.15.4通信标准的,不过事后发现,如果只是想达到能调用Z-Stack中的函数进行简单的程序编写,尤其像我们这样为了比赛而准备的短期突击学习来说,并没有太大必要去详细了解这些标准,不过看了这些标准之后,的确会对后面的学习有些帮助。另,为了能看懂一些Z-Stack资料,需要知道很多的名词定义和缩写,这部分我就放在了第四章,如果有看不懂的地方,可以先跳到第四章查询。 二、开发Z-Stack须知。 1、ZigBee的体系,数据及管理的方式和方向。ZigBee网络构架。 ![]() 上图是ZigBee协议的体系结构。 上图是zigbee网络构架。黑色是协调器,红色是路由器,白色是终端设备。协调器是网络核心、不休眠、FFD,路由器是接力和扩展信号传输范围、不休眠、FFD,终端可选择睡眠或唤醒、可FFD或RFD。 2、Z-Stack在开发ZigBee中起到的作用,使用Z-Stack开发ZigBee我们需要做什么? 如刚才的ZigBee协议体系图所示,ZigBee中包括很多的层和各个层之间的数据管理信息传输。如此庞大的体系,如果人为手动编写程序将是一个很浩大的工程。而Z-Stack则在其系统中为我们提供了详细的各个子模块的工作程序。那么我们在开发ZigBee项目的时候,其实我们只需要添加三个文件:主文件,主文件的头文件,操作系统接口文件。 ![]() 3、Z-Stack轮询结构函数工作方式及顺序。 下图是轮询结构工作流程图。进入轮询结构后,Z-Stack开始根据处理任务的优先级一级级向下查询是否有任务要执行,如果需要,就调用该任务的子函数,如果没有就继续询问,最后再循环。这就是轮转查询结构。 ![]() 第二章题外话:如果说第一章基本是科普的话,是为了让行外人也知道我们在干嘛,那么第二章就是在对行内人科普,我在这一阶段的学习基本就是为了搞懂,对于Z-Stack,我到底要从何处下手,到底那些是需要我修改编译的,哪些是可以直接引用的。而真正开始开发,是在第三章。 三、Z-Stack学习,调用,修改,开发。 1、各层文件意义。 ![]() (1) APP:应用层目录,即我们需要开发修改的部分。 (2)HAL:硬件层目录。 (3)MAC:MAC层目录。 (4)MT:监控调试层目录。 (5)NWK:网络层目录。 (6)OSAL:协议栈的操作系统。(7)Profile:AF层目录。 (8)Security:安全层目录。 (9)Services:设备地址处理函数目录。 (10)Tools:工程配置目录。 (11)ZDO:ZigBee设备对象。 (12)ZMac:Z-Stack MAC导出层接口文件。 (13)ZMain:项目入口函数,对外控制接口函数。 (14)Output:输出文件目录。 2、PANID设定。 若ZDAPP_CONFIG_PAN_ID值不为0xFFFF时,PANID由其指定,若ZDAPP_CONFIG_PAN_ID为0xFFFF,那么设备将随机加入网络。 通过选择DEFAULT_CHANLIST不同的值可以选择不同频道。 Tools\CC2530DB目录下的f8wConfig.cfg文件中有相应设置。 ![]() 第三章题外话:目前笔者还在处于学习如何修改APP目录下函数的阶段,虽然有些笔记也做了,但是还无法确定是否正确,就不拿出来误人子弟了。可能已经发出来也有错误,还请大家多多指正,如果反响还不错的话,我会继续更新的。 四、细节知识、名词解释及备注。 1、ZigBee是树寻址,PRO是随机寻址,PRO更适用于变动的网络,如由多个移动终端组成的网络。只有PRO可以支持多对一路由选项。大多数情况下,ZigBee和ZigBee PRO无法在同一网络上同时使用。 2、 自我组态功能:让系统中所有的节点,根据现场的网络讯号状态决定要加入的父节点。 3、描述符:ZigBee网络中的所有设备都有一些描述符,用来描述设备类型和应用方式。描述符的定义和创建配置项在文件ZDOCConfig.h和ZDOConfig.c中完成。 备注:PHY:物理层 MAC:媒体介质访问层 NWK:网络层 APL:应用层 APS:应用支持子层 AF:应用框架 KVP:键值对服务类型 MSG:报文服务类型 LR-WPAN:低速率无限个人区域网 DSSS:直接序列扩频 ISM:工业科学医学频段 CSMA-CA:碰撞避免 GTS:保证时隙 ID:个人域网选择信道和识别符 SAP:服务接入点 MCPS:数据传输服务 MLME:管理服务 NLDE:数据服务实体 NLME:管理服务实体 NIB:网络层信息数据库 MLDE:MAC子层数据服务 ZDO:ZigBee设备对象 FFD:全功能设备 RFD:精简功能设备 API:应用程序编程接口 HAL:硬件抽象层 再来个题外话:本人的确是从零开始,所以看到这么简单和初级东西请不要笑我。而且本人也不知道文章中是否有错误瑕疵,如果有,还请大家多多指正,互相帮助共同进步。由于本人近日也在准备比赛而赶进度,所以笔记略显简洁和潦草,日后我会更加丰富和完善一下。如果大家觉得还不错的话,我会继续更新。另外,请注重版权意识,转载请注明出处。 ————上海海洋大学A421实验室 小左同学 |
zigbee学习笔记---入门
最新推荐文章于 2025-02-22 14:36:17 发布