微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > 射频综合技术问答 > 第一讲:Zstack协议栈初窥(一)

第一讲:Zstack协议栈初窥(一)

时间:10-02 整理:3721RD 点击:
Zstack协议栈是由TI公司在2007年4月推出的Zigbee无线通讯协议,是一种半开源式的协议栈,历经多年发展,功能不断完善,当前最新版本为2.5.1-a。网上资料有的说zstack协议栈是开源的,但是实际上zstack中的很多关键代码都是以库文件的形式给出的,我们并不能知道这些代码的真实内容,这也给学习这个协议栈带来了一定的困难。现在也有几个真正开源的Zigbee协议栈,如msstatePAN协议栈、freakz协议栈,但是同这些协议栈相比zstack的真正优势则是其搭载的硬件平台:TI的Zigbee无线通讯芯片:CC2520、CC2530等。
笔者最早接触Zigbee也是从学习TI的开发套件开始的,经过几年的沉积,对于CC2530和ZStack协议栈的掌握也可以算是细致入微了,现在打算把自己对协议栈的理解和认识拿出来和大家一起分享。
首先我们从Zigbee的特性说起。在网上搜索zigbee,紧跟在它后面的多半都是近距离、低功耗、自组织这些名词,这也是Zigbee最重要的特点。说它近距离是硬件模块的载波频率是2.4GHz,波长短,穿透性差,另外它和蓝牙、wifi是工作在同一频段的,容易受到干扰,因此传输距离不远。室内的话笔者做过的模块一般只能传输40到50米,网上那些不加PA的透传模块声称室内能传百米的,笔者认识都是在扯淡。低功耗是Zigbee非常重要的特点,CC2530的发射电流为29mA,在低功耗休眠模式下,只消耗不到1uA的电流,这个还是非常给力的。当然,随着蓝牙4.0的推出,Zigbee的这一优势将大打折扣。自组织以及与之相关的自愈合、自动路由等等技术则是Zigbee的真正核心竞争力所在,笔者也是在学习和使用Zigbee的过程中逐渐体会到这些功能的强大之处,也是接下来笔者所要阐述的主要内容。
当你第一次打开Zstack协议栈,查看程序代码,第一感觉也许会是:我靠,这该不是唐僧取来的梵文真经吧。然后转念一想,飞盘扔的再远,最后总会回到手中;风筝飞的再高,总是逃脱不了牵引它的线and so on(此处省略1万字)。眼前的一切都是虚妄,只有main才是你永远的家。搜索main,果然,熟悉的面孔让当年的笔者有了一丝的宽慰。


(点击图片查看大图)
笔者就是从这个入口函数开始,一步步的走入了Zstack的那缤纷复杂的世界不能自拔。方法只有2个:看文档和单步跟踪调试检验,废话少说,这里笔者就对这些函数来进行粗略的解释。
osal_int_disable( INTS_ALL ); 关掉所有中断。
HAL_BOARD_INIT(); 初始化,对晶振的使用情况以及外围LED工作状态进行初始化。
zmain_vdd_check(); 工作电压检测,这是为了检测CC2530供电电压能够保证它的正常工作。
InitBoard( OB_COLD ); 设备IO初始化,进一步深入这个函数,会看到下面这个函数HalKeyConfig(HAL_KEY_INTERRUPT_DISABLE, OnBoard_KeyCallback)被调用。HalKeyConfig()是对按键使用的IO进行初始化以及设置按键工作方式。按键IO初始化主要是将按键所对应的IO口定义为输入端口。如果HalKeyConfig()的第一个参数是HAL_KEY_INTERRUPT_ENABLE,那么按下该按键会触发IO终端,因此HalKeyConfig()函数还要对IO终端进行初始化的配置;如果HalKeyConfig()的第一个参数是HAL_KEY_INTERRUPT_DISABLE,那么主程序会周期性的执行按键扫描程序,查看按键状态。
HalDriverInit(); 硬件驱动初始化。这个函数主要完成的是对单片机外围设备工作状态进行初始化,如ADC、DMA、LCD、LED、KEY、UART等等。
osal_nv_init( NULL ); NV功能初始化。这里要说明一下,NV是非易失性(non-volatile)的简称,这里的NV区是CC2530 flash里分配的掉电之后仍旧能够保存数据的存储区。一般zigbee模块完成入网之后,如果重启该模块,那么模块先前的网络信息都会丢失,它就是一个全新的“空白”模块,可以加入各种NETWORK ID不同的网络。如果模块启用了NV_RESTORE功能(在preprocesss选项中添加NV_RESTORE),模块上一次加入过的网络信息将保存下来,重启该模块之后,它也只能加入NETWORK ID同上一次相同的网络。

本文为与非网月光码头原创,未经允许谢绝转载。
更多内容请见:【深度分析Zigbee】Zigbee技术知多少?资深大牛对对碰
----------------------------
主讲嘉宾简 介:网名:月光码头。毕业于中国科学院电子学研究所,主要从事zigbee物联网方向的应用研究,尤其擅长TI RF芯片、和Silicon Lab  MCU芯片的使用。现就职于上海理滋芯片设计公司,任研发部门经理,主要从事智能家居产品的设计开发,拥有5年多的zigbee软硬件开发经验。
------------------
推荐技术讲座:
  听东北人讲天线:每周一个实例,个个经典!(CST仿真实践全包括)
【ADS学习小组】课程汇总(火烽主讲)
【HFSS学习小组】课程汇总(木木主讲)


图片链接失效了。

高手啊,真是,一起来学习一下

先看图,看图

围观群众来袭。还要大于6个字啊

看看·学习

这个东东我是第一次接触,感觉像以前的单位片机呢,编程来实现功能,不知我理解的对不对

回复第 7 楼 于2013-08-20 16:21:52发表:
这个东东我是第一次接触,感觉像以前的单位片机呢,编程来实现功能,不知我理解的对不对
---东北人大哥见识果然广博,猜也可以猜到三分

这个好,跟大牛学习

回复第 7 楼 于2013-08-20 16:21:52发表:
这个东东我是第一次接触,感觉像以前的单位片机呢,编程来实现功能,不知我理解的对不对

没错,你理解的是对的,东北人,RF片子用的是51的内核。

能不能连贯发表呢?

厉害厉害,这是好东西,雪中送炭啊。

学习学习,有帮助的资料

跟帖学习。

休息休息,学习学习

回复第 11 楼 于2013-08-21 14:51:19发表:
能不能连贯发表呢?

小编每周发一期,大家可以跟帖提问讨论。

学习了,谢谢!

度假酒店发卡机房阿斯蒂芬阿斯蒂芬

学习了,谢谢!

你这个是TI的协议栈,有没有其他的呢?可否也一起介绍下?谢谢

来学习!取经!

我看看,我看看吧

回复第 20 楼 于2013-08-22 09:22:44发表:
你这个是TI的协议栈,有没有其他的呢?可否也一起介绍下?谢谢

我对Zstack协议栈比较熟悉,别的协议栈接触不深,不敢妄言。

好东西,一定要珍藏

一周一次 说的东西不应该这么少啊

谢谢!

学习了。

还行

过来取经来了。

謝謝!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top