ZigBee协议栈(一)--协议栈介绍

2019-04-09来源: eefocus关键字:ZigBee  协议栈  OSAL控制

1、Zigbee协议栈简介

  协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗讲协议栈就是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议,进而实现无线数据收发。


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


            图1 ZigBee无线网络协议层的架构图

 

2、如何理解Zigbee协议栈

  协议栈是协议的实现,可以理解为代码,库函数,供上层应用调用,协议较底下的层与应用是相互独立的。商业化的协议栈只提供你接口(其实和互联网行业的API模式很像)。就像你调用地图API时不需要关心底层地图是怎么根据位置或坐标绘制的,你也不用关心协议栈底层的实现,除非你想做协议研究。每个厂家的协议栈是有区别的,比如TI的BLE协议栈和nordic的BLE协议栈就有很大的不同(多说一点,TI的BLE协议栈更像是安卓的BLE结构,所以会安卓蓝牙的人可能能看懂TI的代码)。

 

3、如何使用Zigbee协议栈

  以简单的无线数据通信为例,其一般步骤为:

① 组网:调用协议栈组网函数、加入网络函数,实现网络的建立和节点的加入

② 发送:发送节点调用协议栈的发送函数,实现数据无线发送

③ 接收:接收节点调用协议栈的无线接收函数,实现无线数据接收

  由于协议栈都把这些函数都封装好了,因此我们用起来比较方便。下面是协议栈无线发送函数:



  如果想更好的应用协议栈就需要对协议栈提供的这些函数及其参数的具体作用和意义进行细致的了解,这个在接下来中会详细介绍。

 

4、安装Zigbee协议栈

  从我百度共享的所有本系列资料中下载004解压并安装:


               图2 ZigBee协议栈下载路径

 

安装好之后在win7开始按钮下会有如下文件结构:


                  图3 ZigBee协议安装完成后的文件结构


  其中:


 

5、基于协议栈的无线收发控制LED工程讲解(一)

  从网盘下载ZStack-2.3.1a压缩文件:


图4 工程源码所在云盘目录

  

  用IAR打开.. ZStack-2.5.1aProjectszstackSamplesSampleAppCC2530DB目录下的工程文件,注意不要把001Stack-2.5.1a放在比较深的文件夹内,否则IAR打开工程时可能一直卡打不开,也最好不要有中文!打开后工程及结构如下:(有点眼花缭乱,不要紧,后面会结合源码一步步分析)


                  图5 工程整体架构

 

6、基于协议栈的无线收发控制LED工程讲解(二)

  在IAR中选择XXXXEB,第一遍要rebuild all,下载好协调器之后,再切换到EndDeviceEB编译下载到另一个板子做终端设备:


          图6 编译工程

 

两个节点程序下载好之后上电会看到:组网成功后D1闪烁。


                图7 实验现象

 

7、基于协议栈的无线收发控制LED工程讲解(三)

main code:

 1 int main( void )

 2 {

 3     osal_int_disable( INTS_ALL );// Turn off interrupts         关中断

 4     HAL_BOARD_INIT();// Initialization for board related stuff such as LEDs

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

 6     InitBoard( OB_COLD );// Initialize board I/O  初始化I/O,LED,Timer等

 7     HalDriverInit();// Initialze HAL drivers 初始化硬件抽象层驱动模块

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

 9     znpTestRF();// Initialize and check the ZNP RF Test Mode NV items. 

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

11     zmain_ext_addr();// Determine the extended address  确定IEEE64位地址

12 

13 #if defined ZCL_KEY_ESTABLISH

14     zmain_cert_init();// Initialize the Certicom certificate information.

15 #endif

16 

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

18 

19 #ifndef NONWK

20     afInit();// Since the AF isn't a task, call it's initialization routine

21 #endif

22 

23     osal_init_system();// Initialize the operating system     初始化OS(重点介绍1)

24     osal_int_enable( INTS_ALL );// Allow interrupts       使能中断

25     InitBoard( OB_READY );// Final board initialization      最终板载初始化

26     zmain_dev_info();// Display information about this device     显示设备信息(这里有LCD屏幕)

27 

28 #ifdef LCD_SUPPORTED/* Display the device info on the LCD 将信息显示在LCD上*/

29     zmain_lcd_init();      

30 #endif

31 

32 #ifdef WDT_IN_PM1

33     WatchDogEnable( WDTIMX );/* If WDT is used, this is a good place to enable it. */

34 #endif

35 

36     osal_start_znp(); // No Return from here    执行操作系统(重点介绍2)

37 

38     return 0;  // Shouldn't get here.

39 } // main()

