《2023年zigbee学习笔记.docx》由会员分享,可在线阅读,更多相关《2023年zigbee学习笔记.docx(61页珍藏版)》请在课桌文档上搜索。
1、关于ZlGBEE技术Zigbee的由来在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷。对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂,功耗大,距离近,组网规模太小等,而工业自动化对无线通信的需求越来越强烈。正因此,通过人们长期努力,Zigbee协议在2023年中通过后,于2023正式问世了。Zigbee是什么Zigbee是一个由可多到65000个无线数传模块组成的一个无线数传网络平台,十分类似现有的移动通信的CDMA网或GSM网,每一个Zigbee网络数传模块类似移动网络的一个基站,在整个网络范围内,它们之间可以进行互相通信;每个网络节点间的距离可以从标
2、准的75米,到扩展后的几百米,甚至几公里;此外整个Zigbee网络还可以与现有的其它的各种网络连接。例如,你可以通过互联网在北京监控云南某地的一个Zigbee控制网络。不同的是,Zigbee网络重要是为自动化控制数据传输而建立,而移动通信网重要是为语音通信而建立;每个移动基站价值一般都在百万元人民币以上,而每个Zigbee“基站”却不到1000元人民币;每个Zigbee网络节点不仅自身可以与监控对对象,例如传感器连接直接进行数据采集和监控,它还可以自动中转别的网络节点传过来的数据资料;除此之外,每一个Zigbee网络节点(FFD)还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的
3、子节点(RFD)无线连接。每个Zigbee网络节点(FFD和RFD)可以可支持多到31个的传感器和受控设备,每一个传感器和受控设备终可以有8种不同的接口方式。可以采集和传输数字量和模拟量。Zigbee技术的应用领域Zigbee技术的目的就是针对工业,家庭自动化,遥测遥控,汽车自动化、农业自动化和医疗护理等,例如灯光自动化控制,传感器的无线数据采集和监控,油田,电力,矿山和物流管理等应用领域。此外它还可以对局部区域内移动目的例如城市中的车辆进行定位.通常,符合如下条件之一的应用,就可以考虑采用Zigbee技术做无线传输:1 .需要数据采集或监控的网点多;2 .规定传输的数据量不大,而规定设备成本
4、低;3 .规定数据传输可性高,安全性高;4 .设备体积很小,不便放置较大的充电电池或者电源模块;5 .电池供电;6 .地形复杂,监测点多,需要较大的网络覆盖;7 .现有移动网络的覆盖盲区;8 .使用现存移动网络进行低数据量传输的遥测遥控系统。9 .使用GPS效果差,或成本太高的局部区域移动目的的定位应用。Zigbee技术的特点省电:两节五号电池支持长达6个月到2年左右的使用时间。可靠:采用了碰撞避免机制,同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突;节点模块之间具有自动动态组网的功能,信息在整个Zigbee网络中通过自动路由的方式进行传输,从而保证了信息传输的可靠性
5、。时延短:针对时延敏感的应用做了优化,通信时延和从休眠状态激活的时延都非常短。网络容量大:可支持达65OOO个节点。安全:ZigBee提供了数据完整性检查和鉴权功能,加密算法采用通用的AES-128o高保密性:64位出厂编号和支持AES-I28加密。Zigbee的发展前景Zigbee技术和RFID技术在2023年就被列为当今世界发展最快,市场前景最广阔的十大最新技术中的两个。关于这方面的报道,你只需在百度,或GOOGLE搜索栏中键入“Zigbee”,你就会看到大量的有关报道。总之,此后若干年,都将是Zigbee技术飞速发展的时期。Zigbee技术在我国的应用情况尽管,国内不少人已经开始关注Zi
6、gbee这们新技术,并且也有不少单位开始涉足Zigbee技术的开发工作,然而,由于Zigbee自身是一种新的系统集成技术,应用软件的开发必须和网络传输,射频技术和底层软硬件控制技术结合在一起。因而进一步理解这个来自国外的新技术,再组织一个在这几个方面都有丰富经验的配套的队伍,自身就不是一件容易的事情,因而,到目前为止,国内目前除了成都西谷曙光数字技术有限公司,真正将Zigbee技术开发成产品,并成功地用于解决几个领域的实际生产问题而外,尚未见到其它报道。Zigbee和现有移动网(GPRS,CDMA-IX)的比较1 .无网络使用费:使用移动网需要长期支付网络使用费,并且是按节点终端的数量计算的,
7、而Zigbee没有这笔费用;2 .设备投入低:使用移动网需要购买移动终端设备,每个终端的价格在人民币100O元上下,而使用Zigbee网络,不仅Zigbee网络节点模块(相称于基站)费用每只人民币不到100O元,并且,重要使用的网络子节点(相称于手机)的价格还要低得多;3 .通信更可靠:由于现有移动网重要是为手机通信而设计的,尽管CDMA-IX和GPRS可以进行数据通信,但实践发现,不仅通信数率比设计速率低很多,并且数据通信的可靠信也存在一定的问题。而Zigbee网络则是专门为控制数据的传输而设计的,因而控制数据的传输具有相称的保证。4 .高度的灵活性和低成本:一方面,通过使用覆盖距离不同,功
8、能不同的Zigbee网络节点,以及其它非Zigbee系统的低成本的无线收发模块,建立起一个Zigbee局部自动化控制网,(这个网络可以是星型,树状,网状及其共同组成的复合网结构)再通过互联网或移动网与远端的计算机相连,从而实现低成本,高效率的工业自动化遥测遥控;5 .比起现有的移动网来,尽管Zigbee仅仅只是一个局域网,覆盖区域有限,但它却可以与现有的移动网,互联网和其它通信网络相连接,将许多Zigbee局域网互相连成为一个整体。有效的解决移动网的盲区覆盖问题:我们知道,现有移动网络在许多地方存在盲区,特别是铁路,公路,油田,矿山等野外,更是如此。而增长一个移动基站或直放站的费用是相称可观的
9、,此时使用Zigbee网络进行盲区覆盖不仅经济有效,并且往往是现在唯一可行手段。Zigbee与现有数传电台的比较1 .可靠性高:由于Zigbee模块的集成度远比一般数传电台高,分离元器件少,因而可靠性更高;2 .使用方便安全:由于集成度高,比起一般数传电台来,Zigbee收法模块体积可以做得很小,并且功耗低,例如成都西谷公司远距离传输模块(2-5公里),最大发射电流比一个CDMA手机还要小许多,因而很容易集成或直接安放在到设备之中,不仅使用方便,并且在户外使用时,不容易受到破坏;3 .抗干扰力强,保密性好,误码率低:Zigbee收发模块使用的是2.4G直序扩频技术,比起一般FSK,ASK和跳频
10、的数传电台来,具有更好的抗干扰能力,和更远的传输距离;参阅我们网站中有关CDMA直序扩频技术的优越性讨论,和CyPreSS公司有关实验报道。4 .免费频段:Zigbee使用的是免费频段,而许多数传电台所使用的频段不仅需要申请,并且每年都需要向国家无委会交纳相称的频率使用费。5 .价格低:Zigbee数传模块的价格只有具有类似功能的数传电台的几分之一;(2.4G250kps,35公里距离DSSS数传模块每只不到200元人民币)提供低成本,高可靠性的无线数传互联网平台(涉及软件和硬件),以及相关技术支持,以满足不同客户的具体需要,就是我们的服务宗旨。学习ZstackZ1ZStaCk情况:本人采用的
11、是Tl的ZStackl.4.3协议,据说这个需要IAR7.3OB及以上版本,而目前市面上又没有破解,所以用的人很少,这也是我的机会!呵呵!(傻笑有点多,关键是WoRD里没有表情符号,不能正常表达我此时的心情!)正式开始:开始之前在说一句:从Tl网站上下载的ZStack的方法就不介绍了。否则就是从-1开始了而不是从0开始了一-一一我是这么觉得的!第一步:安装ZStack从TI官方网站上下载的Zstack为:SWrc072c.ziP,我想这个压缩包大家都结识。解压之后为:ZStaCk-CC243O1.4.3.exe文献。这个安装文献大家都会了。默认安装途径为:C:TexasInstrumerits
12、ZStack-1.4.3o安装之后在C:TexasInstrumentsXZStack-1.4.3目录下有各PDF文档为:GettingStartedGuideCC2430.pdf,不用多说,这个肯定是要看的。既然把它放到这么前面,说明它是入门中的入门文档。下面就简朴介绍下这个文档:1、介绍了安装ZStack-CC2430-1.4.3.exe需要的硬件软件条件:需要电脑、操作系统为WindOws2023或WindowsXPo至于更高或更低版本的本人没有尝试。2a、讲了安装流程。这个有点多余了,这年月哪个有电脑的没有安装上百上千次的软件啊?但是需要强调的是安装途径-一默认就好!3、接下来就是让我
13、们看的第一个文档为:AStart-ProgramsTeasInstrGuide,uments-ZStack-1.4.3-Z-StackUser,s既然让我看我就来看看这个文档!第二步:Z-StaCk用户指导这个文档的更新时间为:2023年12月21日-应当还是比较新的版本。由于本人英文的却有限,就不翻译了,浏览一遍,把大约意思说下就可以了:41、介绍1M1、合用范围本文档合用于CC2430ZigBee开发板-CC243OZDKo2、产品包描述(Tl提供的CC2430ZDK工具包)2.1、安装包内容A这个就是上面提到的的ZStaCkCC2430-1.4.3.eXe安装之后的所有内容了。说白了就是
14、包含ZStaCk开发所需要的所有软件和文档资料等。a2.2、开发板介绍A两块SmartRF04EB评估版,每个都可以用于CC2430EM评估模块。如图1-1所示:CC2430EMFigure1:ChipconSmartRF04EBEvaIuationBoardwithCC2430EMa5块CC2430DB评估板,如图1-2所AFi g ure 2: C h i peon C C 2 430 D B Dev e 1 opm e nt B OardIA O 个SOC_BB评估板,每个都可以用于CC2430EM或CC2431EM。如图13所Figure3:ChipconSOC_BBBatteryBo
15、ard2.3、电缆A也就是包含开发包所需要的电缆,如RS232串口线,USB线等等附属配件。3a、安装配置31、主机配置一台个人计算机-也就是电脑哈。我想玩嵌入式的应当都有,而现今但是时的配置就可以:下面是最低配置a.NET1.1架构WindowsXPServicePack1(i假如是WindoWSXP)Al个串口(也就是RS232接口)SIAUSB接口个人认为规定已经相称低了,假如你的电脑没有这配置,个人强烈建议立即扔掉!但是如今笔记本电脑很少有串口的,所以建议使用台式电脑,并且装机的时候一定要把串口引出,否则就比较麻烦了!3.2、目的板需求其实也是开发环境需求IAREW8051o目前需要的
16、版本为7.3OB及以上。规定还是比较高的,由于目前这个版本没有破解的。但是在上有3O天评估版下载。这个版本使用一定要小心,由于假如30天之后仅仅是卸载IAR重新安装是没有用的,一般最笨的办法是重新安装操作系统。解决这个问题最佳的办法就是买正版,呵呵,我想绝大多数像我这样的中国人都不会买的。除此之外最佳的办法就是破解,但是目前这个破解很少,都是需要收费的,并且都是国外网站才有,所以我们就只好盼望中国的高人抓紧破解并公开了!当然其他解决办法就相对来说很多了,比如安装后弄个还原点什么的;或者安装后我不断地使用(天天24小时),30天之后我觉得你也学会了,就不用IAR这个版本了,说不定就移植到低版本上
17、去了;等等类似之法我觉得都可以的。本人采用的是本办法中相对比较聪明的,也是一位高人告诉我的:装个虚拟操作系统,在虚拟操作系统下时间可以随时更改,让它一直停留在某个时间,重要30天的试用就比较慢长了,只要你不要忘掉改那时间。4、产品安装过程4.1、安装Z-StaCk这个也就是安装ZStack-CC2430-l.4.3.exe的过程。a4.2、IAR安装一般来说安装选择默认途径,但是自定义途径也不会出问题的。注意IAR版本7.30B及以上版本才可以运营1.4.3协议。4.3、设备IEEE地址每个CC2430DB,CC2430EM,和CC2431EM都已经排列了一个唯一的64位物理地址(IEEE地址
18、),这个地址已经写到了CC2430内部FLASH里面,在CC2430DB,CC2430EM,和CC243IEM板的底部有这个地址标签。这个地址被写入到FLASH的OXIFFF8地址中,注意这个地址也可以更改的,通过些FLASH软件L般OXFFFFFFFFFFFFFFFF地址被认为是无效地址。5配置并试用ZStack5. 1、配置 Z-StaC这 个k5.35.2、 逻辑类型这里重要是介绍了ZlGBEE协议中的三种设备类型:AZigBee协调者(ZC):这个设备被配置为初始化并建立一个PAN网络ZigBee路由器(ZR):该设备被配置为加入一个存在的网络,可以加入一个协调求或路由器,然后允许其他
19、设备加入它,在网络中路有数据信息。ZigBee终端节点(ZED):该设备被配置为加入一个存在的网络,可以加入一个协调求或路由器。5.3、建立样品应用设备:SamPIeAPPA基本上就是采用SamPIeAPP应用中的Demo例子来演示整个流程,就是采用一个协调器和一个或多个路由器来形成一个ZigBee网络演示。在该例子中重要通过SmartRF04EB板上的某些跳线来完毕设备类型的选型,当然这个方法在程序中是需要判断哪个按键被拉低或拉高,对于做个设计的来说应当是相称好理解的。申明:由于本人很穷,所以没钱买Tl原装开发包,当然也就没有上面提到的硬件,本人采用的是某家公司(为了避免广告,这里就不说明了
20、)的硬件系统。5.4、建立一个SamPIeLight协调器设备至于提到的硬件连接这里一律省略。无疑:一方面要打开相应工程,如图14所示:CC243ODBBE图14在工作窗口中选择DemoEB,如图15所示图1-5a然后选择工程菜单(ProjeCt)下的所有编译(RebuildAll)选项,如1-.XIAREmbeddedWorkbenchIDEFileEditViewToolsWindowHelp口aErAddFiles.SWomupcAddGroup.IDemoEBImportFileList.FilesEditConfigurations,.EJIElSampIeAp.-0AppHaLJH
21、AL-UMAC-CJMT-SDNWK-SDOSALHsLjProfiIe|S口Security-LServices|SCToolsH三zdo|口ZMacRemoveCreateNeWProject.AddExistingProject.Options.Alt+F7SourceCodeControlMakeCompileF7Ctrl+F7l-SOZM&inJsUJOutputRebuildAllCleanBatchbuild.F81-6然后选择工程菜单(P rOject)下的调试(DebUg)选项,如图1-7所XIAREmbeddedWorkbenchIDE0&cfirAddFiles.AddG
22、roup.ImportFileList.EditConfigurations.fc运困IWorkspaceDemoEBFilesElSampIeAp.Ps2JApp-HALI-BZlMAC-2)MTI-SlJNWKMZJOSAL二JProfile-Security口ServicesJTools2D0-S1JZMac-SZJZMainl-2)OutputRemoveCreateNewProject.AddExistingProject.Options.AltF7SourceCodeControlMakeF7CompileCtri+F7RebuildAllCleanBatchbuild.F8Sto
23、pBuildCtrl+BreakDebugCtrl+DFileEditViewToolsWindowHelpA1下载完之后就可以退出调试状态,通过选中调试菜单下的停止调试选项,如图1XIAREmbeddedWorkbenchIDEDa电GoF5E笏尊躺卧IOF L W TBreak* prFRResetFile Edit View ProjectChipcon Emulator Tools Window HelpFilesDebugvoid );void ); Vold );( void );SarnPIeAPP -. 3 口 APP HBLJHAL -DMAC H1LMT NWK 00OSA
24、L - Profile I-EDSecunty 口 Seivices 卜四口Tools ZDO -ZMac I O ZMqih l-0 口 OuiputStep OverFlOStep IntoFllStep OutNext Statement RUn to Cursor Autostep.Shift+FllStOP DebUgging CtrI+Shift+DRefreshSet Next Statementy after startup.MaCroS Loggingvoid );U130131132N TnYr Cff 二二:2上之:S osal int disable( INTS ALL
25、1-8按照此种方法下载至少两个CC243OEM模块,就可以进行DemO演示了。a6、Z-Stack示范略至于具体的示范流程,这里先不说了,由于本人采用的硬件与原装有点差异,即使按照这个方法下载仍然不能演示,由于我这个不能用跳线来选择设备类型。所以我必须进入程序把跳线判断程序进行简朴必要的修改才干演示。该文档介绍的演示结果及现象都是基于CHIPCc)N原厂评估板。7.PanID和通道(Channe1)选择ZigBee协议规范规定,一个14位的个域网标志符(PANID)来标记唯一的一个网络。Z-StaCk可以用两种方式由用户自己选择其PANID,当ZDAPP_CONFIG_PANJD值设立不为OX
26、FFFF时,那么设备建立或加入网络的PANID由ZDAPP_CONFIG_PAN_ID指定;假如设立ZDAPP_CONFIG_PAN_ID为OxFFFF;那么设备就将建立或加入它发现网络中的“最佳”的网络。关于这里提到的“最佳”的网络,我觉得也许是有些参数评估,只但是这里没有具体的介绍,在后续文档中应当有介绍的。在2.4G频段上,IEEE802.15.4/ZIGBEE规范规定了16各频道。用户可以通过选择DEFAULT_CHANLIST不同的值可以选择不同的频道,其频道如图1-9所示。改协议默认频道为OxB及OX(XX)Oo800。ChannelNumberBitMapFieldII0x000
27、00800120x00001000130x002000140x004000150x00008000160x00010000170x00020000180x040000190x00080000200x00100000210x00200000220x00400000230x00800000240x01000000250x02000000260x04000000DEFAULT_CHANLIST和ZDAPP_CONFIG_PANJD都作为IARIDE中的编译选项可以进行设立,在应用文献中的ProjectsToo1sCC2430DB目录下的f8wConf.Cfg文献中有相应设立,如图I-IO所示。f8w
28、Config.cfg-NotepadFileEditFormatViewHelp* Dpfault channel is Channel 11 - OxOR/ Channels are defined:868in the following:1 - 10 : 91511 - 26 : 2.4MHZ MHz GHZ0x000000010000007FE0x07FFF800/-DMAX_CHANNELS_868MHZ /-DMAX_CHANNELS_915MHZ /-DMAX_CHANNELS_24GHZ/ DDEAULT-CHANLIST-004000000 /-DDEFAULT-CHANLIS
29、T=0x02000000 /-DDEFAULT_CHANLIST=0x01000000 /-DDEFAULT_CHANLIST=Ox00800000 -DDEFAULT_CHANL 工 ST=OXoO400000 -DDEFAULT_CHANL 工 ST=OXOo200000 /-Ddefault-Chanlist=Oxooiooooo /-DDEFAULT_CHANLIST=Ox00080000 /-DDEFAULT_CHANLIST=Ox00040000 /-DDEFAULT-CHANLIST=OXOO2OOOO /-DDEFAULT-CHANLIST=0x00010000 -DDEFAU
30、LT_CHANL 工 ST=OXooOO8000 -DDEFAULT_CHANL 工 ST=OXoOOO4000 /-DDEFAULT-CHANLIST=000002000 /-Ddefault-Chanlist=Oxooooiooo0x00000001 0x000007FE 0x07FFF800频道列表/ / / / /2625242322212019181716/ 15/ 14/ 13 / 12-DDEFAULT_CHANL工ST=OXOo0D0800 / 11OxlA-0x19 -0x18 -0x17 -0x16 -0x15 -OX14 -0x13 -0x12-0X11 -OxlC -O
31、xOF -OxOE -OxOC -OxOC C)XOB* Define the default PAN ID.默认频道* SettingthistoavalueotherthanOxFFFFcausesa7DO_COORDtousethisvalueasitsPANTDand* RoutersandenddevicestojoinPANwiththisIDPAN ID设*/-DZDAPPCONF工G-Panud=OxFFFF图1-10学习ZStaCk之2上节基本上初步结识了ZStaCk的一些情况,今天继续我的学习,打开SamPIe例子看看,究竟ZIGBEE是怎么回事。毫无疑问:假如是第一次打开
32、这个例子工程,肯定很迷糊,由于此时我迷糊/ O对图2 1我简直是相称迷糊。A2-这么多文献夹,打开之后又有那么多文献,从何看起?不要着急,特别是有些人拿到之后,啥都不知道的人第一个问题就是:我要实现XXX,在哪修改或者在哪添加我的函数呢?凡是我碰到这样的客户,我就可以肯定他技术部咋的。就连我这个外行都知道,不把这些弄明白,就是实现XXX只需要修改一个字母,那也不知道在哪改啊?所以我不急,但是我也理解很多客户,由于有时候项目催的比较急,毕竟老板都是外行嘛!两条路:1就是先看主函数,2就是看看TI提供例子说明文档没有。我这里先看看主函数再说哈!由于我就知道从主函数看起.没办法大约每个文献夹找啊,主
33、函数的特性还是比较明明显的,见图2-2所示:专口ZMain- E)chipcon_banked_code_s.- 园chipcon_cexit.s51- 画chipcon_cstartup.s51- S画OnBoard.c- 由QnBoard.hZMain.cA图2下面把主函数复制过来简朴看下:ZSEGintmain(VOid)Aa/Turnoffinteupts-关闭中断AOSaLint_diSab1e(INTS_ALL);/InitiaIizeHAL-一一一一初始化HAL,关于HAL是什么我想后面会有介绍的。HAL_BOARD_INIT();a/Makesuresupp1yvoltagei
34、shighenoughtorUn-电压检测,最佳是能保证芯片能正常工作的电压AZmain_Vdd_check();/Initializestackmemory一一-一一一-一初始化stack存储区zmain_ram_init();/Initia1izeboardI/O初始化板载IOlnitBoard(OB_COLD)泠Initia1zeHALdrivers一初始化HAL驱动AHaIDriVerInit();aInitializeNVSystem初始化NV系统,NV是什么后面我想也会有介绍的AOSal_nv_init(NULL);/Determinetheextendedaddress-拟定扩展
35、地址(64位IEEE/物理地址)Zmain_eXt_addr();/Initia1izebasicNVitems-初始化基本NV条目zglnit();/InitializetheMAC-初始化MAOZMacInit();A#ifndefNONWK/SincetheAFisntatask,callit,sinitializationroutineaflnit();#endif/Initia1izetheoperatingsystem-一初始化操作系统,看样子这里面尚有OS,麻烦了!aosaIJnit_system();/Allowinterrupts-一一允许中断osal_int_enable(
36、INTS_ALL);aFinalboardinitialization-最后的版在初始化InitBoard(OB_READY)淮Displayinformationaboutthisdevice-._一显示设备信息zmain_dev_infb();*DisplaythedeviceinfoontheLCD*/-一一一液晶支持显示#ifdefLCD_SUPP0RTEDAZmain_1cd_init();#endifosa1_start_system();/NoReturnfromhere一一这里没有返回,大约是进入OS了。/main()可以看到基本上都是初始化函数,由于函数名称都基本上带了ini
37、t字样的,呵呵,个人觉得TI的变成习惯比我好,一看名称就知道大约功能了。所以这里也奉劝各位像我这样菜鸟级的初学者,一开始一定就要养成规范化编程的习惯,据说这样维护以及以后升级或者移植兼容性都比较好。我就先不管各个初始化函数是怎么实现的,我先看看各个功能是什么,现掌握整体功能在细化,我觉得这样的学习方法比较好,由于代码是在太多了,从一开始就逐句看,我敢保证没几个人有耐心看完看明白!幸好每个初始化函数都有一句说明,虽然是英文的,但是理解起来一点都不难的。关于每个函数的功能我就直接写在上面的程序里面,节省纸张哈!一句话:主函数的功能就是初始化!主函数看完了又开始模糊了,又从何看起呢?在无从下手之际,
38、只有去寻求Tl说明文档的帮助了。上节不是漏掉了内容,是关于演示结果的,这里做上补充,怕由于缺调一点后面碰到什么不理解的就惨了!SamPle例子演示演示现象:师结识硬件一-按键和LED上节提到了EM和DB两个板子,其硬件是不同样的。按键EM就有5各SWISW5,而DB只有1各方向键,但是他们有个相应关系,如图2-3所示.SWITCHJOYSTICKSWlU400positionSW2rightpositionSW3downpositionSW4leftpositionSW5pressdownA图2-31.ED数量和颜色也不同样,EM有四个LED,如图2-4;而DB只有两个,2-5图如LEDLAB
39、ELCOLORLEDl1GreenLED23YellowLED33YellowLED41GreenLEDLABELCOLORLEDlDlGreenLED21)2RedLED3D2RedLED4DlGreen2-如图25关于上面几个图2-4/5中出现的LEDX事实上是程序中出现的关键字。A2、初始化64位IEEE地址事实上在主函数中有这么个初始化函数的:Zmain_ext_addr()。这里说假如地址复位为OXFFFFFFFFFFFFFFFF的话,那么就会不断的闪烁LED1,一直等到按键SW5按下后程序才干继续运营,意思就是说按下SW5后就把无效的地址初始化为有效地物理地址了,这个应当是程序上实
40、现的,那么就来看看相应的程序zmain_ext_addr。/*a*fnZmainext_addr*briefMakesextendedaddressifnoneexists.拟定扩展地址是有效的*returnnone*stati cZSEG voidzmai n _e xr( vo i d)ant8uint8led;Ul/ Init i aliz en v item ini1 _nv_read (tennt8mp;xa泠UintI6toD;ex t e n d e d address i n NV初始化NV里的扩载地址AOSaLt (ZCD_NV_EXTADDR, Z_EXTADDR_LEN,
41、 NULL ); AoSaZC D_NV_EXT AD DR, O, Z_EX T ADDR_LEN,&aE xedddress/Checkforuninitializedvalue(erasedEEPROM=OxFF)检查是否为无效值(地址)AXad=(Uint8*)&aExtendedAddress;AfOr(i=0;iif(*xad+!=OxFF)return;一一-假如有一个字节不为OXFF,那么该地址有效返回a#ifdefZDO_COORDINAToRAtmp=Ox1O;A#elseAtmp=0x20;#endifA/Initializewithasimplepattern-简朴初始
42、化扩展地址Xad=(uint8*)&aEXtendedAddress;Afor(i=0;i/IfnoSUPPOrtforZ-TOOIseria1I/Oa/Writetemporary64-bitaddresstoNV些临时的64位物理地址进入NVosal_nv_write(ZCD_NV_EXTADDR,0,Z_EXTADDR_LEN,&aExtendedAddress);#endif从程序中可以看出,一开始就检测FLASH中的物理地址,由于这个地址在FLASH中是固定的存储空间,一旦为有效地址就退出函数,一旦为无效地址(OxFFFFFFFFFFFFFFFF),那么就对其物理地址进行简朴的初始化并检测SW5按键。还是比较好理解的!A3、运营例子在这里提到了跳线,由于本人采用的非Tl原装硬件,没有该跳线,所以必须对程序进行修改,否则检测不到跳线,连ZIGBEE的设备类型都不能拟定,肯定不能正常运营了。所以这里就先暂时不说了,这里要说的是一切都正常的情况下,例子的验尸结果。小小跳跃一下。不然学习一直没有进展很麻烦的!协调器:上电运营,地址检测如上面介绍的情况,通过之后呢一一一就进行通道扫描,此时LEDl闪烁,一旦协调器成功建立网络,此时LEDl停止闪烁,而LED3被点亮。路由器:上电运营,仍然是地址检测在前。之后就是通道扫描寻求是否又存在的网络,此时LEDI闪烁,一旦检