ZStack学习笔记.docx

上传人:b****1 文档编号:2734708 上传时间:2023-05-04 格式:DOCX 页数:58 大小:1.06MB
下载 相关 举报
ZStack学习笔记.docx_第1页
第1页 / 共58页
ZStack学习笔记.docx_第2页
第2页 / 共58页
ZStack学习笔记.docx_第3页
第3页 / 共58页
ZStack学习笔记.docx_第4页
第4页 / 共58页
ZStack学习笔记.docx_第5页
第5页 / 共58页
ZStack学习笔记.docx_第6页
第6页 / 共58页
ZStack学习笔记.docx_第7页
第7页 / 共58页
ZStack学习笔记.docx_第8页
第8页 / 共58页
ZStack学习笔记.docx_第9页
第9页 / 共58页
ZStack学习笔记.docx_第10页
第10页 / 共58页
ZStack学习笔记.docx_第11页
第11页 / 共58页
ZStack学习笔记.docx_第12页
第12页 / 共58页
ZStack学习笔记.docx_第13页
第13页 / 共58页
ZStack学习笔记.docx_第14页
第14页 / 共58页
ZStack学习笔记.docx_第15页
第15页 / 共58页
ZStack学习笔记.docx_第16页
第16页 / 共58页
ZStack学习笔记.docx_第17页
第17页 / 共58页
ZStack学习笔记.docx_第18页
第18页 / 共58页
ZStack学习笔记.docx_第19页
第19页 / 共58页
ZStack学习笔记.docx_第20页
第20页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ZStack学习笔记.docx

《ZStack学习笔记.docx》由会员分享,可在线阅读,更多相关《ZStack学习笔记.docx(58页珍藏版)》请在冰点文库上搜索。

ZStack学习笔记.docx

ZStack学习笔记

学习Zstack之1

第一步:

安装Zstack

默认安装路径为:

C:

\TexasInstruments\ZStack-1.4.3。

安装之后在C:

\TexasInstruments\ZStack-1.4.3目录下有各PDF文档为:

GettingStartedGuideCC2430.pdf,这个肯定是要看的。

既然把它放到这么前面,说明它是入门中的入门文档。

下面就简单介绍下这个文档:

1、介绍了安装ZStack-CC2430-1.4.3.exe需要的硬件软件条件:

需要电脑、操作系统为Windows2000或WindowsXP。

至于更高或更低版本的本人没有尝试。

2、讲了安装流程。

这个有点多余了,这年月哪个有电脑的没有安装上百上千次的软件啊?

但是需要强调的是安装路径----默认就好!

3、接下来就是让我们看的第一个文档为:

Start->Programs->TexasInstruments->ZStack-1.4.3->Z-StackUser’sGuide,

第二步:

Z-Stack用户指导

1、介绍

1.1、适用范围

本文档适用于CC2430ZigBee开发板----CC2430ZDK。

2、产品包描述(TI提供的CC2430ZDK工具包)

2.1、安装包内容

这个就是上面提到的的ZStack-CC2430-1.4.3.exe安装之后的所有内容了。

说白了就是包含Zstack开发所需要的所有软件和文档资料等。

2.2、开发板介绍

两块SmartRF04EB评估版,每个都可以用于CC2430EM评估模块。

如图1-1所示:

 

Figure1:

ChipconSmartRF04EBEvaluationBoardwithCC2430EM

5块CC2430DB评估板,如图1-2所示:

 

Figure2:

ChipconCC2430DBDevelopmentBoard

10个SOC_BB评估板,每个都可以用于CC2430EM或CC2431EM。

如图1-3所示:

 

Figure3:

ChipconSOC_BBBatteryBoard

2.3、电缆

也就是包含开发包所需要的电缆,如RS232串口线,USB线等等附属配件。

3、安装配置

3.1、主机配置

一台个人计算机----也就是电脑哈。

我想玩嵌入式的应该都有,而现今不过时的配置就可以:

下面是最低配置

.NET1.1架构

WindowsXPServicePack1(i如果是WindowsXP)

1个串口(也就是RS232接口)s

1USB接口

个人认为要求已经相当低了,如果你的电脑没有这配置,个人强烈建议马上扔掉!

