手把手教你从零开始学ZigBee.DOC

上传人:国*** 文档编号:495964 上传时间:2018-10-15 格式:DOC 页数:41 大小:1.47MB
下载 相关 举报
手把手教你从零开始学ZigBee.DOC_第1页
第1页 / 共41页
手把手教你从零开始学ZigBee.DOC_第2页
第2页 / 共41页
手把手教你从零开始学ZigBee.DOC_第3页
第3页 / 共41页
手把手教你从零开始学ZigBee.DOC_第4页
第4页 / 共41页
手把手教你从零开始学ZigBee.DOC_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、手把手教你 从零开始学 ZigBee 从零开始学习 Zstack之 1 本人是 生物 学专业本科,按理说,不应该在 ZigBee 技术上有所长,不过上大 二 的时候,一次和室友一起到植物园玩,看到几个差不多和自己一样年纪的男女生,拿着几台电子机器 ,拉出长长的天线,欢呼雀跃着 收到信号了!收到信号了! 很是好奇,一打听,原来是 ZigBee“大仙”啊!于是热血的沸腾要加入,可是人家是有条件的!于是诞生了 我 从零 开始 学习 ZigBee 的经历! 首先,我要 说一句 ,我 用的是 TI 的 Zstack1.4.3 协议,据说这个需要 IAR7.30B 及以上版本, 从 TI 网站上下载的 Z

2、stack 的方法就不介绍了。 第一步:安装 Zstack 从 TI 官方网站上下载的 Zstack 为: swrc072c.zip,我想这个压缩包大家都认识。解压之后为:ZStack-CC2430-1.4.3.exe 文件。这个安装文件大家都会了。默认安装路径为: C:Texas InstrumentsZStack-1.4.3。安装之后在 C:Texas InstrumentsZStack-1.4.3 目录下有各 PDF 文档为: Getting Started Guide CC2430.pdf,不用多说,这个肯定是要看的。 既然把它放到这么前面,说明它是入门中的入门文档。下面就简单介绍下这

3、个文档: 1、 介绍了安装 ZStack-CC2430-1.4.3.exe 需要的硬件软件条件 :需要电脑、操作系统为 Windows 2000 或 Windows XP。至于更高或更低版本的本人没有尝试。 2、 讲了安装流程。这个有点多余了,这年月哪个有电脑的没有安装上百上千次的软件啊?但是需要强调的是安装路径 -默认就好! 3、 接下来就是让我们看的第一个文档为: Start-Programs-Texas Instruments-ZStack-1.4.3-Z-Stack Users Guide, 既然让我看我就来看看这个文档! 第二步: Z-Stack 用户指导 这个文档的更新时间为: 2

4、007 年 12 月 21 日 -应该还是比较新的版本。 由于本人英文的却有限,就不翻译了,浏览一遍,把大概意思说下就可以了: 1、 介绍 1.1、 适用范围 本文档适用于 CC2430ZigBee 开发板 -CC2430ZDK。 2、产品包描述( TI 提供的 CC2430ZDK工具包) 2.1、安装包内容 这个就 是上面提到的的 ZStack-CC2430-1.4.3.exe 安装之后的所有内容了。说白了就是包含 Zstack 开发所需要的所有软件和文档资料等。 2.2、开发板介绍 两块 SmartRF04EB 评估版,每个都可以用于 CC2430EM评估模块。如图 1-1 所示: Fig

5、ure 1: Chipcon SmartRF04EB Evaluation Board with CC2430EM 5 块 CC2430DB 评估板,如图 1-2 所示: Figure 2: Chipcon CC2430DB Development Board 10 个 SOC_BB 评估板,每个都可以用于 CC2430EM或 CC2431EM。如图 1-3 所示: Figure 3: Chipcon SOC_BB Battery Board 2.3、电缆 也就是包含开发包所需要的电缆,如 RS232 串口线, USB线等等附属配件。 3、安装配置 3.1、主机配置 一台个人计算机 -也就是电

6、脑哈。我想玩嵌入式的应该都有,而现今不过时的配置就可以:下面是最低配置 ? .NET 1.1 架构 ? Windows XP Service Pack 1 (i如果是 Windows XP) ? 1 个串口(也就是 RS232 接口) s ? 1 USB接口 个人认为要求已经相当低了,如果你的电脑没有这配置,个人强烈建议马上扔掉!不过如今笔记本电脑很少有串口的,所以建议使用台式电脑 ,而且装机的时候一定要把串口引出,否则就比较麻烦了! 3.2、目标板需求 其实也是开发环境需求 - IAR EW8051。目前需要的版本为 7.30B及以上。要求还是比较高的,因为目前这个版本没有破解的。 但是在

