微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > ziebee协议栈学习

ziebee协议栈学习

时间:10-02 整理:3721RD 点击:


zigbee协议栈是zigbee联盟制定的规范,而Z-Stack协议栈是TI zigbee节点的协议栈结构。

jennic的jn5139远没有TI的cc2430那么火,它不开放自己的协议栈,适合二次开发,用户想在zigbee协议栈上开发,也只能利用它提供的有限的接口。这些API函数中主要是两种:stack function调用app(application) function和app function调用stack function。我也初步了解到,协议栈分层并不是那么严格的,分层只是为了理解方便,比如,jn5139用户不能直接在网络层进行操作,但是应用层的app function可以调用一些函数完成对网络层的操作。

一、名词解释

UART:UniversalAsynchronous Receiver/Transmitter,通用异步接收/发送装置,UART是一个并行输入成为

串行输出的芯片

端点(endpoint):它是一个8位的字段,描述一个射频端所支持的不同应用。

端点0x00:用于寻址设备配置文件,这是每个ZigBee设备必须使用的端点;
端点0xff:用于寻址所有活动端点;
端点0xf10xfe:保留;
端点0x010xf0: 共支持240个应用,即一个物理信道最多支持240个虚拟链路。

属性(attribute):设备之间通信的每一种数据像开关的状态或温度计值等皆可称为属性。每个属性可得到唯一的ID,它们都用结构体来描述

cluster:簇,多个属性的汇集形成了簇,簇是属性的集合,每个簇也拥有一个唯一的ID。与WSN中的分簇相区别。

描述符(Descriptor):每一个端点必须有一个端点描述符endPointDesc,端点描述符里包括一个简单描述符SimpleDescriptionFormat,它们都用结构体来描述。(摘自FS_ZigBee协议栈实验指导书,与jennic zigbee的格式可能会有出入)

简单描述符结构体包括:端点号,支持的profile ID,支持的设备ID ,执行的设备描述的版本,终端支持的输入簇数目,指向输入Cluster ID列表的指针,终端支持的输出簇数目,指向输出簇 ID列表的指针。

端点描述符结构体包括:端点号,任务ID号简单描述符延时请求

绑定(binding):通过使用ClusterID不同设备上的端点建立一个逻辑上的连接。

分层协议标准:Request:上层向本层请求指定的服务;
Confirm:本层响应上层的请求;
Indication:本层发送给上层用来指示本层的某一事件;
Response:上层响应本层的指示。

ZDP:zigbee device profile

二、MAC层一些概念

MAC帧分为信标帧、数据帧、确认帧和命令帧

CAP:contention Access period竞争接入期,任何设备想在此时通信,必须采用CSMA-CA竞争机制

CFPcontention free period非竞争期:GTS组成的几个时隙,这段时期内不需竞争

GTS:Guaranteed Time Slot有保证的时隙,活动超帧的一部分,为实现一些特殊应用开辟的,在GTS内没有竞争

在MAC层当中规定了两种信道接入模式,一种是信标(beacon)模式,另一种是非信标模式。信标模式当中规定了一种“ superframe”的格式,在超帧的开始发送信标帧,里面含有一些时序以及网络的信息,紧接着是竞争接入时期,在这段时间内各节点以竞争方式接入信道,再后面是非竞争接入时期,节点采用时分复用的方式接入信道,然后是非活跃时期,节点进入休眠状态,等待下一个超帧周期的开始又发送信标帧。而非信标模式则比较灵活,节点均以竞争方式接入信道,不需要周期性的发送信标帧。显然,在信标模式当中由于有了周期性的信标,整个网络的所有节点都能进行同步,但这种同步网络的规模不会很大。实际上,在ZigBee当中用得更多的可能是非信标模式。

信标帧:信标帧在网络中用于协调点与周围节点间的同步、区分PAN和描述超帧结构

超帧:我理解的是一个超帧由多个帧构成。超帧由协调器发送并受网络信标的限制,而且它还被分为16个大小相同的时隙。超帧的第一个时隙用来传输信标帧。如果协调器不希望使用超帧结构,它就不发送信标。超帧有活动和不活动部分(网络休眠区和网络活动区。在不活动部分,协调器与PAN之间不能发生联系,并进入低功耗模式对于应用于低延迟或需要在特定数据带宽的情况下,PAN协调器可以用活动超帧的一部分来实现,这部分称为保证时隙(Guaranteed Time Slot GTS)。保证时隙(可有多个)形成了非竞争期CFP),它始终出现在CAP之后和活动超帧之前PAN协调器可分配七个GTS,而每个GTS时间不少于一个时隙。然而CAP的有效部分应当保留,使基于竞争的其它网络设备和新设备能接入网络。所有基于竞争的传输应当在CFP开始之前完成,同时每个工作在GTS时期的设备应当确保它的传输在下一个GTS开始和CFP的结束之前完成。




信标模式下ZC,ZR,ZE又ZC控制同步休眠同步工作。

非信标模式下,只有ZE会休眠。这种情况下不需要信标帧。


三、coordinator中的一些函数

1.初始化中用到的函数

在AppColdStart()中进行一些初始化,

网络号:当JZS_sConfig.u16PanId = 0xffff时,节点会建立或者加入最好的网络。

信道:coordinator有16个频道可以选择,通常coordinator自动选择最安静的频道。

vLedControl(LED1, TRUE);用于控制led灯的亮灭。

vUART_printInit(),初始化UART print environment,在Printf.c中有定义

vAHI_UartSetInterrupt()启动串口中断,没有找到定义函数的源文件

bBosRun(TRUE),启动基本操作系统

2.用户自定义函数中调用的函数

用户自定义函数之前使用PRIVATE标识

添加设备描述调用的函数:

bBosCreateTimer(vToggleLed, &u8Msg, 0, (APP_TICK_PERIOD_ms / 10), &u8TimerId)设置定时器,用于周期性调用函数

afmeAddSimpleDesc()添加节点简单描述

afdeDataRequest()向其他节点发送控制信息,数据请求等,参数包括:目的地址,目的端点,源地址,profile id,簇id,数据帧类型(KVP或MSG),发送数据的指针,数据发送深度。

3.供协议栈调用的回调函数,通常以JZA_开头

JZA_vStackEvent()用于处理协议栈反馈网络层的一些网络事件,在函数体,对网络层的一些时间作相应的处理,如网络建立成功之后,对节点的endpoint添加简单描述

JZA_bAfMsgObject()接受发送来的MSG类型消息

JZA_vAfKvpResponse()接收到KVP类型消息后进行回应,如果函数体为空,则不回应

先写这么些,很多地方还没弄明白

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top