不过如今笔记本电脑很少有串口的,所以建议使用台式电脑,而且装机的时候一定要把串口引出,否则就比较麻烦了!

3.2、目标板需求

其实也是开发环境需求---IAREW8051。

目前需要的版本为7.30B及以上。

要求还是比较高的,因为目前这个版本没有破解的。

但是在

4、产品安装过程

4.1、安装Z-Stack

这个也就是安装ZStack-CC2430-1.4.3.exe的过程。

4.2、IAR安装

一般来说安装选择默认路径,但是自定义路径也不会出问题的。

注意IAR版本7.30B及以上版本才可以运行1.4.3协议。

4.3、设备IEEE地址

每个CC2430DB,CC2430EM,和CC2431EM都已经排列了一个唯一的64位物理地址(IEEE地址),这个地址已经写到了CC2430内部FLASH里面,在CC2430DB,CC2430EM,和CC2431EM板的底部有这个地址标签。

这个地址被写入到FLASH的0x1FFF8地址中,注意这个地址也可以更改的,通过些FLASH软件,一般0xFFFFFFFFFFFFFFFF地址被认为是无效地址。

5、配置并试用Z-Stack

5.1、配置Z-Stack

这个详见5.3节。

5.2、逻辑类型

这里主要是介绍了ZIGBEE协议中的三种设备类型:

ZigBee协调者(ZC):

这个设备被配置为初始化并建立一个PAN网络

ZigBee路由器(ZR):

该设备被配置为加入一个存在的网络,可以加入一个协调求或路由器,然后允许其他设备加入它,在网络中路有数据信息。

ZigBee终端节点(ZED):

该设备被配置为加入一个存在的网络,可以加入一个协调求或路由器。

5.3、建立样品应用设备:

SampleApp

基本上就是采用SampleApp应用中的Demo例子来演示整个流程,就是采用一个协调器和一个或多个路由器来形成一个ZigBee网络演示。

在该例子中主要通过SmartRF04EB板上的某些跳线来完成设备类型的选型,当然这个方法在程序中是需要判断哪个按键被拉低或拉高,对于做个设计的来说应该是相当好理解的。

申明:

由于本人很穷,所以没钱买TI原装开发包,当然也就没有上面提到的硬件,本人采用的是某家公司(为了避免广告,这里就不说明了)的硬件系统。

5.4、建立一个SampleLight协调器设备

至于提到的硬件连接这里一律省略。

无疑:

首先要打开对应工程,如图1-4所示:

图1-4

在工作窗口中选择DemoEB,如图1-5所示:

 

图1-5

然后选择工程菜单(Project)下的全部编译(RebuildAll)选项,如图1-6所示:

 

图1-6

然后选择工程菜单(Project)下的调试(Debug)选项,如图1-7所示:

 

图1-7

下载完之后就可以退出调试状态,通过选中调试菜单下的停止调试选项,如图1-8所示:

 

图1-8

按照此种方法下载至少两个CC2430EM模块,就可以进行Demo演示了。

6、Z-Stack示范

至于详细的示范流程,这里先不说了,因为本人采用的硬件与原装有点差异,即使按照这个方法下载仍然不能演示,因为我这个不能用跳线来选择设备类型。

所以我必须进入程序把跳线判断程序进行简单必要的修改才能演示。

该文档介绍的演示结果及现象都是基于CHIPCON原厂评估板。

7.PanID和通道(Channel)选择

ZigBee协议规范规定,一个14位的个域网标志符(PANID)来标识唯一的一个网络。

Z-Stack可以用两种方式由用户自己选择其PANID,当ZDAPP_CONFIG_PAN_ID值设置不为0xFFFF时,那么设备建立或加入网络的PANID由ZDAPP_CONFIG_PAN_ID指定;如果设置ZDAPP_CONFIG_PAN_ID为0xFFFF;那么设备就将建立或加入它发现网络中的“最好”的网络。

关于这里提到的“最好”的网络,我觉得可能是有些参数评估,只不过这里没有详细的介绍,在后续文档中应该有介绍的。

在2.4G频段上,IEEE802.15.4/ZIGBEE规范规定了16各频道。

用户可以通过选择DEFAULT_CHANLIST不同的值可以选择不同的频道,其频道如图1-9所示。

改协议默认频道为0xB及0x00000800。

图1-9