代码有点难懂,核心是执行初始化工作,包括硬件抽象层、网络层、任务等。然后执行osal_start_znp() ,进入一个死循环,不断对任务进行遍历执行。这里我们需要重点了解两个函数:

 

 

① 操作系统初始化函数

在操作系统初始化中需重点关注的是操作系统任务初始化osalInitTasks函数,操作系统初始化函数中主要来创建任务,taskID是任务ID,每增加一个任务ID++,同时ID越小表示该任务优先级越高!其中蓝框内的函数是要根据系统想完成的任务做修改的地方,其他都是官方提供的基本不用变的任务。

 

② 操作系统启动函数

 

执行OS的函数就是个大循环,不断取出当前优先级最高的待处理事件进行处理,处理的核心思想在osal_run_task函数内:通过调用一个函数指针来远程调用一个事件处理函数!

 

8、小结

  至此,我们讲到任务如何建立、如何处理等,其中有一个环节没有讲——如何从events=(tasksArr[idx])(idx,event)关联到每个具体任务的事件处理函数的?这个其实我在CC2540/CC2541的前两篇中已有详细介绍:[接下来会针对具体通信梳理流程!]

1、CC2541蓝牙4.0芯片中级教程——基于OSAL操作系统的运行流程了解+定时器和串口例程了解

2、CC2541芯片中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~

3、CC2541芯片中级教程-OSAL操作系统(ADC光敏电阻和修改串口波特率)

4、CC2541芯片中级教程-OSAL操作系统(简单AT指令实现+IIC软件和硬件实现驱动MPU6050)

5、CC2541芯片中级教程-OSAL操作系统(PWM+看门狗)


关键字:ZigBee  协议栈  OSAL控制 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/2019/ic-news040943734.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:ZigBee协议栈(二)--OSAL控制LED灯
下一篇:ZigBee无线通信--BasicRF无线点对点通信

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

