zigbee入门经典.docx
- 文档编号:9352590
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:52
- 大小:246.48KB
zigbee入门经典.docx
《zigbee入门经典.docx》由会员分享,可在线阅读,更多相关《zigbee入门经典.docx(52页珍藏版)》请在冰豆网上搜索。
zigbee入门经典
学习ZigBee入门-1
2010-07-1701:
49
申明:
学习zigbee入门,参考了零基础学zigbee文档资料等。
Zstack情况:
采用TI的Zstack1.4.3协议,IAR7.30B版本
第一步:
安装Zstack
从TI官方网站上下载的Zstack为:
swrc072c.zip,我想这个压缩包大家都认识。
解压之后为:
ZStack-CC2430-1.4.3.exe文件。
这个安装文件大家都会了。
默认安装路径为:
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用户指导
这个文档的更新时间为:
2007年12月21日----应该还是比较新的版本。
由于本人英文的却有限,就不翻译了,浏览一遍,把大概意思说下就可以了:
1、介绍
1.1、适用范围
本文档适用于CC2430开发板(具体的板子不同也会有差别)
2、产品包描述
2.1、安装包内容
这个就是上面提到的的ZStack-CC2430-1.4.3.exe安装之后的所有内容了。
说白了就是包含Zstack开发所需要的所有软件和文档资料等。
2.2、开发板介绍
C51RF-M套件,由一个网管,4个电池板(节点)组成一个zigbee硬件系统,当然了,还需要仿真板子,USB下载线,这样就OK了,可以玩zigbee了。
2.3、电缆
也就是包含开发包所需要的电缆,如RS232串口线,USB线等等附属配件。
3、安装配置
3.1、主机配置
一台个人计算机,含有串口,USB接口就ok了
3.2、目标板需求
其实也是开发环境需求---IAREW8051。
目前需要的版本为7.30B及以上。
要想开发好点的话,就要弄一点上位机软件来配套使用,Z-TOOLS等(我就用了无线龙公司的C51RF-WSN监控软件V3.00)
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地址),这个地址通过软件SmartRF04FlashProgrammer已经写到了CC2430内部FLASH里面,用户也可以修改的,这个地址被写入到FLASH的0x1FFF8地址中,注意这个地址也可以更改的,通过些FLASH软件,一般xFFFFFFFFFFFFFFFF地址被认为是无效地址。
5、配置并试用Z-Stack
5.1、配置Z-Stack
这个详见5.3节。
5.2、逻辑类型
这里主要是介绍了ZIGBEE协议中的三种设备类型:
ZigBee协调者(ZC):
这个设备被配置为初始化并建立一个PAN网络(注意PANID的分配)
ZigBee路由器(ZR):
该设备被配置为加入一个存在的网络,可以加入一个协调求或路由器,
然后允许其他设备加入它,在网络中路有数据信息。
ZigBee终端节点(ZED):
该设备被配置为加入一个存在的网络,可以加入一个协调求或路由器。
5.3、建立样品应用设备:
SampleApp
基本上就是采用SampleApp应用中的例子来演示整个流程,就是采用一个协调器和一个或多个路由器来形成一个ZigBee网络演示。
在该例子中主要通过我手中的一套C51RF-M套件来完成,配合一点外围设备。
5.4、建立一个SampleLight协调器设备
首先要打开对应工程,C:
\TexasInstruments\ZStack-1.4.3-1.2.1\Projects\zstack\Samples\SampleApp\CC2430DB
\SampleApp,在工作窗口中选择CoordinatorEB,然后选择工程菜单(Project)下的全部编译(RebuildAll)选项,
然后选择工程菜单(Project)下的调试(Debug)选项,下载完之后就可以退出调试状态,通过选中调试菜单下的停止调试选项,按照此种方法下载至少两个RouterEB模块,就可以进行演示了。
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不同的值可以选择不同的频道,其频道如下所示。
改协议默认-DDEFAULT_CHANLIST=0x00000800 //11-0x0B
/*DefaultchannelisChannel11-0x0B*/
//Channelsaredefinedinthefollowing:
// 0 :
868MHz 0x00000001
// 1-10:
915MHz 0x000007FE
// 11-26:
2.4GHz 0x07FFF800
//
//-DMAX_CHANNELS_868MHZ 0x00000001
//-DMAX_CHANNELS_915MHZ 0x000007FE
//-DMAX_CHANNELS_24GHZ 0x07FFF800
//-DDEFAULT_CHANLIST=0x04000000//26-0x1A
//-DDEFAULT_CHANLIST=0x02000000//25-0x19
//-DDEFAULT_CHANLIST=0x01000000//24-0x18
//-DDEFAULT_CHANLIST=0x00800000//23-0x17
//-DDEFAULT_CHANLIST=0x00400000//22-0x16
//-DDEFAULT_CHANLIST=0x00200000//21-0x15
//-DDEFAULT_CHANLIST=0x00100000//20-0x14
//-DDEFAULT_CHANLIST=0x00080000//19-0x13
//-DDEFAULT_CHANLIST=0x00040000//18-0x12
//-DDEFAULT_CHANLIST=0x00020000//17-0x11
//-DDEFAULT_CHANLIST=0x00010000//16-0x10
//-DDEFAULT_CHANLIST=0x00008000//15-0x0F
//-DDEFAULT_CHANLIST=0x00004000//14-0x0E
//-DDEFAULT_CHANLIST=0x00002000//13-0x0D
//-DDEFAULT_CHANLIST=0x00001000//12-0x0C
-DDEFAULT_CHANLIST=0x00000800 //11-0x0B
/*DefinethedefaultPANID.
*Settingthistoavalueotherthan0xFFFFcauses
*ZDO_COORDtousethisvalueasitsPANIDand
*RoutersandenddevicestojoinPANwiththisID
*/
//-DZDAPP_CONFIG_PAN_ID=0xFFFF
-DZDAPP_CONFIG_PAN_ID=0xFFFF
DEFAULT_CHANLIST和ZDAPP_CONFIG_PAN_ID都作为IARIDE中的编译选项可以进行设置,在应用文件中的…\Projects\Tools\CC2430DB目录下的f8wConfig.cfg文件中有相应设置。
学习ZigBee入门-2
2010-07-1701:
51
Sample例子演示
上节基本上初步认识了Zstack的一些情况,今天继续我的学习,打开Sample例子看看,究竟ZIGBEE是怎么回事。
毫无疑问:
如果是第一次打开这个例子工程,肯定很迷糊,因为此时我迷糊了。
很多的文件夹,很多层,这么多文件夹,打开之后又有那么多文件,从何看起?
不要着急,特别是有些人拿到之后,啥都不知道的人第一个问题就是:
我要实现XXX,在哪修改或者在哪添加我的函数呢?
凡是我遇到这样的客户,我就可以肯定他技术部咋的。
就连我这个外行都知道,不把这些弄明白,就是实现XXX只需要修改一个字母,那也不知道在哪改啊?
所以我不急,但是我也理解很多客户,因为有时候项目催的比较急,毕竟老板都是外行嘛!
两条路:
1就是先看主函数,2就是看看TI提供例子说明文档没有。
我这里先看看主函数再说哈!
因为我就知道从主函数看起.没办法大概每个文件夹找啊,主函数的特征还是比较明明显的。
下面把主函数复制过来简单看下:
ZSEGintmain(void)
{
//Turnoffinterrupts--关闭中断
osal_int_disable(INTS_ALL);
//InitializeHAL --初始化HAL(硬件相关的)
HAL_BOARD_INIT();
//Makesuresupplyvoltageishighenoughtorun--电压检测,最好是能保证芯片能正常工作的电压
zmain_vdd_check();
//Initializestackmemory--初始化stack存储区
zmain_ram_init();
//InitializeboardI/O --初始化板载的IO口
InitBoard(OB_COLD);
//InitialzeHALdrivers --初始化HAL驱动
HalDriverInit();
//InitializeNVSystem --初始化NV条目
osal_nv_init(NULL);
//Determinetheextendedaddress决定长地址
zmain_ext_addr();
//InitializebasicNVitems--初始化NV系统
zgInit();
//InitializetheMAC --初始化MAC层
ZMacInit();
#ifndefNONWK
//SincetheAFisn'tatask,callit'sinitializationroutine
afInit();
#endif
#ifdefLCD_SUPPORTED
HalLcdInit();
#endif
//Initializetheoperatingsystem--初始化操作系统
osal_init_system();
//Allowinterrupts --允许中断
osal_int_enable(INTS_ALL);
//Finalboardinitialization --在初始化板子
InitBoard(OB_READY);
//HalLcdInit();
//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两个板子,其硬件是不一样的。
按键的定义---hal_key.h中,具体的功能定义在hal_key.c中
/-------------------hal_key.h---------------------/
/*Interruptoption-Enableordisable*/
#defineHAL_KEY_INTERRUPT_DISABLE 0x00//--禁止中断
#defineHAL_KEY_INTERRUPT_ENABLE 0x01//--中断使能
/*Keystate-shiftornornal*/
#defineHAL_KEY_STATE_NORMAL 0x00
#defineHAL_KEY_STATE_SHIFT 0x01
/*Switches(keys)*/
#defineHAL_KEY_SW_10x01//Joystickup
#defineHAL_KEY_SW_20x02//Joystickright
#defineHAL_KEY_SW_50x04//Joystickcenter
#defineHAL_KEY_SW_40x08//Joystickleft
#defineHAL_KEY_SW_30x10//Joystickdown
#defineHAL_KEY_SW_60x20//ButtonS1ifavailable
#defineHAL_KEY_SW_70x40//ButtonS2ifavailable
/*Joystick*///---游戏杆
#defineHAL_KEY_UP 0x01 //Joystickup
#defineHAL_KEY_RIGHT0x02 //Joystickright
#defineHAL_KEY_CENTER0x04//Joystickcenter
#defineHAL_KEY_LEFT 0x08 //Joystickleft
#defineHAL_KEY_DOWN 0x10//Joystickdown
//--------------------hal_key.c-----------------------------//
#defineHAL_KEY_DEBOUNCE_VALUE25//--去抖动值
#defineHAL_KEY_POLLING_VALUE 100 //--查询值
#ifdefined(HAL_BOARD_CC2430EB)||defined(HAL_BOARD_CC2430BB)//--EB/BBP0.6
#defineHAL_KEY_SW_6_ENABLE
#defineHAL_KEY_SW_6_PORT P0 /*PortlocationofSW1*/
#defineHAL_KEY_SW_6_BIT HAL_KEY_BIT1 /*BitlocationofSW1*///--SW1
#defineHAL_KEY_SW_6_SEL P0SEL /*PortSelectRegisterforSW1*/
#defineHAL_KEY_SW_6_DIR P0DIR /*PortDirectionRegisterforSW1*/
#defineHAL_KEY_SW_6_IEN IEN1 /*InterruptEnableRegisterforSW1*/
#defineHAL_KEY_SW_6_IENBIT HAL_KEY_BIT5 /*InterruptEnablebitforSW1*/
#defineHAL_KEY_SW_6_EDGE HAL_KEY_RISING_EDGE /*TypeofinterruptforSW1*/
#defineHAL_KEY_SW_6_EDGEBITHAL_KEY_BIT0 /*EdgeTypeenablebitSW1*/
#defineHAL_KEY_SW_6_ICTL PICTL /*PortInterruptControlforSW1*/
#defineHAL_KEY_SW_6_ICTLBITHAL_KEY_BIT3 /*InterruptenablebitforSW1*/
#defineHAL_KEY_SW_6_PXIFG P0IFG /*PortInterruptFlagforSW1*/
#defineHAL_KEY_P0INT_LOW_USED HAL_KEY_SW_6_BIT /*P0canonlybeenabled/disabledasgroupofhighorlownibble*/
#endif //--注意条件编译的灵活使用
#ifdefined(HAL_BOARD_CC2430BB)//--BB
#defineHAL_KEY_POINT_HIGH_USED0
#endif
#ifdefined(HAL_BOARD_CC2430EB)//--EB
#defineHAL_KEY_JOYSTICK_ENABLE
#defineHAL_KEY_JOY_CHN HAL_ADC_CHANNEL_6 //--ADC采样的通道6
#defineHAL_KEY_SW_5_ENABLE
#defineHAL_KEY_SW_5_PORT P0 /*PortlocationofSW5*/
#defineHAL_KEY_SW_5_BIT HAL_KEY_BIT5 /*BitlocationofSW5*/
#defineHAL_KEY_SW_5_SEL P0SEL /*PortSelectRegisterforSW5*/
#defineHAL_KEY_SW_5_DIR P0DIR /*PortDirectionRegisterforSW5*/
#defineHAL_KEY_SW_5_INP P0INP /*PortInputModeRegisterforSW5*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- zigbee 入门 经典