DEFAULT_CHANLIST和ZDAPP_CONFIG_PAN_ID都作为IARIDE中的编译选项可以进行设置,在应用文件中的…\Projects\Tools\CC2430DB目录下的f8wConfig.cfg文件中有相应设置,如图1-10所示。

图1-10

 

学习Zstack之2

上节基本上初步认识了Zstack的一些情况,今天继续我的学习,打开Sample例子看看,究竟ZIGBEE是怎么回事。

毫无疑问:

如果是第一次打开这个例子工程,肯定很迷糊,因为此时我迷糊了。

对图2-1我简直是相当迷糊。

 

图2-1

这么多文件夹,打开之后又有那么多文件,从何看起?

不要着急,特别是有些人拿到之后,啥都不知道的人第一个问题就是:

我要实现XXX,在哪修改或者在哪添加我的函数呢?

凡是我遇到这样的客户,我就可以肯定他技术部咋的。

就连我这个外行都知道,不把这些弄明白,就是实现XXX只需要修改一个字母,那也不知道在哪改啊?

所以我不急,但是我也理解很多客户,因为有时候项目催的比较急,毕竟老板都是外行嘛!

两条路:

1就是先看主函数,2就是看看TI提供例子说明文档没有。

我这里先看看主函数再说哈!

因为我就知道从主函数看起.

没办法大概每个文件夹找啊,主函数的特征还是比较明明显的,见图2-2所示:

 

图2-2

下面把主函数复制过来简单看下:

ZSEGintmain(void)

{

//Turnoffinterrupts------------关闭中断

osal_int_disable(INTS_ALL);

//InitializeHAL-----------初始化HAL,关于HAL是什么我想后面会有介绍的。

HAL_BOARD_INIT();

//Makesuresupplyvoltageishighenoughtorun----电压检测,最好是能保证芯片能正常工作的电压

zmain_vdd_check();

//Initializestackmemory-------------初始化stack存储区

zmain_ram_init();

//InitializeboardI/O------------初始化板载IO

InitBoard(OB_COLD);

//InitialzeHALdrivers-------------初始化HAL驱动

HalDriverInit();

//InitializeNVSystem--------------初始化NV系统,NV是什么后面我想也会有介绍的

osal_nv_init(NULL);

//Determinetheextendedaddress------------确定扩展地址(64位IEEE/物理地址)

zmain_ext_addr();

//InitializebasicNVitems----------------初始化基本NV条目

zgInit();

//InitializetheMAC----------------初始化MAC

ZMacInit();

#ifndefNONWK

//SincetheAFisn'tatask,callit'sinitializationroutine

afInit();

#endif

//Initializetheoperatingsystem----------初始化操作系统,看样子这里面还有OS,麻烦了……..!

osal_init_system();

//Allowinterrupts-------------允许中断

osal_int_enable(INTS_ALL);

//Finalboardinitialization------------------最后的版在初始化

InitBoard(OB_READY);

//Displayinformationaboutthisdevice---------------显示设备信息

zmain_dev_info();

/*DisplaythedeviceinfoontheLCD*/------------液晶支持显示

#ifdefLCD_SUPPORTED

zmain_lcd_init();

#endif

osal_start_system();//NoReturnfromhere-------------------这里没有返回,大概是进入OS了。

}//main()

可以看到基本上都是初始化函数,因为函数名称都基本上带了init字样的,呵呵,个人觉得TI的变成习惯比我好,一看名称就知道大概功能了。

所以这里也奉劝各位像我这样菜鸟级的初学者,一开始一定就要养成规范化编程的习惯,据说这样维护以及以后升级或者移植兼容性都比较好。

我就先不管各个初始化函数是怎么实现的,我先看看各个功能是什么,现掌握整体功能在细化,我觉得这样的学习方法比较好,因为代码是在太多了,从一开始就逐句看,我敢保证没几个人有耐心看完看明白!

幸好每个初始化函数都有一句说明,虽然是英文的,但是理解起来一点都不难的。

关于每个函数的功能我就直接写在上面的程序里面,节省纸张哈!

一句话:

主函数的功能就是初始化!

主函数看完了又开始模糊了,又从何看起呢?

在无从下手之际,只有去寻求TI说明文档的帮助了。