基于ZigBee和STM32的智能家居控制系统的设计与实现(五)--终结
##基于ZigBee和STM32的智能家居控制系统的设计与实现(五)–终结篇###说明首先祝贺自己顺利的完成了毕业答辩工作,想起整个过程还是挺让自己感动的。最后还被评为优秀毕业设计,虽然并没有什么luan用,但是,马上毕业了,还是挺让人怀念的。整个资料从第一篇博客说起就说会全部开源的,期间承蒙各位朋友的支持,给与资助,在此感谢了。虽然资料中私人信息删除了一些,但是不免有疏漏,所以有关个人信息还挺各位删除掉,小弟在此谢谢了!###总结下面简单介绍下系统使用到的一些资料和系统实现的功能。开发系统:Windows10 64位Ubuntu 14.04 32 位软件版本:Qt 4.8.6IAR .0Altium Designer 13.0
发表于 2019-10-22
基于ZigBee和STM32的智能家居控制系统的设计与实现(五)--终结
基于ZigBee和STM32的智能家居控制系统的设计与实现(二)
上一篇博客中总体介绍智能家居系统的基本实现原理,这篇博客和以后的几篇博客会详细进行相应的介绍。这里首先进行硬件电路的设计。硬件电路的设计硬件电路主要包括以下几个:主控电路传感器电路通讯电路下面就分别讲解着三个电路的设计主控电路设计主控电路采用的是STM32F103C8T6单片机,关于为什么选择这个型号的,主要有两个原因,一是稍微便宜一些,淘宝上便宜一点的6块多大洋就可以了;二是因为综合考虑了下我能使用到的资源,选择这个型号的已经够用了。如下图所示: 主控电路实际上就是一个单片机的最小系统的设计,而最小系统的设计主要包括:电源部分、晶振部分、程序下载部分、芯片电路部分。其中下载电路可以根据自己的需要进行设计,可以选择USB下
发表于 2019-10-22
基于ZigBee和STM32的智能家居控制系统的设计与实现(二)
基于ZigBee和LabVIEW的社区空巢老人监护系统设计
0 引言随着社会经济的发展,人口流动性加大,家庭结构也在不断发生改变,越来越多的老年人单独居住,无人照料。据第六次人口普查数据显示,在有老年人的家庭中,空巢家庭占比已达到31.77%,伴随老龄化程度的加深,空巢家庭的比重仍会迅速上升,同时老人的健康情况也会限制其子女的就业选择与工作时长,老年人的安全监护问题己成为社会关注的焦点。目前,基于GSM的老人远程监护系统在国内得到推广,基于图像理解的家庭监护技术也在国外展开研究。然而,这些方法往往因为救助不及时或是老人病发时失去求救能力而错过最佳的救治时间,给家人带来遗憾。本文针对空巢老人的安全监护问题,设计了基于ZigBee和LabVIEW的社区空巢老人室内监护与报警系统。此系统以社区
发表于 2019-10-17
基于ZigBee和LabVIEW的社区空巢老人监护系统设计
基于STM32F107+DP83848嵌入式zigbee网关设计
1. 引言Wireless Sensor Network,WSN(无线传感器网络)是指由大量成本相对低廉的,具有感知能力、计算能力、实时通信能力的传感器节点组成的嵌入式无线网络,是当前众多领域的研究和应用热点。建立在IEEE 802.15.4(LR_WPAN,低速率无线个人区域网)上的Zigbee协议是应用于无线监测与控制的全球性无线通信标准,是无线传感器网络组网的首选技术之一。2. 系统设计Zigbee 网关在整个系统中是建立在传输层上的协议转换器,首先,需要和服务器建立通信连接。其实,需要维护zigbee网络中的终端设备。系统整体框架网关和服务器连接硬件上采用以太网(有线)和WiFi(无线)两种方式。   
发表于 2019-07-25
基于STM32F107+DP83848嵌入式zigbee网关设计
技术文章—实现ZigBee快速组网方法解析
真想一键组网,真想让它自组网,真不想看繁琐的组网协议,究竟如何快速实现ZigBee组网,请看图! Zigbee的前身是1998年由 INTEL、lBM等产业巨头发起的“ Homer flite”技术,随着我国物联网正进入发展的快车道,ZigBee也正逐步被国内越来越多的用户接受。但在发展上还是有很多的挑战,比如说如何最大化发挥ZigBee组网优势? Zigbee技术的主要特点是支持自组网能力强,自恢复能力强,因此,对于井下定位,停车场车位定位,室外温湿度采集,污染采集等应用非常具有吸引力。  图 1 ZigBee在智慧停车应用 组建一个完整的ZigBee网络包括
发表于 2019-07-18
技术文章—实现ZigBee快速组网方法解析
ZigBee技术助力纺织行业数据实时采集
CAN总线的监控系统。但是这些织机运行监控系统存在成本高,系统结构复杂抗干扰性较差以及系统维护困难等缺点,限制了其在织机运行监控系统中的推广应用。 随着“中国制造2025”战略的持续推进,传统制造业面临着向智能制造转型升级的历史性路口。传统传输方案愈加受限,而无线成为近年来热门的物联传输方案。与RS-485总线及CAN总线相比,ZigBee技术除通信距离较短外,无论是在实时性、抗干扰和可靠性还是在系统成本和扩展性方面都具有明显的优势。同时,在系统布线方面,由于ZigBee采用无线方式,可以应用到RS-485总线及CAN总线无法应用场合。  ZigBee由于具有自组网,成本低,可扩展性好,嵌入性强,抗干扰
发表于 2019-05-09
ZigBee技术助力纺织行业数据实时采集
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved