ZigBee协议栈串口应用
zigbee 协议栈
zigbee 协议栈
Zigbee 协议栈。
Zigbee 是一种无线通信协议,它被设计用于低数据速率、低功耗的应用场景,如智能家居、工业自动化、传感器网络等。Zigbee 协议栈是指在 Zigbee 网络中的协议层,它定义了 Zigbee 网络中各个节点之间的通信规则和协议。
Zigbee 协议栈主要包括物理层、MAC 层、网络层和应用层。物理层定义了无线通信的调制解调方式、频率和功率控制等;MAC 层负责数据的传输和接收,以及网络中节点的管理;网络层则负责路由和数据包转发;应用层则定义了具体的应用协议和数据格式。
在 Zigbee 协议栈中,物理层使用了 IEEE 802.15.4 标准,它定义了无线通信的物理层和 MAC 层规范,包括频率、调制方式、数据帧格式等。MAC 层定义了数据的传输方式,包括信道访问方式、数据帧格式、数据重传机制等。网络层则定义了路由协议和数据包转发规则,以实现多跳网络的数据传输。应用层则定义了具体的应用协议,如 Zigbee Home Automation(ZHA)、Zigbee Light Link(ZLL)等。
Zigbee 协议栈的设计遵循了低功耗、低成本、可靠性和安全性的原则。它采用了分层的设计,使得各个层之间的功能清晰明了,易于实现和维护。同时,Zigbee 协议栈还支持多种网络拓扑结构,包括星型、网状和混合型网络,以满足不同应用场景的需求。
在实际的应用中,开发人员可以使用 Zigbee 协议栈来快速构建 Zigbee 网络应用。通过使用 Zigbee 协议栈,开发人员可以方便地实现节点之间的数据通信、网络管理和安全保护,从而加速产品的开发周期和降低开发成本。
ZigBee协议
ZigBee协议
协议名称:ZigBee协议
一、引言
ZigBee协议是一种无线通信协议,旨在为低功耗、低数据速率的应用提供可靠的通信。本协议旨在定义ZigBee网络的架构、通信方式、数据格式以及协议栈的
实现规范,以确保不同厂商的设备能够互相兼容和互操作。
二、范围
本协议适用于使用ZigBee技术的设备之间的通信,包括但不限于家庭自动化、楼宇自动化、工业控制、智能电网等领域。
三、术语和定义
3.1 ZigBee设备:指符合ZigBee协议规范的设备,包括协调器、路由器和终端
设备。
3.2 协调器:指ZigBee网络中的主设备,负责网络的管理和协调。
3.3 路由器:指ZigBee网络中的中间设备,负责数据的中继和路由。
3.4 终端设备:指ZigBee网络中的终端设备,负责与用户交互和执行特定功能。
3.5 网络拓扑:指ZigBee网络中设备之间的连接方式和关系。
3.6 网络层:指ZigBee协议栈中负责网络管理和路由的层次。
3.7 应用层:指ZigBee协议栈中负责应用数据传输的层次。
四、网络架构
4.1 网络拓扑
ZigBee网络采用星型、网状或混合拓扑结构。其中,星型拓扑中协调器作为中心节点,终端设备直接与协调器通信;网状拓扑中终端设备通过路由器中继数据;混合拓扑结构则是星型和网状拓扑的组合。
4.2 网络组建
ZigBee网络由一个协调器和多个路由器、终端设备组成。协调器负责网络的组建和管理,路由器负责数据的中继和路由,终端设备负责与用户交互和执行特定功能。
五、通信方式
5.1 网络发现
新加入ZigBee网络的设备需要进行网络发现,以便与网络中的其他设备建立
zigbee协议特点及应用领域
ZigBee协议特点及应用领域
随着科学技术的发展,无线网络逐渐取代了有线网络, 仅支持静态拓扑的无线网络也逐渐被支持动态拓扑变化的无线网络所取代。在短距离的无线控制、监测、数据传输领域,通用的技术有Bluetooth、Wi-Fi等。它们各有优势,但同时也存在着局限性。为了弥补不足,ZigBee联盟于2004年12月推出了基于IEEE802.15.4的ZigBee协议。
● ZigBee协议主要有以下特点:
1.低功耗:由于工作周期很短、收发信息功耗较低、并且RFD采用了休眠模式,zigbee技术可以确保在RFD上,两节五号电池支持长达6 个月到2 年左右的使用时间;
2.高可靠性:采用了碰撞避免机制,同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突。MAC层采用了完全确认的数据传输机制,每个发送的数据包都必须等待接收方的确认信息;
3.低成本:模块价格低廉,且zigbee协议是免专利费的;
4.低时延:针对时延敏感的应用做了优化,通信时延和从休眠状态激活的时延都非常短。
设备搜索时延典型值为30ms,休眠激活时延典型值是15ms,活动设备信道接入时延为15ms;
5.低数据量:zigbee每个网络模块射频前端的数据传输率为250kbps;
6.网络容量大:zigbee可以采用星形、簇—树形、网形结构组网,而且可以通过任一节点连接组成更大的网络结构,从理论上讲,其可连接的节点多达65000 个。一个zigbee 网络可以最多容纳254个从设备和一个主设备,一个区域内可以同时存在最多100 个zigbee网络;
16Zigbee实验报告《协议栈串口应用扩展》
2019——2020学年第二学期
专业
班级
学号
姓名
日期
实验
实训6-2 协议栈串口应用扩展题目
实验
目的
实验过程:
实
验
内
容
与
步
骤
ZigBee技术应用概述
ZigBee技术—让无线无所不在ZigBee无线数据通信模块
工业级高品质无线通信
上海顺舟网络科技有限公司
内容概要
ZigBee技术简介
ZigBee技术—让无线无所不在
顺舟科技ZigBee无线通信模块介绍
ZigBee技术专业开发商
ZigBee技术应用解决方案
ZigBee技术应用:无线传感器网络、数据采集、
工业控制、智能楼宇、医疗设备…
ZigBee技术简介—什么是ZigBee
ZigBee是一种新兴的短距离、低功耗、低数据速率、低成本、低
复杂度的无线网络技术。
ZigBee 采取了IEEE 802.15.4强有力的无线物理层所规定的全部
优点:省电、简单、成本又低的规格;ZigBee增加了逻辑网络、网
络安全和应用层。
ZigBee联盟预测的主要应用领域包括工业控制、消费性电子设备、汽车自动化、家庭和楼宇自动化、医用设备控制等。
ZigBee技术简介—ZigBee与IEEE 802.15.4 ZigBee是一组基于IEEE802.15.4无线标准研制开发的、有关组网、安全和应用软件方面的技术,IEEE 802.15.4仅处理MAC层和物理层协议,ZigBee联盟对其网络层协议和API进行了标准化。
ZigBee是由ZigBee Alliance所主导的标准,定义了网络层(Network Layer)、安全层(Security Layer)、应用层(Application Layer)、以及各种应用产品的资料(Profile);而由国际电子电机工程协会(IEEE)所制订的802.15.4标准,则是定义了物理层(PHY Layer)及媒体存取层(Media Access Control Layer;MAC Layer)。
zigbee模块功能特点及应用
zigbee模块功能特点及应用
ZigBee模块是一种物联网无线数据终端,利用ZigBee网络为用户提供无线数据传输功能。ZigBee模块已广泛应用于物联网产业链中的M2M行业,如智能电网、智能交通、智能家居、金融、移动POS终端、供应链自动化、工业自动化、智能建筑、消防、公共安全、环境保护、气象、数字化医疗、遥感勘测、农业、林业、水务、煤矿、石化等领域。
ZigBee模块采用高性能的工业级ZigBee方案,提供SMT与DIP接口,可直接连接TTL接口设备,实现数据透明传输功能;低功耗设计,最低功耗小于1mA;提供6路I/O,可实现数字量输入输出、脉冲输出;其中有3路I/O还可实现模拟量采集、脉冲计数等功能。
工业级应用设计:
1、采用高性能工业级ZigBee芯片
2、低功耗设计,支持多级休眠和唤醒模式,最大限度降低功耗。
3、电源输入(DC 2.0——3.6V)。
稳定可靠:
1、WDT看门狗设计,保证系统稳定
2、提供TTL串行接口,SPI接口。
3、天线接口防雷保护(可选)
标准易用:
1、采用2.0的SMA与DIP接口,特别适合于不同用户的应用需求。
2、提供TTL接口可直接连相同电压的TTL串口设备。
3、智能型数据模块,上电即可进入数据传输状态。
4、使用方便,灵活,多种工作模式选择。
5、方便的系统配置和维护接口。
6、支持串口软件升级和远程维护。
功能特点:
1、支持ZigBee无线短距离数据传输功能;
2、具备中继路由和终端设备功能;
3、支持点对点、点对多点、对等和Mesh网络。
4、网络容量大:65000个节点;
zigbee,协议栈,串口
zigbee,协议栈,串口
篇一:ZigBee简易串口透传
第十六讲ZigBee串口透传
一、串口透明传输工程说明
串口透明传输工程是在SampleApp工程基础之上进行修改而成,主要功能是完成简单的串口透明传输,功能要求:
1、设备上电后自动选择设备类型。第一个启动的设备为协调器,后续启动的为路由器。(所有设
备中程序相同)
2、路由器的232串口接收到数据后将数据以单播的形式发送到协调器。当路由器接收到来自空
中的数据包将数据写入232串口。
3、协调器的232串口接收到数据后将数据以广播的形式发送到网络中所有的设备。当协调器接
收到来自空中的数据包将数据写入232串口。
图X 串口透明传输应用
二、编译选项说明
串口透明传输工程在SampleApp工程基础之上进行修改,但是编译选项使用原SampleApp工程的编译选项,
SampleApp工程编译选项具体如下:
CC2430EB、ZTOOL_P1、MT_TASK、SOFT_ST ART 通过编译选项ZTOOL_P1
编译选项SOFT_START。
三、工程初始化与事件处理函数
串口透明传输工程来源于对SampleApp工程的修改,工程初始化函数与SampleApp工程的初始化函数完全相同,读者可以参见前面章节。串口透明传输工程事件处理函数在SampleApp工程事件处理函数的基础之上添加了对事件UART_RX_CB_EVT的处理,具体代码如下。
程序代码:
uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )
如何在Zstack中使用串口
uartConfig.callBackFunc
= MT_UartProcessZAppData;
//如果编译的时候没有选择 ZTOOL,而是选择使用了 ZAPP,则由 MT_UartProcessZAppData
//函数来处理串口数据串
(*如果是用 CC2530 的 P0 口那两根串口引脚,你就要 define ZTOOL_P1,如果是 P1 口的那
0xFE,
DataLength, CM0, CM1, Data payload, FCS
解释:0xFE:数据帧头
DataLength:Datapayload 的数据长度,以字节计,低字节在前;
CM0:命令低字节;
CM1:命令高字节;(ZTOOL 软件就是通过发送一系列命令给 MT 实现和协议栈交互)
*)MSGpkt)->keys ); break;
//增加 Case CMD_SERIAL_MSG: ProcessUartData(); //这个函数你自己实现吧,想做啥呢?想做啥就做啥。如果想把接
一、介绍 网上和论坛里面很多帖子都把精力集中到分析协议栈的串口工作机制上,比如分析 DMA
工作原理,中断工作原理,然后分析输入和输出 Buffer 的处理等内容,学习者跟着协议栈的 串口底层一直到顶层转圈、转圈、再转圈,蒙圈了。
实际上,从应用角度讲,我们根本就没有必要去深入的追究 Zstack 中串口的工作机制, 也没有必要去搞清楚到底是怎么 DMA 和 Interrupt 的,我们只要调用几个简单函数就可以正 常使用串口了。其实协议栈已经把使用串口的条件准备好了,我们何必再纠结硬件底层实现 呢?应用者应该把协议栈看作一个平台,平台之上的应用才是我们的目标。下面我就讲一下 如何利用协议栈现有平台来实现自己的串口应用。这里我所提及的现有平台即是 Zstack 自带 的 MT 包,其实 Zstack 中的这个 MT 包功能相当强大,通过 TI 提供的 ZTOOL 工具可以用串 口的方式同整个协议栈进行交互,在我们编写 Zigbee 应用程序的过程中,很多不知道该如何 调用的函数都能在 MT 中找到参考!这个不多说了,有兴趣的同学可以去专门研究一下 MT 包。 二、使用方法 在 MT 包中,已经有了串口初始化即串口数据处理函数可用,关键的几个函数出现在 MT_Uart.c 文件中。我们拿出来几个关键函数说明一下(我捡重要语句注释): 第一个函数
zigbee相关知识点
Zigbee相关知识点介绍
Zigbee是一种低功耗的、短距离通信协议,被广泛应用于物联网领域。它基于IEEE 802.15.4标准,具有自组网、低功耗和安全性等特点。本文将介绍Zigbee的
相关知识点,让我们一起来了解一下吧!
1. Zigbee网络拓扑结构
Zigbee网络采用了星型、网状和混合型等多种拓扑结构。其中,星型拓扑是最
简单的一种,由一个集中器(Coordinator)和多个终端设备组成,所有通信都通
过集中器进行。网状拓扑则允许设备之间直接通信,具有更高的可靠性和扩展性。混合型拓扑则是星型和网状拓扑的结合,能够满足不同应用场景的需求。
2. Zigbee通信协议栈
Zigbee通信协议栈包括物理层、MAC层、网络层和应用层。物理层负责无线
信号的发送和接收,MAC层处理数据包的传输和接收,网络层负责路由和组网,
应用层则定义了不同应用场景下的具体协议。
3. Zigbee设备类型
Zigbee设备可以分为三类:协调器(Coordinator)、路由器(Router)和终端设备(End Device)。协调器是网络的核心,负责管理整个网络;路由器负责中继
数据包和扩展网络覆盖范围;终端设备是最简单的设备,通常用于传感器和执行器等简单应用中。
4. Zigbee网络组网过程
Zigbee网络的组网过程包括设备加入网络、设备发现、设备配置和网络优化等
步骤。首先,设备通过协调器加入网络,然后进行设备发现,找到附近的邻居设备。接下来,设备需要进行配置,包括分配独立的网络地址、选择频道和设置传输速率等。最后,网络需要进行优化,包括路由表的维护和能量管理等。
ZigBee通信技术特点和性能及其典型应用的详细概述
ZigBee通信技术特点和性能及其典型应用的详细概述
ZigBee技术被认为是最有可能像WiFi、蓝牙一样改变我们现在生活的通信技术之一.ZigBee是让一些设备特别是传感器接入互联网的技术。
在家庭自动化控制和工业遥测遥控领域,对无线数据通信的需求越来越强烈,且这种无线数据传输必需是高可靠的,并能抵抗现场的各种电磁干扰。
Zigbee的特点就在于功耗更低,实时在线、同一个网关接入数量巨大并且可以自组网, 在物联网的发展中具有广阔的应用空间。
Zigbee技术
Zigbee一词源自蜜蜂群在发现花粉位置时,通过跳ZigZag形舞蹈来告知同伴,达到交换信息的目的。可以说是一种小的动物通过简捷的方式实现“无线”的沟通。人们借此称呼一种专注于低功耗、低成本、低复杂度、低速率的近程无线网络通信技术,亦包含此寓意。
它是基于IEEE802.15.4协议发展起来的一种短距离无线通信技术,功耗低,被业界认为是最有可能应用在工控场合的无线方式。Zigbee是一个由可多到65000个无线数传模块组成的一个无线数传网络平台,在整个网络范围内,每一个Zigbee网络数传模块之间可以相互通信,每个网络节点间的距离可以从标准的75m无限扩展。
ZigBee 的技术特点和性能
ZigBee是一种无线连接,可工作在2.4GHz(全球流行)、868MHz(欧洲流行)和915 MHz(美国流行)3个频段上,分别具有最高250kbit/s、20kbit/s和40kbit/s的传输速率,它的传输距离在10-75m的范围内,但可以继续增加。
STM32的USART0与ZigBee的P02_RX和P03_TX引脚实现串口双向通信
STM32的USART0与ZigBee的P02_RX
和P03_TX引脚实现串口双向通信
BY:T7
Date:20171214
At:YSU_B307
开发环境:
uVision : V5.12.0.0 STM32F103V8T6
库版本: STM32F10x_StdPeriph_Lib_V3.5.0
一、硬件连接:
1.STM32:
2.Zigbee
3.力特Z-TEK ZY099 RS232 TO TTL(5V)串口转换器兼容电平232转TTL
4.九针串口线RS232线db9公对公交叉线
5.STM32到ZigBee的连线图
二、代码:
1.STM32代码:功能:串口接收什么,发送什么
链接:https:///s/1bGgurO 密码:m9ls
3.ZigBee代码:功能:串口透传
链接:https:///s/1nvvHutz 密码:1k27
三、实验结果:
功能实现:如上述连接好硬件并且代码下载后,将ZigBee协调器通过串口连接到PC,打开sscom32,给协调器发送“This is the Serial Test!”,协调器经过串口透传功能将该数据发送给终端节点,终端节点接收该消息并且通过P02_RX,P03_TX---->TTL转RS232--->STM32;随后STM32接收该数据并且通过串口将该数据经RS232转TTL --->P02_RX,P03_TX(终端节点)--->协调器,再由协调器的串口发送到PC的sscom32窗口。如下图:
百度云链接:
链接:https:///s/1kVqvLp9 密码:w82m
Zigbee协议概述
Zigbee协议概述
Zigbee协议是一种低功耗、短距离无线通信协议,专门设计用于无
线传感器网络(WSN)应用。它基于IEEE 802.15.4 标准,采用了星型
网络拓扑结构,可实现可靠的数据传输和设备间的低功耗通信。本文
将对Zigbee协议的特点、架构以及应用进行详细概述。
一、Zigbee协议特点
Zigbee协议具有以下几个显著的特点:
1. 低功耗:Zigbee协议专为低功耗应用设计,能够延长设备的电池
寿命,从而实现更长时间的运行。
2. 自组织网络:Zigbee设备能够通过协调器完成自组织网络的建立,使得网络的搭建非常方便,而且可靠性高。
3. 网络容量大:Zigbee协议支持大规模的设备连接,可以实现数千
个设备之间的通信。
4. 安全性高:Zigbee协议采用了多层的安全机制,包括对数据的加
密和认证,保证网络的安全性。
5. 跨平台互联:Zigbee协议可以与其他无线通信技术实现互联互通,如与Wi-Fi、蓝牙等进行无缝连接。
二、Zigbee协议架构
Zigbee协议采用了分层体系结构,包括应用层、网络层、MAC层
和物理层。各层的功能如下:
1. 应用层:负责定义应用数据的格式和协议,包括设备间的通信、节点功能以及数据处理等。
2. 网络层:负责设备的寻址和路由选择,提供无线网络中的数据传输功能。
3. MAC层:负责保证数据传输的可靠性和低延迟,包括数据的分组和重传等功能。
4. 物理层:负责将数据转换为无线信号并进行无线传输,包括信道选择、调制解调和功率控制等。
三、Zigbee协议应用
Zigbee协议在各个领域有着广泛的应用,以下列举了几个典型的应用场景:
zigbee技术及应用
Zigbee技术简介及应用
摘要二十一世纪初,信息技术的迅猛发展使人们的生活水平和工作效率极大地提高。近距离内各种设备的无线通讯成为一个研究热点。目前也有着几种发展比较成熟的无线通讯技术。本文介绍的是目前一种比较流行的短距离无线通讯接入技术——Zigbee。这种技术将使短距离无线通讯技术广泛地应用于生产生活中成为可能。介绍完该技术后,通过特定的一个例子SampleApp工程对该技术进行进一步说明,该例子是现的功能是:A、B两个节点,当按下A(或B)节点的按键1时,点亮或熄灭B(或A)节点的LED1灯。
关键词:Zigbee技术;无线通讯技术
1 Zigbee技术概述及其特征
1.1 Zigbee技术概述
ZigBee的名称源于蜜蜂的舞蹈,蜜蜂通过跳ZigZag形状的舞蹈交换各种信息。故将新一代无线通信技术命名为ZigBee。ZigBee过去又称为"HomeRF Lite"、"RF-EasyLink"或"FireFly"无线电技术,目前统称为ZigBee技术。ZigBee是在2004年底才由Zigbee联盟正式发布的一种无线传输协议。2006年12月,该联盟正式推出Zigbee的升级规范——Zigbee2006,也称为“增强型”Zigbee。
Zigbee技术是一种可以实现短距离内双向无线通讯的技术。Zigbee技术以其复杂程度低、能耗低、成本低取胜于其余的短距离无线通讯技术。其主要应用于短距离内,传输速度要求不高的电子通讯设备之间的数据传输和典型的有周期性、间歇性和地反应时间的数据的传输。
Zigbee是IEEE802.15.4技术的商业名称,该技术的核心由其制定。能够在三个不同的频段上通讯。全球通用的频段是2.4-2.484GHz,欧洲采用的频段是868.0-868.66MHz,美国采用的频段是902-928MHz。该技术的高层应用和市场推广由Zigbee联盟负责。目前,该联盟已有180多个成员企业,包括终端产品商,软件供应商和系统集成商。
《无线短距离通信技术开发项目教程》教学课件—03 ZigBee协议和协议栈
Acronyms and Abbreviations缩略语
HCL Home Controls-Lighting MAC Media Access Control
NWK Network layer OEM Original Equipment Manufacturer PAN Personal Area Network PDU Protocol Data Unit RF Radio Frequency SAP Service Access Point ZDO ZigBee Device Objects
ZigBee网络术语
设备描述(Device Description) Device Description是指一个大型目标应用的一部分,包括一个或多个群集,并 且指定群集(簇)是输入还是输出。
配置文件(Profile) Profile可以理解为共同促成交互式应用的多个设备描述项的集合。 ZigBee联 盟已经定义了部分标准的配置文件,比如远程控制开关配置文件和光传感器 配置文件等。用户也可以创建自己的配置文件然后递交ZigBee联盟测试、审 核批准。
包选择路由,确保数据包能够可靠的从一个节点发送到另一个节点,此外, 网络层还具有安全特性,用户可以自行选择所需要的安全策略。 应用程序支持子层:提供一些API函数供用户调用,此外,绑定表也是存储在应用 程序支持子层。 各层之间进行数据传送是通过服务接入点来实现的。有两种类型的服务接入 点:一种用于数据传输的服务接入点,另一种是用于管理的服务接入点。
zigbee_cc2530_解决串口显示头几个乱码
关于Zigbee_cc2530解决串口显示头几个乱码
解决思路:
本来DS18B20温度采集回来,是通过simpleCollector.c中zb_ReceiveDataIndication函数中的debug_str( (uint8 *)buf );函数实现的。我们要跳过这个函数,用HalUARTWrite()这个函数实现串口功能。
解决方法:
(1)串口初始化
1.在sapi.c中加入#include "MT_UART.h"头文件,这里注意一定要可以预编译。
2.如下图所示,在sapi.c的SAPI_Init( byte task_id )函数中加入这两句话MT_UartInit();//串口初始化代码和MT_UartRegisterTaskID(task_id);//登记任务号
上面这样,串口就可以使用了。
(2)在simpleCollector.c中添加头文件#include "MT_UART.h"
(3)在simpleCollector.c中的zb_ReceiveDataIndication()函数中添加HalUARTWrite(0, buf, (byte)osal_strlen( (void*)buf ));
HalUARTWrite(0,"\n",1);
下载到两个节点中,可以看到你成功了。(如下图)
//原创:褚建平,唐彬。希望你转载时声明。
ZigBee的应用层
目录
1、概述 (3)
1.1、应用支持子层(APS) (4)
1.2、ZigBee设备对象(ZDO) (4)
1.2.1、设备发现 (4)
1.2.2、服务发现 (4)
1.2.3、制造商所定义的应用对象 (5)
2、应用支持子层(APS) (5)
2.1、概述 (5)
2.2、APS数据实体APSDE (5)
2.3、APS管理实体APSME (5)
2.4、服务规范 (6)
2.4.1、APS数据服务 (6)
2.4.2、APS管理服务 (11)
2.4.2.1、绑定原语 (12)
2.4.2.2、信息库维护 (13)
2.4.2.3、组管理 (15)
2.5、帧格式 (17)
2.5.1、通用的APDU帧格式 (17)
2.5.2、不同帧类型的格式 (18)
2.6、功能描述 (19)
2.6.1、永久数据 (19)
2.6.2、绑定 (19)
2.6.3、组寻址 (20)
2.6.4、重传 (21)
2.6.5、分段的传输 (21)
2.7、应用支持子层状态值 (21)
参考书籍 (22)
ZigBee的应用层协议格式
层通信,从而实现对这些层的初始化和配置。附属在端口0的对象被称为ZigBee设备对象
(ZDO)。端口255用于向所有端口的广播。端口241~254是保留端口。
所有端口都使用应用支持子层(APS)提供的服务。APS通过网络层和安全服务提供层与端口相连接,并为数据传送、安全和绑定提供服务,因此能够适配不同单兼容的设备,如带灯的开关。
APS使用网络(NWK)层提供的服务。NWK负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过ZigBee设备对象(ZDO)对网络层参数进行配置和访问。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、串口收发基础实验 二、ZigBee协议栈串口应用扩展实验
一、串口收发基础实验
实验课题:串口数据收发基础实验 实验目的:利用串口收发数据 试验步骤:ZigBee协议栈中串口通信的配置使用一个结构 体来实现,该结构体为hal_UARTCfg_t, 不必关心该结构体的具体定义形式,只需要对其功能有个 了解,该结构体将串口初始化的参数集合在一起, 只需要初始化各个参数即可 最后使用HalUARTOpen()函数对串口进行初始化,该函数将 halUARTCfg_t类型的结构体变量作为相关参数
const cId_t GenericApp_ClusterList[GENERICAPP_MAX_CLUSTERS] = { GENERICAPP_CLUSTERID }; const SimpleDescriptionFormat_t GenericApp_SimpleDesc = { GENERICAPP_ENDPOINT, GENERICAPP_PROFID, GENERICAPP_DEVICEID, GENERICAPP_DEVICE_VERSION, GENERICAPP_FLAGS, GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList, 0, (cId_t *)NULL }; endPointDesc_t GenericApp_epDesc; byte GenericApp_TaskID; byte GenericApp_TransID; //unsigned char uartbuf[128]; //将这一行注释掉
uartConfig.configured = TRUE; uartConfig.baudRate = HAL_UART_BR_115200; uartConfig.flowControl = FALSE; uartConfig.callBackFunc = NULL; //置空,即无需回调函数 HalUARTOpen (0,&uartConfig ); //串口初始化
//任务初始化函数 void GenericApp_Init( byte task_id ) { halUARTCfg_t uartConfig; GenericApp_TaskID = task_id; GenericApp_TransID = 0; GenericApp_epDesc.endPoint = GENERICAPP_ENDPOINT; GenericApp_epDesc.task_id = &GenericApp_TaskID; GenericApp_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&GenericApp_SimpleDesc; GenericApp_epDesc.latencyReq = noLatencyReqs; afRegister( &GenericApp_epDesc );
回调函数:通过指针(函数地址)调用的函数。如果把函数 的地址作为参数传递给另一个函数,当通过这个指针 调用它所指向的函数时,称为函数的回调。
• 使用串口的基本步骤: • ①初始化串口,包括设置波特率、中断等; • ②向发送缓冲区发送数据或者从接收缓冲 区读取数据。
串口工作原理剖析
• 在ZigBee协议栈中,halUARTCfg_t结构体 是如何定义的; • 串口是如何初始化的; • 发送给串口的数据时如何接受的; • 串口是如何向PC机发送数据的。 这些问题涉及如下三个函数……
百度文库
const cId_t GenericApp_ClusterList[GENERICAPP_MAX_CLUSTERS] = { GENERICAPP_CLUSTERID }; const SimpleDescriptionFormat_t GenericApp_SimpleDesc = { GENERICAPP_ENDPOINT, GENERICAPP_PROFID, GENERICAPP_DEVICEID, GENERICAPP_DEVICE_VERSION, GENERICAPP_FLAGS, GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList, 0, (cId_t *)NULL }; endPointDesc_t GenericApp_epDesc; byte GenericApp_TaskID; byte GenericApp_TransID;
二、ZigBee协议栈串口应用扩展实验
实验课题:ZigBee协议栈串口应用扩展实验 实验目的:利用串口收发数据 实验原理:协调器建立ZigBee无线网络,终端节点自动加入该网络中,然 后终端节点周期性地向协调器发送字符串“EndDevice” ,协调器收到该字符串后,通过串口将其输出到用户PC机。
//任务初始化函数 void GenericApp_Init( byte task_id ) { halUARTCfg_t uartConfig; GenericApp_TaskID = task_id; GenericApp_TransID = 0; GenericApp_epDesc.endPoint = GENERICAPP_ENDPOINT; GenericApp_epDesc.task_id = &GenericApp_TaskID; GenericApp_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&GenericApp_SimpleDesc; GenericApp_epDesc.latencyReq = noLatencyReqs; afRegister( &GenericApp_epDesc ); uartConfig.configured = TRUE; uartConfig.baudRate = HAL_UART_BR_115200; uartConfig.flowControl = FALSE; uartConfig.callBackFunc = rxCB; HalUARTOpen (0,&uartConfig ); //串口初始化 }
/* typedef struct { byte endPoint; byte *task_id; SimpleDescriptionFormat_t *simpleDesc; afNetworkLatencyReq_t latencyReq; }endPointDesc_t; */ void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pckt ); void GenericApp_SendTheMessage( void ); //UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events ); static void rxCB(uint8 port,uint8 event);
• ZigBee协议栈中提供的与串口操作有关的 三个函数为 可在zmain.c和hal_uart.c中查看相关函数 • uint8 HalUARTOpen(uint8 halUARTCfg_t *config); • uint16 HalUARTRead(uint8 port,uint8 *buf,uint16 len); • Uint16 HalUARTWrite(uint8 prot,uint *buf,uint16 len);
/* typedef struct { byte endPoint; byte *task_id; SimpleDescriptionFormat_t *simpleDesc; afNetworkLatencyReq_t latencyReq; }endPointDesc_t; */ void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pckt ); void GenericApp_SendTheMessage( void ); //static void rxCB(uint8 port,uint8 event); //将这一行注释掉
//事件处理函数 UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events ) { return 0; //本实验没有进行事件处理 }
static void rxCB(uint8 port,uint8 event) { unsigned char uartbuf[128]=" "; HalUARTRead(0,uartbuf,16); //调用函数,从串口读取数据并将其 放在uartbuf数组中 if(osal_memcmp(uartbuf,"www.wlwmaker.com",16)) //使用 osal_memcmp()判断接收到的数据是否是“www.wlwmaker.com”,返回 TRUE,执行HalUARTWrite()函数 { HalUARTWrite(0,uartbuf,16); //调用函数将接收到的字符输出到 串口 } } //ZigBee协议栈使用条件编译,在GenericApp-Coordinator工程上右键 单击,options/C/C++ Compiler在Defined symbols:下拉框中添加 HAL_UART=TRUE,点击OK即可。
PC机
ZigBee网络
EndDevice
Coordinator
Coordinator.c
• • • • • • • • • • • • • • • #include "OSAL.h" #include "AF.h" #include "ZDApp.h" #include "ZDObject.h" #include "ZDProfile.h" #include <String.h> #include "Coordinator.h" #include "DebugTrace.h" #if !defined( WIN32 ) #include "OnBoard.h" #endif #include "hal_lcd.h" #include "hal_led.h" #include "hal_key.h" #include "hal_uart.h"
( )
Coordinator.c
• • • • • • • • • • • • • • • • #include "OSAL.h" #include "AF.h" #include "ZDApp.h" #include "ZDObject.h" #include "ZDProfile.h" #include <String.h> #include "Coordinator.h" #include "DebugTrace.h" #if !defined( WIN32 ) #include "OnBoard.h" #endif #include "hal_lcd.h" #include "hal_led.h" #include "hal_key.h" #include "hal_uart.h" //包含头文件
}
//事件处理函数 UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events ) { afIncomingMSGPacket_t *MSGpkt; if( events & SYS_EVENT_MSG ) { MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive(GenericApp_TaskID); while( MSGpkt) { switch( MSGpkt->hdr.event ) { case AF_INCOMING_MSG_CMD: GenericApp_MessageMSGCB( MSGpkt ); //完成对接收数据的处理 break; default: break; }