上节不是漏掉了内容,是关于演示结果的,这里做上补充,怕因为缺调一点后面遇到什么不理解的就惨了!

Sample例子演示演示现象:

1、认识硬件------------按键和LED

上节提到了EM和DB两个板子,其硬件是不一样的。

按键EM就有5各SW1~SW5,而DB只有1各方向键,但是他们有个对应关系,如图2-3所示.

图2-3

LED数量和颜色也不一样,EM有四个LED,如图2-4;而DB只有两个,如图2-5。

如图2-4

如图2-5

关于上面几个图2-4/5中出现的LEDx实际上是程序中出现的关键字。

2、初始化64位IEEE地址

实际上在主函数中有这么个初始化函数的:

zmain_ext_addr()。

这里说如果地址复位为0xFFFFFFFFFFFFFFFF的话,那么就会不停的闪烁LED1,一直等到按键SW5按下后程序才能继续运行,意思就是说按下SW5后就把无效的地址初始化为有效地物理地址了,这个应该是程序上实现的,那么就来看看对应的程序zmain_ext_addr。

/*********************************************************************

*@fnzmain_ext_addr

*@briefMakesextendedaddressifnoneexists.确定扩展地址是有效的

*@returnnone

 *********************************************************************/

staticZSEGvoidzmain_ext_addr(void)

