zigbee协议栈工作流程 From zigbee菜鸟笔记(十 一)

本文深入解析ZigBee协议栈的组成与工作原理,包括ZigBee协议的分层结构、协议栈的使用方法、Z-Stack协议栈体系结构以及协议栈的应用文件夹说明。此外,详细介绍了ZigBee协议栈的工作流程,从main函数到osal_start_system,再到osal_run_system的执行过程,帮助读者理解协议栈的运行机制。

一.ZigBee 协议栈简介

有问题发送邮件至468078841@qq.com
什么是ZigBee 协议栈呢?它和ZigBee 协议有什么关系呢?协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用个协议的,进而实现无线数据收发。

ZigBee 的协议分为两部分,IEEE 802.15.4 定义了PHY(物理层)和MAC(介质访问层)技术规范;ZigBee 联盟定义了NWK(网络层)、APS(应用程序支持子层)、APL(应用层)技术规范。ZigBee 协议栈就是将各个层定义的协议都集合在一直,以函数的形式实现,并给用户提供API(应用层),用户可以直接调用。

							 					Z-Stack协议栈体系结构								

在这里插入图片描述

二.如何使用ZigBee 协议栈

协议栈是协议的实现,可以理解为代码,函数库,供上层应用调用,协议较底下的层与应用是相互独立的。你需要关心的就是你的应用逻辑,数据从哪里到哪里,怎么存储,处理;还有系统里的设备之间的通信顺序什么的.至于初始化等等工作不需要我们考虑。我们只需要调用相关的API函数就可以了。

三.了解zigbee协议栈的应用文件夹

安装好zigbee协议栈,打开目录Texas Instruments

在这里插入图片描述

(一)Components:顾名思义这个是放我们的库的文件夹,里面放了一些我们用到的ZDO,driver,hal,zcl 等库的代码

(二)Documents:这里放的是TI 的开发文档的,里面很多都是讲述协议栈的API

(三)Projects:这个文件夹放的是TI 协议栈的例子程序。

(四)Tools:这个文件夹是放TI 的例子程序的一些上位机之类的程序,作为工具使用。

接下来介绍的东西均需要打开示例工程在这里我们打开\ZStack-CC25302.5.1a\Projects\zstack\Samples\SampleApp\CC2530DB进入zigbee的协议栈中
在这里插入图片描述

为了确保程序没问题我们在这里重新编译一下协议栈。

这是我们协议栈的汇总目录
在这里插入图片描述
这里是我们zigbee的文件夹,里面写好的代码都分为很多的group
(一)APP:应用层目录,这里用户可以创建不同的工程目录,这里包含项目工程主要内容

(二)HAL:硬件层目录,包含有与硬件相关的配置和驱动及操作函数。

(三)MAC: MAC 层目录,包含了MAC 层的参数配置文件及其MAC 的LIB 库的函数接口文件。

(四)MT:实现通过串口可控各层,于各层进行直接交互。

(五)NWK:网络层目录,含网络层配置参数文件及网络层库的函数接口文件,APS 层库的函数接口

(六)OSAL:协议栈的操作系统。

(七)Profile: AF层目录,包含AF 层处理函数文件。

(八)Security:安全层目录,安全层处理函数,比如加密函数等。

(九)Services:地址处理函数目录,包括着地址模式的定义及地址处理函数。

(十)Tools:工程配置目录,包括空间划分及ZStack 相关配置信息。

(十一)ZDO: ZDO目录。

(十二)ZMac: MAC 层目录,包括MAC 层参数配置及MAC 层LIB 库函数回调处理函数。

(十三)Output:输出文件目录,这个EW8051 IDE 自动生成的。

在这里插入图片描述
点击DemoEB可以进行设备类型工作空间选择,必须要选好,不然不可以使用。

CoordinatorEB:为协调器的工作空间。

ROuterEB:为路由器的工作空间。

EndDeviceEB:为无线终端的设备选择。

四.zigbee协议栈的工作流程

在我们这个版本的来说在我们使用者的路径流程是:main()---> osal_init_system()---> osalInitTasks()---> SampleApp_Init()

(一)打开ZMain.c 找到main 函数
学过C语言的都知道,C语言函数是在一直执行main文件里面的内容,首先我们先查看main.c的内容


int main( void )
{
   
   
  // Turn off interrupts
  osal_int_disable( INTS_ALL ); //关闭协议栈所有中断

  // Initialization for board related stuff such as LEDs
  HAL_BOARD_INIT();             //初始化协议栈系统时钟

  // Make sure supply voltage is high enough to run
  zmain_vdd_check();            //检查芯片电压是否正常

  // Initialize board I/O
  InitBoard( OB_COLD );         //初始化I/O 

  // Initialze HAL drivers
  HalDriverInit();              //初始化芯片硬件

  // Initialize NV System
  osal_nv_init( NULL );         //初始化Flash 存储器

  // Initialize the MAC
  ZMacInit();                   //初始化MAC 层

  // Determine the extended address
  zmain_ext_addr();             //确定IEEE 64位设备地址

  // Initialize basic NV items
  zgInit();                     //初始化非易失变量

#ifndef NONWK
  // Since the AF isn't a 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值