7、http:/ 30 天评估版下载。这个版本使用一定要小心,因为如果 30 天之后仅仅是卸载 IAR 重新安装是没有用的, 一般最笨的办法是重新安装操作系统。解决这个问题最好的办法就是买正版,呵呵,我想绝大多数像我这样的中国人都不会买的。 除此之外最好的办法就是破解,但是目前这个破解极少,都是需要收费的,而且都是国外网站才有,所以我们就只好期望中国的高人 抓紧破解并公开了!当然其他解决办法就相对来说很多了,比如安 装后弄个还原点什么的;或者安装后我不停地使用(每天 24 小时), 30 天之后我觉得你也学会了,就不用 IAR 这个版本了,说不定就移植到低版本上去了;等等类似之法我觉得都可以的。

8、本人采用的是本办法中相对比较聪明的,也是一位高人告诉我的:装个虚拟操作系统,在虚拟操作系统下时间可以随时更改, 让它一直停留在某个时间,主要 30 天的试用就比较慢长了,只要你不要忘记改那时间。 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 位物

9、理地址( 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 网络 ? ZigBe

10、e 路由器 (ZR):该设备被配置为加入一个存在的网络,可以加入一个协调求或路由器,然后允许其他设备加入它,在网络中路有数据信息。 ? ZigBee 终端节点 (ZED):该设备被配置为加入一个存在的网络,可以加入一个协调求或路由 器。 5.3、建立样品应用设备: SampleApp 基本上就是采用 SampleApp 应用中的 Demo 例子来演示整个流程,就是采用一个协调器和一个或多个路由器来形成一个 ZigBee 网络演示。 在该例子中主要通过 SmartRF04EB 板上的某些跳线来完成设备类型的选型,当然这个方法在程序中是需要判断哪个按键被拉低或拉高, 对于做个设计的来说应该是相当好

11、理解的。 申明:由于本人很穷,所以没钱买 TI 原装开发包,当然也就没有上面提到的硬件,本人采用的是某家公司(为了避免广告,这里就不说明了) 的硬件系统。 5.4、建 立一个 SampleLight 协调器设备 至于提到的硬件连接这里一律省略。 无疑:首先要打开对应工程,如图 1-4 所示: 图 1-4 在工作窗口中选择 DemoEB,如图 1-5 所示: 图 1-5 然后选择工程菜单( Project)下的全部编译( Rebuild All)选项,如图 1-6 所示: 图 1-6 然后选择工程菜单( Project)下的调试( Debug)选项,如图 1-7 所示: 0 图 1-7 下载完之

12、后就可以退出调试状态,通过选中调试菜单下的停止调试选项,如图 1-8 所示: 图 1-8 按照此种方法下载至少两个 CC2430EM模块,就可以进行 Demo 演示了。 6、 Z-Stack 示范 略 至于详细的示范流程,这里先不说了,因为本人采用的硬件与原装有点差异,即使按照这个方法下载仍然不能演示, 因为我这个不能用跳线来选择设备类型。 所以我必须进入程序把跳线判断程序进行简单必要的修改才能演示 。 该文档介绍的演示结果及现象都是基于 CHIPCON 原厂评估板。 7. PanID 和通道( Channel)选择 推荐 ZigBee 协议规范规定,一个 14 位的个域网标志符( PAN I

13、D)来标识唯一的一个网络 。 Z-Stack 可以用两种方式由用户自己选择其 PAN ID,当 ZDAPP_CONFIG_PAN_ID 值设置不为 0xFFFF时, 那么设备建立或加入网络的 PAN ID 由 ZDAPP_CONFIG_PAN_ID 指定;如果设置ZDAPP_CONFIG_PAN_ID 为 0xFFFF; 那么设备就将建立或加入它发现网络中的 最好 的网络。关于这里提到的 最好 的网络,我觉得可能是有些参数评估, 只不过这里没有详细的介绍,在后续文档中应该有介绍的。 在 2.4G频段上, IEEE 802.15.4/ZIGBEE规范规定了 16各频道。用户可以通过选择 DEFA

14、ULT_CHANLIST不同的值可以选择不同的频道, 其频道如图 1-9 所示。改协议默认频道为 0xB及 0x00000800。 图 1-9 DEFAULT_CHANLIST 和 ZDAPP_CONFIG_PAN_ID 都作为 IAR IDE中的编译选项可以进行设置, 在应用文件中的 ProjectsToolsCC2430DB目录下的 f8wConfig.cfg文件中有相应设置,如图 1-10所示。 图 1-10 从零开始学习 Zstack之 2 -Sample 例子演示 上节基本上初步认识了 Zstack 的一些情况,今天继续我的学习,打开 Sample 例子看看,究竟 ZIGBEE是怎么

15、回事。 毫无疑问:如果是第一次打开这个例子工程,肯定很迷糊,因为此时我迷糊了。对图 2-1 我简直是相当迷糊。 图 2-1 这么多文件夹,打开之 后又有那么多文件,从何看起?不要着急,特别是有些人拿到之后,啥都不知道的人第一个问题就是:我要实现 XXX, 在哪修改或者在哪添加我的函数呢?凡是我遇到这样的客户,我就可以肯定他技术部咋的。就连我这个外行都知道,不把这些弄明白, 就是实现 XXX 只需要修改一个字母,那也不知道在哪改啊?所以我不急,但是我也理解很多客户,因为有时候项目催的比较急, 毕竟老板都是外行嘛! 两条路: 1 就是先看主函数, 2 就是看看 TI 提供例子说明文档没有。 我这里

16、先看看主函数再说哈!因为我就知道从主函数看起 . 没办法大概每个文件夹找啊,主 函数的特征还是比较明明显的,见图 2-2 所示: 图 2-2 下面把主函数复制过来简单看下: ZSEG int main( void ) / Turn off interrupts-关闭中断 osal_int_disable( INTS_ALL ); / Initialize HAL-初始化 HAL,关于 HAL 是什么我想后面会有介绍的。 HAL_BOARD_INIT(); / Make sure supply voltage is high enough to run-电压检测,最好是能保证芯片能正常工作的电压

17、 zmain_vdd_check(); / Initialize stack memory-初始化 stack存储区 zmain_ram_init(); / Initialize board I/O-初始化板载 IO InitBoard( OB_COLD ); / Initialze HAL drivers-初始化 HAL 驱动 HalDriverInit(); / Initialize NV System-初始化 NV系统, NV是什么后面我想也会有介绍的 osal_nv_init( NULL ); / Determine the extended address-确定扩展地址( 64 位

18、IEEE/物理地址) zmain_ext_addr(); / Initialize basic NV items-初始化基本 NV条目 zgInit(); / Initialize the MAC-初始化 MAC ZMacInit(); #ifndef NONWK / Since the AF isnt a task, call its initialization routine afInit(); #endif / Initialize the operating system-初始化操作系统,看样子这里面还有 OS,麻烦了 . ! osal_init_system(); / Allow

19、interrupts-允许中断 osal_int_enable( INTS_ALL ); / Final board initialization-最后的版在初始化 InitBoard( OB_READY ); / Display information about this device-显示设备信息 zmain_dev_info(); /* Display the device info on the LCD */-液晶支持显示 #ifdef LCD_SUPPORTED zmain_lcd_init(); #endif osal_start_system(); / No Return fr

20、om here-这里没有返回,大概是进入 OS 了。 / main() 可以看到基本上都是初始化函数,因为函数名称都基本上带了 init 字样的,呵呵,个人觉得 TI 的变成习惯比我好, 一看名称就知道大概功能了。所以这里也奉劝各位像我这样菜鸟级的初学者,一开始一定就要养成规范化编程的习惯, 说这样维护以及以后升级或者移植兼容性都比较好。我就先不管各个初始化函数是怎么实现的,我先看看各个功能是什么, 现掌握整体功能在细化,我觉得这样的学习方法比较好,因为代码是在太多了,从一开始就逐句看,我敢保证没几个人有耐心看完看明白! 幸好每个初始化函数都有一句说明,虽然是英文的,但是理 解起来一点都不难的

21、。关于每个函数的功能我就直接写在上面的程序里面, 节省纸张哈! . 一句话:主函数的功能就是初始化! 主函数看完了又开始模糊了,又从何看起呢?在无从下手之际,只有去寻求 TI 说明文档的帮助了。上节不是漏掉了内容, 是关于演示结果的,这里做上补充,怕因为缺调一点后面遇到什么不理解的就惨了! Sample 例子演示演示现象: 1、认识硬件 -按键和 LED 上节提到了 EM 和 DB两个板子,其硬件是不一样的。按键 EM 就有 5各 SW1SW5,而 DB只有 1 各方 向键,但是他们有个对应关系, 如图 2-3 所示 . 图 2-3 LED 数量和颜色也不一样, EM 有四个 LED,如图 2

22、-4;而 DB只有两个,如图 2-5。 如图 2-4 如图 2-5 关于上面几个图 2-4/5 中出现的 LEDx 实际上是程序中出现的关键字。 2、初始化 64 位 IEEE地址 实际上在主函数中有这么个初始化函数的: zmain_ext_addr()。这里说如果地址复位为0xFFFFFFFFFFFFFFFF 的话, 64 味 那么就会不停的闪烁 LED1,一直等到按键 SW5 按下后程序才能继续运行,意思就是说按下 SW5 后就把无效的地址初始化 为有效地物 理地址了,这个应该是程序上实现的,那么就来看看对应的程序 zmain_ext_addr。 /* * fn zmain_ext_addr * brief Makes extended address if none exists.确定扩展地址是有效的 * return none */

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。