{

uint8i;

uint8led;

uint8tmp;

uint8*xad;

uint16AtoD;

//InitializeextendedaddressinNV初始化NV里的扩载地址

osal_nv_item_init(ZCD_NV_EXTADDR,Z_EXTADDR_LEN,NULL);

osal_nv_read(ZCD_NV_EXTADDR,0,Z_EXTADDR_LEN,&aExtendedAddress);

//Checkforuninitializedvalue(erasedEEPROM=0xFF)检查是否为无效值(地址)

xad=(uint8*)&aExtendedAddress;

for(i=0;i

if(*xad++!

=0xFF)return;-----如果有一个字节不为0xFF,那么该地址有效返回

#ifdefZDO_COORDINATOR

tmp=0x10;

#else

tmp=0x20;

#endif

//Initializewithasimplepattern----------------简单初始化扩展地址

xad=(uint8*)&aExtendedAddress;

for(i=0;i

*xad++=tmp++;

//FlashLED1untiluserhitsSW5---------闪烁LED1直到SW5按下

led=HAL_LED_MODE_OFF;

while(HAL_KEY_SW_5!

=HalKeyRead())---------------------SW5循环检测

{

MicroWait(62500);

HalLedSet(HAL_LED_1,led^=HAL_LED_MODE_ON);//ToggletheLED

MicroWait(62500);

}

HalLedSet(HAL_LED_1,HAL_LED_MODE_OFF);

//PlugAtoDdataintolowerbytes

AtoD=HalAdcRead(HAL_ADC_CHANNEL_7,HAL_ADC_RESOLUTION_10);

xad=(uint8*)&aExtendedAddress;

*xad++=LO_UINT16(AtoD);

*xad=HI_UINT16(AtoD);

#if!

defined(ZTOOL_PORT)||defined(ZPORT)||defined(NV_RESTORE)

//IfnosupportforZ-ToolserialI/O,

//Writetemporary64-bitaddresstoNV些临时的64位物理地址进入NV

osal_nv_write(ZCD_NV_EXTADDR,0,Z_EXTADDR_LEN,&aExtendedAddress);

#endif

}

从程序中可以看出,一开始就检测FLASH中的物理地址,因为这个地址在FLASH中是固定的存储空间,一旦为有效地址就退出函数,一旦为无效地址(0xFFFFFFFFFFFFFFFF),那么就对其物理地址进行简单的初始化并检测SW5按键。

还是比较好理解的!

3、运行例子

在这里提到了跳线,由于本人采用的非TI原装硬件,没有该跳线,所以必须对程序进行修改,否则检测不到跳线,连ZIGBEE的设备类型都不能确定,肯定不能正常运行了。

所以这里就先暂时不说了,这里要说的是一切都正常的情况下,例子的验尸结果。

小小跳跃一下。

不然学习一直没有进展很麻烦的!

协调器:

上电运行,地址检测如上面介绍的情况,通过之后呢-------就进行通道扫描,此时LED1闪烁,一旦协调器成功建立网络,此时LED1停止闪烁,而LED3被点亮。

路由器:

上电运行,仍然是地址检测在前。

之后就是通道扫描寻求是否又存在的网络,此时LED1闪烁,一旦检测到存在网络并成功加入该网络,LED1将停止闪烁,被替换的是LED3别点亮,也就表明路由器成功加入了网络。

那么此时能进行的操作控制是什么呢,也是最简单的表现手法---按键无线控制LED:

周期(5S)发送信息到网络中每个设备

SW1按下,发送一个信息到组1的设备

SW2按下,退出/加入组1

这个我是经过验证的。

如:

按下协调器SW1,路由器的LED1狂闪几下;按下路由器的SW1,那么协调器的LED1也就狂闪几下;当然我是只有两个节点。

如果按1下协调器的SW2,在按下路由器的SW1,此时协调器就没有反应,表明协调器已经退出组1;但是再按下协调器SW2在按路由器的SW1就与上一步类似了。

路由器与此类似可以通过SW2退出/加入组1.

终于把演示弄完了,接下来就来看看程序。

在此之前还是来看看TI提供的Sample指导文档。

这个文档个人觉得写的不错,要是没看之前就看程序的却很郁闷的!

但是本人英文很差,所以需要慢慢看,等点时间放上来!

Z-Stack之3

SampleApplication分析(上)

1、Z-StackCC2430DBandCC2430EBSampleApplication

1.1、介绍

该文档时介绍TI协议入门的一个例子SampleApp的,适用EM和DB开发板。

1.1.1、描述

这个例子是非常简单的演示,每个设备都可以发送和接收两个信息

周期信息-----加入该网络的所有设备每隔10S(可能会加上一个随机数的mS)都发送一个周期信息,该信息的数据载荷为发送信息次数的计数。

闪烁控制信息---------通过按下SW1可以发送一个控制灯闪烁的广播信息,该广播信息只针对组1的所有设备。

所有设备初始化为加入组1,所以网络一旦成功建立/加入就可以进行闪烁控制。

可以通过按下设备的SW2退出组1,所以可以通过退出组1可以不接受闪灯信息。

通过按下SW2也可以让不在组1的设备加入近组1,从而又可以接受闪灯信息了。

这个理解应该不困难的,反正我理解没有什么障碍!

1.1.1.1、按键

SW1:

发送闪烁信息到组1所有设备

SW2:

转换推出/加入组1状态

1.1.2、用户应用开发

这里我基本上能看明白是什么,但是我不打算写出来,因为涉及到一些ZIGBEE的关键术语,不是很明白。

大概就是简单介绍了下用户怎么利用例子做自己的应用,但是实用价值不高,说的太笼统,全是概念性的说明。

1.2、OSAL任务

1.2.1、初始化

因为Z-Stack是在OS下运行的,所以在之前必须调用osalAddTasks()初始化任务。

1.2.2、组织

关于OS的API函数介绍请看文档:

Z-StackOSALAPI(F8W-2003-0002),应该说协议栈的每层或者说每部分都有相关的API说明文档。

osalAddTasks()初始化任务,osalTaskAdd()函数添加任务,都可以到API文档或程序中详细分析函数功能。

1.2.3、系统服务

OSAL和APL系统服务是唯一的,因为比如按键和串口类似事件处罚就只能用唯一的一个任务标识。

这两个硬件都留给了用户自己定义使用。

1.2.4、应用设计

用户可能为每一个应用对象都创建一个任务,或者为所有的应用对象只创建一个任务。

当选择上述的设计的时候,下面是一些设计思路:

1.2.4.1、为许多应用对象创建一个OSAL任务

下面是正面和反面(pros&cons)的一些叙述:

-Pro:

接受一个互斥任务事件(开关按下或串口)时,动作是单一的。

-Pro:

需要堆栈空间保存一些OSAL任务结构。

-Con:

接收一个AF信息或一个AF数据确认时,动作是复杂的-----在一个用户任务上,分支多路处理应用对象的信息事件。

-Con:

通过匹配描述符(如:

自动匹配)去发现服务的处理过程更复杂-----为了适当的对ZDO_NEW_DSTADDR信息起作用,一个静态标志必须被维持。

1.2.4.2、为一个应用对

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2