《2023年zigbee学习笔记.pdf》由会员分享,可在线阅读,更多相关《2023年zigbee学习笔记.pdf(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、关于ZI GBEE技术Zigb e e的由来在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷。对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂,功耗大,距离近,组网规模太小等,而工业自动化对无线通信的需求越来越强烈。正因此,通过人们长期努力,Z ig bee协 议 在2023年中通过后,于2 02 3正式问世了。Z i g bee是什么Z i gbee是一个由可多到650 0 0个无线数传模块组成的一个无线数传网络平台,十分类似现有的移动通信的CDMA网 或GSM网,每一个Z ig b ee网络数传模块类似移动网络的一个基站,在整个网络范围内,它们之间可以进
2、行互相通信;每个网络节点间的距离可以从标准的7 5米,到扩展后的几百米,甚至几公里;此外整个Z ig b e e网络还可以与现有的其它的各种网络连接。例如,你可以通过互联网在北京监控云南某地的一个Zig b ee控制网络。不同的是,Zigbee网络重要是为自动化控制数据传输而建立,而移动通信网重要是为语音通信而建立;每个移动基站价值一般都在百万元人民币以上,而每个Zigbee“基站”却不到1 00 0元人民币;每个Zigbee网络节点不仅自身可以与监控对对象,例如传感器连接直接进行数据采集和监控,它还可以自动中转别的网络节点传过来的数据资料;除此之外,每一个Zigbee网络节点(FFD)还可在
3、自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的子节点(RFD)无线连接。每 个Z i gbee网 络 节 点(FFD和RFD)可以可支持多到31个的传感器和受控设备,每一个传感器和受控设备终可以有8种不同的接口方式。可以采集和传输数字量和模拟量。Z i g bee技术的应用领域Zig b e e 技术的目的就是针对工业,家庭自动化,遥测遥控,汽车自动化、农业自动化和医疗护理等,例如灯光自动化控制,传感器的无线数据采集和监控,油田,电力,矿山和物流管理等应用领域。此外它还可以对局部区域内移动目的例如城市中的车辆进行定位.通常,符合如下条件之一的应用,就可以考虑采用Zigbee技术做无
4、线传输:1 .需要数据采集或监控的网点多;2.规定传输的数据量不大,而规定设备成本低;3.规定数据传输可性高,安全性高;4.设备体积很小,不便放置较大的充电电池或者电源模块;5.电池供电;6.地形复杂,监测点多,需要较大的网络覆盖;7.现有移动网络的覆盖盲区;8.使用现存移动网络进行低数据量传输的遥测遥控系统。9.使用GPS效果差,或成本太高的局部区域移动目的的定位应用。Zigb e e 技术的特点省电:两节五号电池支持长达6 个月到2 年左右的使用时间。可靠:采用了碰撞避免机制,同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突;节点模块之间具有自动动态组网的功能,信息
5、在整个Z i gbee网络中通过自动路由的方式进行传输,从而保证了信息传输的可靠性。时延短:针对时延敏感的应用做了优化,通信时延和从休眠状态激活的时延都非常短。网络容量大:可支持达6 5 0 0 0 个节点。安全:ZigBee提供了数据完整性检查和鉴权功能,加密算法采用通用的AES-128o高保密性:6 4位出厂编号和支持A ES-1 2 8加密。Z ig b e e的发展前景Z igb e e技术和R F ID技术在20 2 3年就被列为当今世界发展最快,市场前景最广阔的十大最新技术中的两个。关于这方面的报道,你只需在百度,或G 0OGLE搜索栏中键入“Zi g bee”,你就会看到大量的有
6、关报道。总之,此后若干年,都将是Zigbe e技术飞速发展的时期。Z ig b e e技术在我国的应用情况尽管,国内不少人已经开始关注Z i g b ee这们新技术,并且也有不少单位开始涉足Z ig b e e技术的开发工作,然而,由于Z ig b e e自身是一种新的系统集成技术,应用软件的开发必须和网络传输,射频技术和底层软硬件控制技术结合在一起。因而进一步理解这个来自国外的新技术,再组织一个在这几个方面都有丰富经验的配套的队伍,自身就不是一件容易的事情,因而,到目前为止,国内目前除了成都西谷曙光数字技术有限公司,真正将Zig b e e技术开发成产品,并成功地用于解决几个领域的实际生产问
7、题而外,尚未见到其它报道。Z ig b ee和现有移动网(G PR S,CDMA-1 X)的比较1.无网络使用费:使用移动网需要长期支付网络使用费,并且是按节点终端的数量计算的,而Z ig b e e没有这笔费用;2.设备投入低:使用移动网需要购买移动终端设备,每个终端的价格在人民币100 0元上下,而使用Z ig b e e网络,不仅Z i g b e e网络节点模块(相称于基站)费用每只人民币不到1 00 0元,并且,重要使用的网络子节点(相称于手机)的价格还要低得多;3.通信更可靠:由于现有移动网重要是为手机通信而设计的,尽 管CDMA-IX和GPRS可以进行数据通信,但实践发现,不仅通
8、信数率比设计速率低很多,并且数据通信的可靠信也存在一定的问题。而Z igbee网络则是专门为控制数据的 传 输 而 设 计 的,因 而 控 制 数 据 的 传 输 具 有 相 称 的 保 证。4.高度的灵活性和低成本:一方面,通过使用覆盖距离不同,功能不同的Zigb ee网络节点,以及其它非Zigbe e系统的低成本的无线收发模块,建立起一个Zigb e e局部自动化控制网,(这个网络可以是星型,树状,网状及其共同组成的复合网结构)再通过互联网或移动网与远端的计算机相连,从而实现低成本,高效率的工业自动化遥测遥控;5.比起现有的移动网来,尽 管Zigb e e仅仅只是一个局域网,覆盖区域有限,
9、但它却可以与现有的移动网,互联网和其它通信网络相连接川各许多Zig bee局域网互相连成为一个整体。有效的解决移动网的盲区覆盖问题:我们知道,现有移动网络在许多地方存在盲区,特别是铁路,公路,油田,矿山等野外,更是如此。而增长一个移动基站或直放站的费用是相称可观的,此时使用Zigbee网络进行盲区覆盖不仅经济有效,并且往往是现在唯一可行手段。Z i g be e与现有数传电台的比较1.可靠性高:由于Zigbee模块的集成度远比一般数传电台高,分离元器件少,因而可靠性更高;2.使用方便安全:由于集成度高,比起一般数传电台来,Zigbe e收法模块体积可以做得很小,并且功耗低,例如成都西谷公司远距
10、离传输模块(2-5公里),最大发射电流比一个CDMA手机还要小许多,因而很容易集成或直接安放在到设备之中,不仅使用方便,并且在户外使用时,不容易受到破坏;3.抗干扰力强,保密性好,误码率低:Z igbe e收发模块使用的是2.4 G直序扩频技术,比起一般FSK,ASK和跳频的数传电台来,具有更好的抗干扰能力,和更远的传输距离;参阅我们网站中有关CDMA直序扩频技术的优越性讨论,和C y p res s公司有关实验报道。4.免费频段:Zigbee使用的是免费频段,而许多数传电台所使用的频段不仅需要申请,并且每年都需要向国家无委会交纳相称的频率使用费。5.价格低:Z ig b ee数传模块的价格只
11、有具有类似功能的数传电台的几分之一;(2.4G;25 0 kps,35公里距离D SSS 数传模块每只不到2 0 0元人民币)提供低成本,高可靠性的无线数传互联网平台(涉及软件和硬件),以及相关技术支持,以满足不同客户的具体需要,就是我们的服务宗旨。学习Zs t a c k 之 1Z s tac k 情况:本人采用的是T I的Zs t ack 1.4.3协议,据说这个需要IAR7.3 0 B及以上版本,而目前市面上又没有破解,所以用的人很少,这也是我的机会!呵呵!(傻笑有点多,关 键 是WOR D里没有表情符号,不能正常表达我此时的心情!)正式开始:开始之前在说一句:从T I网站上下载的Z s
12、t a c k的方法就不介绍了。否则就是从-1开始了而不是从0开始了一-一一我是这么觉得的!第一步:安装Zs t ack从T I官方网站上下载的Z s tack为:swr c 072c.zi p,我想这个压缩包大家都结识。解压之后为:Z S tac k-CC 243 0-1.4.3.e x e文献。这个安装文献大家都会了。默认安装途径为:C:Texas Ins t r u mentsZS t ack-1.4.3o安装之后在 C:TexasInstrum entsZStack-1.4.3 目录下有各 PDF 文档为:Gett i ng St arted Guide CC 2 430.pdf,不用
13、多说,这个肯定是要看的。既然把它放到这么前 面,说 明 它 是 入 门 中 的 入 门 文 档。下 面 就 简 朴 介 绍 下 这 个 文 档:1、介 绍 了 安 装ZSta c k-CC2430-1 .4.3.e x e需要的硬件软件条件:需要电脑、操作系统为Wind o w s 2023或Wi n dows XP。至于更高或更低版本的本人没有尝试。2A、讲了安装流程。这个有点多余了,这年月哪个有电脑的没有安装上百上千次的软件啊?但是需要强调的是安装途径一一默认就好!3、接下来就是让我们看的第一个文档为:AS t art-Pr o gramsT e x a s Instru ments-Z
14、Sta c k-1.4.3-Z-S tack U s e r 9sGuide,既然让我看我就来看看这个文档!第二步:Z-Stack用户指导这个文档的更新时间为:2023年 1 2 月 2 1 日-应当还是比较新的版本。由于本人英文的却有限,就不翻译了,浏览一遍,把大约意思说下就可以了:A 1、介 绍 1 机 1 、合 用 范 围本 文 档 合 用 于 C C 2 4 3 0 Z i gB ee开 发 板 一-CC243 0 Z D K 2、产 品 包 描 述(TI 提 供 的 C C2430Z D K 工 具 包)2.1、安装包内容这个就是上面提到的的Z Stack-CC24 3 0-1.4.
15、3.e x e 安装之后的所有内容了。说白了就是包含Z s ta c k 开发所需要的所有软件和文档资料等。A2.2、开发板介绍A两 块 Sm artR F04EB评估版,每个都可以用于CC243 0 E M 评估模块。如 图 1-1 所示:Fig u re 1:Ch i p co n Sm a rtRF04E B Ev a luati o n B oard with CC2430 EM45 块C C 2 4 3 0 D B 评估板,如 图 1-2 所示鸿aFi g ure 2:C h i peon C C 2 430 D B Dev e 1 opm e nt B oard 1 A 0 个SO
16、C_BB 评估板海个都可以用于CC2 430EM或CC2431 EM。如 图1-3所示:F i gur e 3:Chi p co n SOC_BB B atter y B oard2.3、电缆A也就是包含开发包所需要的电缆,如RS232串口线,USB线等等附属 配 件。3 安 装 配 置3 1、主 机 配 置一台个人计算机-也就是电脑哈。我想玩嵌入式的应当都有,而现今但是时的配置就可以:下面是最低配置A.NET 1.1 架 构Window s XP S e rvic e Pack 1 (i 假如是 Wi n dow s X P)A 1 个串 口(也就是 RS23 2 接口)s 1A USB 接
17、口个人认为规定已经相称低了,假如你的电脑没有这配置,个人强烈建议立即扔掉!但是如今笔记本电脑很少有串口的,所以建议使用台式电脑,并且装机的时候一定要把串口引出,否则就比较麻烦了!3.2、目的板需求其实也是开发环境需求-IA R E W 8 0 51。目前需要的版本为7.3O B 及以上。规定还是比较高的,由于目前这个版本没有破解的。但是在上有3 0 天评估版下载。这个版本使用一定要小心,由于假如3 0 天之后仅仅是卸载IA R 重新安装是没有用的,一般最笨的办法是重新安装操作系统。解决这个问题最佳的办法就是买正版,呵呵,我想绝大多数像我这样的中国人都不会买的。除此之外最佳的办法就是破解,但是目
18、前这个破解很少渚B 是需要收费的,并且都是国外网站才有,所以我们就只好盼望中国的高人抓紧破解并公开了!当然其他解决办法就相对来说很多了,比如安装后弄个还原点什么的;或者安装后我不断地使用(天天2 4 小时),30天之后我觉得你也学会了,就不用IA R这个版本了,说不定就移植到低版本上去了;等等类似之法我觉得都可以的。本人采用的是本办法中相对比较聪明的,也是一位高人告诉我的:装个虚拟操作系统,在虚拟操作系统下时间可以随时更改,让它一直停留在某个时间,重要30天的试用就比较慢长了,只要你不要忘掉改那时间。4、产品安装过程4.1、安装Z-Stack这个也就是安装ZSta c k-CC2430-l.4
19、.3.ex e的过程。劣 4.2、IAR安装一般来说安装选择默认途径,但是自定义途径也不会出问题的。注意I AR版 本 7.30 B及 以 上 版 本 才 可 以 运 营 1.4.3 协议。4.3、设备IEEE地址每个CC2430DB,CC2430EM,和 CC243 1 EM 都已经排列了一个唯一的64位物理地址(IEEE地址),这个地址已经写到了 CC 2 4 30内部F LASH里面,在 CC2430DB,CC24 30EM,和 CC2431EM板的底部有这个地址标签。这个地址被写入到F L A S H 的 0X1FFF8地址中,注意这个地址也可以更改的,通过些FLASH软件,一般0 x
20、FF FFFFF FFFFFFFFF地址被认为是无效 地 址。5 配 置 并 试 用 Z Stack5.1、配置 Z-Stac k这 个 详 见 5.3 节。5.2、逻辑类型这里重要是介绍了 ZIG B E E 协议中的三种设备类型:AZ i gB e e 协调者(ZC):这 个 设 备 被 配 置 为 初 始 化 并 建 立 一 个 P A N 网络Z i g B e e 路由器(ZR):该设备被配置为加入一个存在的网络,可以加入一个协调求或路由器,然后允许其他设备加入它,在网络中路有数据信息。Z i gB ee终端节点(ZED):该设备被配置为加入一个存在的网络,可以加入一个协 调 求 或
21、 路 由 器。5.3、建立样品应用设备:SampleAp p A基本上就是采用S a mpleAp p 应用中的 Demo例子来演示整个流程,就是采用一个协调器和一个或多个路由器来形成一个Zi g Be e 网络演示。在该例子中重要通过S martRF 0 4EB板上的某些跳线来完毕设备类型的选型,当然这个方法在程序中是需要判断哪个按键被拉低或拉高,对于做个设计的来说应当是相称好理解的。申明:由于本人很穷,所以没钱买T I原装开发包,当然也就没有上面提到的硬件,本人采用的是某家公司(为了避免广告,这里就不说明了)的硬件系统。5.心、建立一个 SampleLight协调器设备至于提到的硬件连接这
22、里一律省略。无 疑:一 方 面 要 打 开 相 应 工 程,如图1 4所 示:M回区 CC2430DB图1 4 在 工 作 窗 口 中 选 择 D e moEB,如图1-5 所示图 1-5A然后选择工程菜单(Project)下的所有编译(Rebuild A ll)选项,如图6所不1-6,港 IAR Embedded Workbench IDEFile Edit/iewProjectTools Window HelpD 4 Q第S Add Files.Add Group.Import File List.Edit Configurations.(WorkspaceiHDemoEBFiles日 I
23、SlSampleAp.p-HCjAppP-EDHALd MACl-SCJM T|-S O N W K口 OSAL-S D Profile-S CJ Security-S 口Servicesh-SDToolsHSCIZDO-E D Z M a cRemoveCreate New Project.Add Existing Project.Options.Alt+F7Source Code Control Make F7Compile Ctrt+F7-E)OZMain口 OutputRebuild AllCleanBatch build.F8图然后选择工程菜单(P r o j e ct)下 的 调
24、试(Debug)选项,如 图1-7所示/IAR Embedded Workbench IDEDebug Ctrl+DFile Edit View|Tools WindowHelp|口 30 O|Add Files.I WorkspaceAdd Group.DemoEBImport File List.FilesEdit Configurations.B 0Sam pleAp.l-E D A p p-0 0 HALH s d MAC门 口 MTl-S D IM W KI-S-IO S A L|S LJ Profile|S D Security|E 1 Cj ServicesRemoveCreat
25、e New Project.Add Existing Project.Options.Alt+F7Source Code Control卜田口 ToolsI-E D 2 D 0|-E lD Z M acH OZMainL-S Q OutputMakeCompileRebuild AllCleanF7Ctrl+F7Batch build.F8Stop BuildCtrl+BreakA图I7下载完之后就可以退出调试状态,通过选中调试菜单下的停止调试选项,如 图 1示8所X IAR Embedded Workbench IDEFile Edit View Project|Chipcon Emulat
26、or Tools Window Help 3 电Go F5BreakReset1国 踏喈 命1I 1 -*/Turn o f f interru p t s-一一关闭中断AosalJ n t_di s a b 1 e(INTS_ALL);/I niti a lize H A L 一一一初始化H A L,关于H A L是什么我想后面会有介绍 的。H AL_ B OA RD_ I NIT();A/M a ke s ure s up p 1 y volta g e i s h i gh enough to r un-电压检测,最佳是能保证芯片能正常工作的电压Azma i n_v dd_check()
27、;/I nitialize s t a c k me m o ry-一 -初始化 s tack 存储区zm a in_ram _ in i t();/I nitia 1 i z e bo a r d I/O-.初始化板载 lOInitBo a rd(0B_COLD)泠 Init i a 1 ze HAL d rive r s-一初始化 H AL 驱动AH a IDr i v e ri n it()泠 In i tiali z e NV System-.初始化 NV 系统,N V 是什么后面我想也会有介绍的AOS a l_nv_ i ni t(NULL);/De t erm i n e the
28、exten d e d address-拟定扩展地址(6 4 位 IEEE/物 理 地 址)zmai n _e x t_a d d r();/In i t i a 1 ize basi c NV i t ems -.初始化基本 NV 条目zglni t();/Initiali ze th e M A 一 一-初始化 MAOZM a c Init();A#ifnde f NON W K/Sin c e the A F i s n*t a t a s k,call it9 s i nitial i zation r o utineaflnit();#e n dif/Initi a 1 i ze t
29、he ope r ating s y stem-一初始化操作系统,看样子这里面尚有 0 S,麻烦 了.o s a l_ini t _sy s tem();/Allo w int e r r upts-允 许 中 断o s al_in t _enable(INTS_A L L);A/F inal b o ar d in it ializat i o n-最 后 的 版 在 初 始 化InitB o a rd(0B_ READY)净 Displ a y inf o r m a tio n abou t this de vice-显示设备信息zmain _ d ev _ i n fo();/*Dis
30、 p la y t he de v i c e inf o on th e LCD*/-液晶支持显示#i f def LCD_SUP P 0 RTE D AZma i n_ 1 cd _ i n i t();#endifosa 1 _ s ta r t_s y stem();/No Re t urn fr om h e re-一-这里没有返回,大约是进入O S 了。/main()可以看到基本上都是初始化函数,由于函数名称都基本上带了 in i t字样的,呵呵,个 人 觉 得T I的变成习惯比我好,一看名称就知道大约功能了。所以这里也奉劝各位像我这样菜鸟级的初学者,一开始一定就要养成规范化编程的
31、习惯,据说这样维护以及以后升级或者移植兼容性都比较好。我就先不管各个初始化函数是怎么实现的,我先看看各个功能是什么,现掌握整体功能在细化,我觉得这样的学习方法比较好,由于代码是在太多了,从一开始就逐句看,我敢保证没几个人有耐心看完看明白!幸好每个初始化函数都有一句说明,虽然是英文的,但是理解起来一点都不难的。关于每个函数的功能我就直接写在上面的程序里面,节省纸张哈!一句话:主函数的功能就是初始化!主函数看完了又开始模糊了,又从何看起呢?在无从下手之际,只有去寻求T I说明文档的帮助了。上节不是漏掉了内容,是关于演示结果的,这里做上补充,怕由于缺调一点后面碰到什么不理解的就惨了!Samp 1 e
32、例子演示演示现象:1A、结识硬件 -按键和LED上节提到了 EM和D B两个板子,其硬件是不同样的。按 键EM就 有5各SW 1-SW 5,而D B只 有1各方向键,但是他们有个相应关系,如 图2-3所示.SWITCHJOYSTICKSW1V400 positionSW2right positionSW3down positionSW4left positionSW5press downLED数量和颜色也不同样,EM 有四个LED,如图2-4;而 DB只有两个,2-5图如如LEDLABELCOLORLED!IGreenLED23YellowLED33YellowLED41Green图2-如图2
33、 5LEDLABELCOLORLEDIDIGreenLED2D2RedLED3D2RedLED4DIGreen关于上面几个图2-4/5 中出现的L E D x事实上是程序中出现的关键字。劣 2、初始化64位 IEEE地址事实上在主函数中有这么个初始化函数的:z main_ext_ a d d r()。这里说假如地址复位为OxFFFFFFFFFFFFFFFF的话,那么就会不断的闪烁LED1,一直等到按键SW 5按下后程序才干继续运营,意思就是说按下SW 5后就把无效的地址初始化为有效地物理地址了,这个应当是程序上实现的,那么就来看 看 相 应 的 程 序 zmain _ ext_ a ddr。/
34、*f n zma i n ext a d d r*b r i e f Makes extende d address if none exists.拟定扩展地址是有效的*r et u r n n one*stati cZSEG voidzmai n _e x t _ add r(vo i d)A uint8iuint8led;uint8tmp;ui nt 8*xa d;Auintl6 AtoD;/Init i aliz e ex t e n d e d address i n NV 初始化 NV 里的扩载地址AO s al_n v _item_ini t(ZCD_NV_EXTADDR,Z_EX
35、TADDR_ L EN,NULL);osa1 _nv_read(ZC D _NV_ E X T AD D R,0,Z_EX T ADDR_LEN,&aE xten ded A ddress)/Ch e ck fo r u nini t ial i zed v alue(e r ased E E PROM=Ox F F)检查是否为无效值(地址)Axad=(u int8*)&a E x te n d ed Ad d ress;-*f o r(i=0;i Z_EXTADDR_LEN;i+”i f(*x a d+!=Ox F F)return;-假如有一个字节不为OxFF,那么该地址有效返回A#i f
36、def ZDO_COORDINA TORt m p=Ox 1 O;.*#elseAtmp=0 x2 0;#endif*/Ini t ializ e w i th a s i mpl e p a t te r n-简朴初 始 化 扩 展 地 址x a d=(uint8*)&a E x te n d e d A d d re ss 泠 for(i=0;i M i c roWa i t(62500)冷 HalLedSet(HAL_ L E D _1,HAL _ LED _ M 0 DE _ OFF);/Plu g At o D da t a i nto lower b y t esA t oD=H
37、a lAd c Re a d(HAL_ADC_CHANN E L_7,HAL_ A DC_ RES OLUTION0);Axad=(uint 8*)&a Ex t e n dedAd d r ess;A*x a d+=LO_UINT 16(A t o D);*xad=H LUINT1 6(AtoD);#if!de fined(ZTOOL_PO RT)|d e f i n e d(ZPORT)|defined(NV_ RE STORE?-/If no sup p ort f o r Z-Too 1 se r ia 1 I/O A/Writ e t emporary 64-bit ad d r e
38、 s s t o N V 些临时的6 4 位物理地址进入NVosal_n v_wr i te(ZCD_NV_EXTADDR,0,Z_EXTADD R_LEN,&aEx t e ndedAddres s);#e n di f从程序中可以看出,一开始就检测FLASH中的物理地址,由于这个地址在FLA SH 中是固定的存储空间,一旦为有效地址就退出函数,一旦为无效地址(OxFFF FFFFFFFFFFFFF),那么就对其物理地址进行简朴的初始化并检测SW5 按键。还是比较好理解的!A 3、运营例子在这里提到了跳线,由于本人采用的非T I 原装硬件,没有该跳线,所以必须对程序进行修改,否则检测不到跳线
39、,连 ZIGBEE的设备类型都不能拟定,肯定不能正常运营了。所以这里就先暂时不说了,这里要说的是一切都正常的情况下,例子的验尸结果。小小跳跃一下。不然学习一直没有进展很麻烦的!协调器:上电运营,地址检测如上面介绍的情况,通过之后呢一一一就进行通道扫描,此 时LED 1闪烁,一旦协调器成功建立网络,此 时LED1停止闪烁,而LED3被点亮。路由器:上电运营,仍然是地址检测在前。之后就是通道扫描寻求是否又存在的网络,此 时LED1闪烁,一旦检测到存在网络并成功加入该网络,LED1将停止闪烁,被替换的是LED3别点亮,也就表白路由器成功加入了网络。那么此时能进行的操作控制是什么呢,也是最简朴的表现手
40、法一按键无线控 制LED:周 期(5 S)发送信息到网络中每个设备SW1按下,发送一个信息到组1的设备SW2按下,退 出/加 入 组1这个我是通过验证的。如:按 下 协 调 器SW1,路由器的LED 1狂闪几下;按下路由器的SW 1,那么协调器的LE D 1也就狂闪几下;当然我是只有两个节点。假 如 按1下协调器的SW2,在 按 下 路 由 器 的S W 1,此时协调器就没有反映,表白协调器己经退出组1;但是再按下协调器SW2在按路由器的SW1就与上一步类似了。路由器与此类似可以通过SW 2退 出/加 入 组1.终于把演示弄完了,接下来就来看看程序。在此之前还是来看看T I提供的Sam ple
41、指导文档。这个文档个人觉得写的不错,要是没看之前就看程序的却很郁闷的!但是本人英文很差,所以需要慢慢看,等点时间放上来!Z-S t ac k 之 3AS am p 1 e Ap p lie a tion 分析()1 Z St a ck CC2430DB and CC2430EB Sample A p p lica t i o n1.1、介绍该文档时介绍TI协议入门的一个例子S a mpleApp的,合用EM和 DB开发板。1.1.1、描述这个例子是非常简朴的演示,每个设备都可以发送和接受两个信息周期信息一-加入该网络的所有设备每隔10S(也许会加上一个随机数的mS)都发送一个周期信息,该信息的
42、数据载荷为发送信息次数的计数。闪烁控制信息-通过按下S W 1可以发送一个控制灯闪烁的广播信息,该广播信息只针对组1的所有设备。所有设备初始化为加入组1,所以网络一旦成功建立/加入就可以进行闪烁控制。可以通过按下设备的SW2退出组1,所以可以通过退出组1可以不接受闪灯信息。通过按下SW 2 也可以让不在组1 的设备加入近组1,从而又可以接受闪灯信息了。这 个 理 解 应 当 不 困 难 的,反 正 我 理 解 没 有 什 么 障 碍!1.1.1.1、按键S W1:发送闪烁信息到组1所有设备SW2:转换推出/加入组1状态A 1.1.2、用户应用开发这里我基本上能看明白是什么,但是我不打算写出来,
43、由于涉及到一些ZIG BEE的关键术语,不是很明白。大约就是简朴介绍了下用户怎么运用例子做自己的应用,但是实用价值不高,说 的 太 笼 统,全 是 概 念 性 的 说 明。A 1.2、0 S A L 任务1.2.1、初始化由于Z-St ack是在OS下运营的,所以在之前必须调用o s a 1A d d Tasks()初始化任务。122M组织关 于 O S 的A P I函数介绍请看文档:Z-S t ack OSAL API(F8W-2023-00 0 2),应当说协议栈的每层或者说每部分都有相关的A PI说明文档。osalAd d Ta s ks()初始化任务,osalT a sk Add()函
44、数添加任务,都可以到API文档或程序中具体分析函数功能。A 1 .2.3、系统服务OSA L 和A PL 系统服务是唯一的,由于比如按键和串口类似事件处罚就只能用唯一的一个任务标记。这两个硬件都留给了用户自己定义使用。I.2.4、应用设计用户也许为每一个应用对象都创建一个任务,或者为所有的应用对象只创建 一 个 任 务。当 选 择 上 述 的 设 计 的 时 候,下 面 是 一 些 设 计 思 绪:1.2.4.1、为许多应用对象创建一个OS AL任务下面是正面和反面(P ro s&cons)的一些叙述:-Pro:接受一个互斥任务事件(开关按下或串口)时,动作是单一的。-P r o:需要堆栈空间
45、保存一些OSAL任务结构。-Con:接受一个A F信息或一个AF数据确认时,动作是复杂的-在一个用户任务上,分支多路解决应用对象的信息事件。-C on:通过匹配描述符(如:自动匹配)去发现服务的解决过程更复杂-一-为了适当的对ZDO_NEW_DS TADDR信息起作用,一个静态标志必须被维持。1 .2.4.2、为一个应用对象创建一个OS AL任务一对一设计的反面和正面(P ros&cons)是与上面一对多设计相反的:-Pro:在应用对象试图自动匹配时,仅仅一个ZDO_N E W_DSTADDR被接受。-Pro:已经被协议栈下层多元解决后的一个A F输入信息或一个AF数据确认。-Con:需要堆栈
46、空间保存一些0 S AL任务结构。-C on:假如两个或更多应用对象用同一个唯一的资源,接受一个互斥任务事件的动作就更复杂。A1.2.5、强制方法任何一个OSAL任务必须用两种方法执行:一个是初始化,另一个是解决任务事件。口.2.5.1、任务初始化在例子中调用如下函数执行任务初始化:“A p p 1 ic a tion N a me”_ I nit(如SAPI_Init)o该任务初始化函数应当完毕如下功能:变量或相应应用对象特性初始化,为了使OSAL内存管理更有效,在这里应当分派永久堆栈存储区。在 A F 层登记相应应用对象(如:afRegi s ter()o登记可用的O SA L或 H A
47、L 系统服务(如:Reg is t e r Fo r Key s()1.2.5.2、任务事件解决调用如下函数解决任务事件:44 A p p lie a tion Nam e,5_ P rocessEve n t(e.g.S A PI_Proce s sEven t().除了强制的事件之外,任一 OSAL任务能被定义多达15个任务事件。1 2 8、强制事件一个任务事件SYS_EVENT_MSG(0 x8000),被保存必须通过OSAL任 务 设 计。2.2.6.1、SYS_EVENT_M S G(0 x8 0 0 0)任务事件管理者应当解决如下的系统信息子集,下面只列出了部分信息,但是是最常用的
48、几个信息解决,推荐根据例子复制到自己项目中使用。1纵2.6.1.1、AF_DATA_CONF IRM_CMD调用AF_DataRequest()函数数据请求成功的指示。Zsu c c e s s 确认数据请求传输成功,假如数据请求设立AF_ACK_REQUEST标志位,那么,只有最终目的地址成功接受后,Zsuccess确认才返回。假如假如数据请求没有设立AF_ACK_R EQ U EST标志位,那么,数据请求只要成功传输到下跳节点就返回 Zsucces s 确 认 信 息。1 .2.6.1.2、AF_ I NCOMING_MSG_CMDA F 信 息 输 入 指 示1 .2.6.1.3、KEY
49、_CHANGE键 盘 动 作 指 示1.2.6.1.4、Z D O_NEW_DST A DDR匹配描述符请求(M a tch Deor Req u est)响应指示。(例如:自动匹配)1 2 6.1.5、Z D O_S T ATE_ C HANGE网 络 状 态 改 变 指 示1.3、网络格式化示例应用程序编译为协调器的在d efault_chanli s t 指定的通道上形成一个网络,协调器将建立一个随机编号源于自身的IE EE 地址或由z d a p p_config_p a n_ id 指定的网络 PAN I D(假如 zda p p_ conf i g_ p an_id 不为 OxFF
50、FF)o示例应用程序编译为路由器或结束设备的将尝试加入网络在de fault_chanli s t 指定的通道上,假如zdapp_config_pan_id没有定义为0 x FFFF,路由器将受到限制,只有加入参数zdapp_config_pan_i d 规定的网络PAN ID。1.3.1、自动启动设备自动开始尝试组建或加入网络。假如设备设立为等待计时器或其他外部事件发生后才启动,那么HOLD_AUTO_START必须被定义。为了稍后以手动启动方式启动设备,那么需要调用ZDApp_Sta r tUpFromAp p(函数1.3.2、软件启动为了在形成网络过程中节省所需的设备类型,那么所有的路由