迪加 发表于 2012-8-29 00:46:48

迪加Zigbee学习历程七 ZigBee协议栈简介

本帖最后由 迪加 于 2012-8-29 14:40 编辑

   大家好,前一段时间由于网蜂开源ZigBee的发布忙了一段时间,迪加也思考了一段时间,觉得有必要延续自己的zigbee学习历程,在今后的学习历程里的内容可能会在网蜂的《ZigBee实战演练》的电子书提及,但是作为帖子有其好处,大家可以在这里提问题,后人看到有意义的记录后相信能走更少的弯路。所以希望大家在学习中遇到问题可以在相应的帖子留言。我们尽力为你解答,谢谢!
      
   本节内容仅仅是对ZigBee协议栈的一些大家必须理解清楚的概念进行简单的讲解,并没有对ZigBee协议栈的构成及工作原理进行详细的讨论。让刚接触ZigBee协议栈的朋友们对它有个初步的感性认识,有助于后面使用ZigBee协议栈进行真正的项目开发。

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

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


图1 ZigBee无线网络协议层

   在开发一个应用时,协议较底下的层与应用是相互独立的,它们可以从第三方来获得,因此我们需要做的就只是在应用层进行相应的改动。
   
   介绍到这里,大家应该清楚协议和协议栈的关系了吧,是不是会想着怎么样才能用协议栈来开发自己的项目呢?技术总是不断地在发展地,我们可以用ZigBee厂商提供的协议栈软件来方便地使用ZigBee协议栈(注意:不同厂商提供的协议栈是有区别的,此处介绍TI推出的ZigBee 2007协议栈也称Z-Stack)。
   Z-stack是挪威半导体公司Chipcon(目前已经被TI公司收购)推出其CC2430开发平台时,推出的一款业界领先的商业级协议栈软件,由于这个协议栈软件的出现,用户可以很容易地开发出具体的应用程序来,也就是大家说的掌握10个函数就能使用ZigBee通讯的原因。它使用瑞典公司IAR开发的IAR Embedded Workbench for MCS-51作为它的集成开发环境。Chipcon公司为自己设计的Z-Stack协议栈中提供了一个名为操作系统抽象层OSAL的协议栈调度程序。对于用户来说,除了能够看到这个调度程序外,其它任何协议栈操作的具体实现细节都被封装在库代码中。用户在进行具体的应用开发时只能够通过调用API接口来进行,而无权知道ZigBee协议栈实现的具体细节,也没必要去知道。因此在这里提醒各位开发者,在使用ZigBee协议栈进行实际项目开发时,不需要关心协议栈是具体怎么实现的,当然有兴趣的也可以深入分析。
   图2是TI公司的基于ZigBee2007的协议栈 Z-Stack-CC2530-2.3.0,所有文件目录如红色框所示,我们可以把它看做一个庞大的工程。或者是一个小型的操作系统。采用任务轮询的方法运行。
   

图2TI Z-stack TI Z-Stack-CC2530-2.3.0
   来个小总结:ZigBee协议栈已经实现了ZigBee协议,用户可以使用协议栈提供的API进行应用程序的开发,在开发过程中完全不必关心ZigBee协议的具体实现细节,要关心的问题是:应用层的数据是使用哪些函数通过什么方式把数据发送出去或者把数据接收过来的。所以最重要的是我们要学会使用ZigBee协议栈。
举个例子,用户实现一个简单的无线数据通信时的一般步骤:
1、组网:调用协议栈的组网函数、加入网络函数,实现网络的建立与节点的加入。
2、发送:发送节点调用协议栈的无线数据发送函数,实现无线数据发送。
3、接收:接收节点调用协议栈的无线数据接收函数,实现无线数据接收。

   看起来是不是很简单呢,是不是有动手试试的冲动。具体的例程讲解在这里就不说先了,在接下来的教程里面会详细地和大家一起讨论ZigBee协议栈架构中每个层所包含的内容和功能及Z-stack的软件架构。

Name_006 发表于 2012-8-29 01:11:58

大晚上的 支持下   {:lol:}{:lol:}                                                                                                                                                      

robin45853258 发表于 2012-8-29 07:47:01

迪加的莫元为啥是负数啊?{:lol:}

dreamsuccess 发表于 2012-8-29 07:52:36

很好。。

pang123hui 发表于 2012-8-29 08:14:16

学习一下,支持

xiaoliusheng 发表于 2012-8-29 08:33:45

做智能家居不二的选择....

迪加 发表于 2012-8-29 09:04:53

robin45853258 发表于 2012-8-29 07:47 static/image/common/back.gif
迪加的莫元为啥是负数啊?

{:lol:} 送给有需要的人了。

linuxembe@126 发表于 2012-8-29 11:09:20

很期待 呀

zhangpisces 发表于 2012-9-21 10:23:01

一如既往的支持{:victory:}

so_so_so 发表于 2012-9-26 21:26:40

期待,支持

pililongwang 发表于 2012-12-19 17:24:47

买了一套webee,跟帖学习,呵呵。。。
{:lol:}

345161974 发表于 2013-1-21 15:26:41

智能家居的话,zigbee是个很棒的选择了.

squall45 发表于 2013-7-12 13:28:22

zigbee值得好好学习。说的不错。谢谢分享。

熟睡的安拉 发表于 2013-7-29 16:16:31

顶一个!

lebaitong 发表于 2013-10-29 22:42:58

很有前途哦,决定深入

miaomiao1121 发表于 2013-11-9 21:58:20

刚好在弄这个谢谢分享

fengdingkusong 发表于 2014-3-30 10:48:13

谢谢分享                  

帅小伙 发表于 2014-4-1 15:35:28

支持一下

huangzzjy22 发表于 2014-10-14 15:05:12

继续支持一下

MINGYU40 发表于 2014-10-18 21:49:17

zigbee值得好好学习
页: [1]
查看完整版本: 迪加Zigbee学习历程七 ZigBee协议栈简介