ZigBee-Z-Stack协议栈 第一节 无线收发控制LED
什么是 ZigBee 协议栈呢?
它和 ZigBee 协议有什么关系呢?协议是一系列的通信标准,通信双方需要共同按照这一标准 进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协 议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议的,进而实现无线数据 收发。 图 1 展示了 ZigBee 无线网络协议层的架构图。ZigBee 的协议分为两部分,IEEE 802.15.4 定义了 PHY(物理层)和 MAC(介质访问层)技术规范;ZigBee 联盟定义了 NWK
(网络层)、APS(应用程序支持子层)、APL(应用层)技术规范。ZigBee 协议栈就是将 各个层定义的协议都集合在一直,以函数的形式实现,并给用户提供 API(应用层),用户可 以直接调用。
图 1 ZigBee 无线网络协议层
- 如何使用 ZigBee 协议栈
协议栈是协议的实现,可以理解为代码,函数库,供上层应用调用,协议较底下的层与应用是相互独立的。商
业化的协议栈就是给你写好了底层的代码,符合协议标准,提供给你一个功能模块给你调用。你需要关心的就 是你的应用逻辑,数据从哪里到哪里,怎么存储,处理;还有系统里的设备之间的通信顺序什么的,当你的应 用需要数据通信时,调用组网函数给你组建你想要的网络;当你想从一个设备发数据到另一个设备时,调用无 线数据发送函数;当然,接收端就调用接收函数;当你的设备没事干的时候,你就调用睡眠函数;要干活的时 候就调用唤醒函数。所以当你做具体应用时,不需要关心协议栈是怎么写的,里面的每条代码是什么意思。除 非你要做协议研究。每个厂商的协议栈有区别,也就是函数名称和参数可能有区别,这个要看具体的例子、说 明文档。
怎么使用 ZigBee 协议栈?举个例子,用户实现一个简单的无线数据通信时的一般步骤:
1、组网:调用协议栈的组网函数、加入网络函数,实现网络的建立与节点的加入。
2、发送:发送节点调用协议栈的无线数据发送函数,实现无线数据发送。
3、接收:接收节点调用协议栈的无线数据接收函数,实现无线数据接收。 是不是看上去很简单啊,其实协议栈很多都封装好了,下面我们大概看看无线发送函数:
afStatus_t AF_DataRequest( afAddrType_t *dstAddr,endPointDesc_t *srcEP,uint16 cID,
uint16 len,uint8 *buf, uint8 *transID,uint8 options,uint8 radius)
用户调用该函数即可实现数据的无线数据的发送,此函数中有 8 个参数,用户需要将每个参数的含义理解以后, 才能熟练使用该函数进行无线数据通信的目的。现在只讲其中最重要的两个参数,其它参数不需要死记硬背, 以后用多了自然就记住了。
uint16 len, //发送数据的长度;
uint8 *buf, //指向存放发送数据的缓冲区的指针。
至于调用该函数后,如何初始化硬件进行数据发送等工作,用户不需要关心,ZigBee 协议栈己经将所需要的工 作做好了,我们只需要调用相应的 API 函数即可,而不必关心具体实现细节。看起来是不是很简单呢,是不是 有动手试试的冲动。先别急还要先安装 ZigBee 协议栈才能进行开发调试呢,下面就动手安装 ZigBee 协议栈 吧。
2. ZigBee 协议栈的安装、编译与下载
双击..\相关资料与软件\Zigbee 开发软件\ZStack-CC2530-2.5.1a.exe 进行安装,路径你可以选择默认,同样 你也可以选择你想要安装的位置。也许有人就困惑了,装完之后不是应该有个桌面图标的么?其实所谓的安装 协议栈只是把一些文件解压到你安装的目录下。好了,协议栈是安装好了,可是怎么用它呢?装了肯定要用啊 是吧,别急,我们先来看看这个协议栈的目录。
Components,顾名思义这个是放我们的库的文件夹,里面放了一些我们用到的 ZDO,driver,hal,zcl 等库 的代码
Documents,这个不用说大家都知道是放 TI 的开发文档的,里面很多都是讲述协议栈的 API 的有空时可以看 看
Projects,这个文件夹放的是 TI 协议栈的例子程序,一个个例子程序都是以一个个 project 的形式给我们的,
学好这些例子程序里面的一两个,基本你能做事情了。
Tools,这个文件夹是放 TI 的例子程序的一些上位机之类的程序,作为工具使用。 好了,基本明白了基本架构之后,我们以一个简单的实验开始。先掌握一点必要的理论再实验效果比较好。喜 欢看书的人还可以看下面的“ZigBee 理论”掌握更多理论知识,不喜欢看书的朋友可以学完第 5 章后,再看视 频加强理论知识。
3. 协议栈无线收发控制 LED
打开工程: \1. 协议栈工作流程和无线收发控制 LED\ZStack-2.5.1a\Projects\zstack\Samples\SampleApp\CC2530DB\ SampleApp.eww ,从软件开发专业角 度讲建议大家复制工程到非中文目录,因为有些开发环境对中文路径支持的不好,虽然 IAR 支持但在实际工作 中你想别人看到你的工程,认为你很专业就照着上面做吧。有时把文件放的太深,目录太长,打开工程时 IAR 会关闭;只要将工程上移几层即可,用英文路径最专业了。我们演示就不修改,容易引起大家误会;打开工程 如下图:
如果使用 IAR 打开工程停止响应或关闭,说明你路径太长,IAR 不识别,把路径改短或移上几层目录即可解决。
App:应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这 个项目的主要内容。 HAL:硬件层目录,包含有与硬件相关的配置和 驱动及操作函数。
MAC:MAC 层目录,包含了 MAC 层的参数配 置文件及其 MAC 的 LIB 库的函数接口文件。 MT:实现通过串口可控制各层,并与各层进行 直接交互 NWK:网络层目录,包含网络层配置参数文件 网络层库的函数接口文件及 APS 层库的函数接 口。
OSAL:协议栈的操作系统。
Profile: Application framework 应用框架层 目录,包含 AF 层处理函数文件。应用框架层是 应用程序和 APS 层的无线数据接口。 Security:安全层目录,包含安全层处理函数, 比如加密函数等 Services:地址处理函数目录,包括地址模式的 定义及地址处理函数。 Tools:工程配置目录,包括空间划分及 Z-Stack 相关配置信息。
ZDO:ZDO 目录
ZMac:MAC 层目录,包括 MAC 层参数配置 及 MAC 层 LIB 库函数回调处理函数。 ZMain:主函数目录,包括入口函数及硬件配 置文件。
Output:输出文件目录,由 IAR IDE 自动生成。
带协议栈的工程怎么这么多文件夹和文件,都有什么用啊?现阶段大家只要带着这个疑问照着做实验就行了,后
面实验接触多了自然就懂了。
1. 编译协调器的程序,在 Workspace 下拉框中选择“CoordinatorEB”,在工程名上点右键选择”Rebuild All”, 第一次一定要用“Rebuild All”,后面再修改代码只用“Make”即可,没错误提示再下载到开发板当中。尽量教 大家用一些快捷方法。编译结果会有以下警告,警告可忽略的,只要没有错误就可运行的,以下警告是用来生成 量产的文件用的,想消除可看看" 2530\相关资料与软件\IAR 编译 CC2530 生成 HEX 文件.pdf"
2.下载好协调器后,再编译终端设备的程序选择“EndDeviceEB”,把仿真器换到另一块板子上,编译下载即可。
注意:旧版本协议栈显示为 EndDeviceEB-Pro,与 EndDeviceEB 只是显示名称不同,新协议栈取消了-Pro,没 影响。
两个 zigbee 节点都下载好后,分别上电看效果吧。协调器、终端通过底板上的 usb 供电并打开开关,组网成 功 后 D1 灯闪烁。协议栈工作流程分析:
zigbee 工作流程:
下面列出实验中涉及到比较重要的函数进行详解,由于是带协议栈第一个实验,我们对源码也进行注释,方便习惯看源码的同志学习。我建议大家先看 看下面的文章,再阅读一次源码加深印象,后面的例子结构基本相同,所以学好此实验,再做后面的实验就得 心应手了。用户自己添加的应用任务程序在 Zstack 中的调用过程:
main()---> osal_init_system()---> osalInitTasks()---> SampleApp_Init()
实验步骤:
1.选择 CoordinatorEB, 下载到开发板 A;作为协调器
2.选择 EndDeviceEB, 下载到开发板 B;作为终端设备
3.给两块开发板上电,通过观察 D3 来判断组网是否成功,协调器 D3 熄灭说明已建立 zigbee 网络,有终端时可入网;当终端 D3 熄灭时说明连网成功,请观察 Led1 灯的变化。下载好程 序后可以不需要仿真器了,通过底板供电即可。有显示屏的用户可以通过显示屏来观察组网 情况。
ZigBee-Z-Stack协议栈 第一节 无线收发控制LED相关推荐
- 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈
理解堆与栈 导航 深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈 深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 ...
- 第一章 无线收发机射频前端结构
目录 本章内容 1.1 射频前端功能及性能参数 无线发信机射频前端 功能 无线发信机射频前端 性能参数 无线收信机射频前端 功能 无线收信机射频前端 性能参数 无线收发机射频前端 功能及指标参数 1. ...
- STM32-通过串口收发控制LED亮灭(使用USART1 查询法)
实现的功能 1.电脑发送'ON' 如果已是亮灯状态则返回'the LED has been ON' 如果为熄灭状态则点亮LED并返回'the LED is ON now' 2.电脑发送'OFF' 如果 ...
- 第一节 基本数字输出功能LED灯
I/O端口的原理 单片机端口是标准双向口,可以输出信号也可以输入信号. 上图的A点相当于单片机的I/O口,A可以连接5V或接地,保证了电流可以双向通过. 假设LED正常工作压降(电压差)是1.5V,正 ...
- 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理
栈基本工作原理 导航 深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈 深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第 ...
- 无线授时服务器接LED屏,实现ipad远程无线控制led大屏幕分以下几个步骤!
原标题:实现ipad远程无线控制led大屏幕分以下几个步骤! 不通过电脑有线控制,实现IPAD无线式.移动式.同步无延时控制LED大屏幕(液晶屏拼接墙等大屏幕也实用),让控制大屏幕的方式变得简单化.傻 ...
- 关注zigbee(四)--无线收发
对于使用者来说,最基本的就是先搞清楚无线收发. 无线收发有两种方式: 1.调用最基本的底层收发函数,即读写寄存器收发,不经过协议栈.这种收发方式最直接,但是没有安全和可靠性保障,不利于组网. 2.利用 ...
- 《ZigBee开发笔记》第四部分 提高篇-第9章 CC2530基于GenericApp无线收发实验
实验设备 硬件:PC 机一台:ZB2530(底板.核心板.仿真器.USB 线) 两套 软件:win7 系统,IAR 8.20 集成开发环境 本实验是基于GenericApp无线收发,编者在第2讲也有讲 ...
- zigbee之Zstack协议栈使用
zigbee之Zstack协议栈使用 前言 基于zstack协议栈开发的步骤 一.OSAL操作系统 1.操作系统工作流程 2.OSAL初始化函数 3.系统启动函数 (1)任务 (2)事件 4.OSAL ...
最新文章
- 如何改变java中的库包_如何在Java / Android模块化库中使两个相互独立的包相互独立?...
- Tomcat的账号与密码
- [Java5新特性]	动态代理
- 图像特效——摩尔纹 moir
- Mac 键盘符号整理
- 腾讯还是小公司,很难选?
- 查找一个数据库内的所有表的行数
- 【笔试/面试】—— 二叉树的深度和宽度
- C#:判断某个对象有没有某个键的方法
- 分布式 id 生成系统 滴滴 Tinyid 快速入门
- 关于IDEA中有关springboot快启动报错问题
- C# PDF转图片(JPG)
- html在线客服,网页在线客服代码_jQuery QQ客服
- STM32 EXTI外部中断
- [Swift]注册并购买加入Apple开发者计划。提示: “你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行”...
- 微信QQ在线客服基本功能介绍
- 关于图片因错误无法显示的问题j
- 【重载和重写的区别】
- 后摩尔时代来临,语音IC封装技术一触即发
- 教你如何写出高质量的网络推广软文
热门文章
- BASIC 之父出生 | 历史上的今天
- 【Linux】exit(0)exit(1)return
- 微信小程序毕业设计 基于微信校园洗衣小程序系统开题报告
- 使用广播信道的数据链路层以及以太网详解!!!
- 机器人十大前沿热点领域(2022-2023)
- Oracle / PLSQL: RPAD 函数的用法
- 【数学】函数极限(宇哥笔记)
- 基础会计学习笔记5 会计科目和会计账户
- 上海亚商投顾:沪指全天窄幅震荡 大消费板块再掀涨停潮
- android 7官方壁纸百度云,LOL动态原画桌面壁纸(1~7弹)