搜档网
当前位置:搜档网 › ZigBee协议栈TI Z

ZigBee协议栈TI Z

ZigBee协议栈TI Z-Stack分析

2007年4月,德州仪器推出业界领先的ZigBee协议栈(Z-Stack)。Z-Stack符合ZigBee 2006规范,支持多种平台,包括基于CC2420收发器以及TI MSP430超低功耗单片机的平台,CC2430的SOC SLANRF-2431DK平台。Z-Stack 包含了网状网络拓扑的几近于全功能的协议栈,在竞争激烈的ZigBee领域占有很重要地位。

ZigBee stack应用开发相关概念

ZigBee术语

一、属性

属性Attribute是一个反映物理数量或状态的数据值,比如开关值(On/Off) ,温度值、百分比等。

二、群集

群集Cluster是包含一个或多个属性(attribute)的群组。简单的说,群集就是属性的集合。每个群集都被分配一个唯一的群集ID 且每个群集最多有65536个属性。

三、设备描述

设备描述Device Description是指一个大型目标应用的一部分,包括一个或多个群集,并且指定群集是输入还是输出。

四、端点

端点EndPoint是协议栈应用层的入口,也可以理解应用对象(Application Object)存在的地方,它是为实现一个设备描述而定义的一组群集。每个ZigBee设备可以最多支持240这样的端点,这也意味着在每个设备上可以定义240个应用对象。端点0被保留用于与ZDO接口而端点255被保留用于广播,端点241-254则被保留用于将来做扩展使用。[25]

五、配置文件

配置文件Profile可以理解为共同促成交互式应用的多个设备描述项的集合。 ZigBee联盟已经定义了部分标准的配置文件,比如远程控制开关配置文件和光传感器配置文件等。任何遵循某一标准配置文件的节点都可以与实现相同配置文件的节点进行互操作。用户也可以创建自己的配置文件然后递交ZigBee联盟测试、审核批准。

配置文件是对逻辑设备及其接口描述的集合,是面向某个应用类别的公约、准则。设备描述符是为分布应用提供的描述项,多种描述项共同组成描述集合Profile。定义Profile的目的就是使得不同厂商生产的ZigBee设备能够实现互操作。

六、节点

节点Node也可以理解为一个容器,包含一组ZigBee设备,分享一个无线信道。每个节点有且只有一个无线信道使用。

七、绑定(Binding)

ZigBee定义了一个称为端点绑定的特殊过程。绑定即在源节点的某个端点( EndPoint)和目标节点的某个端点之间创建一条逻辑链路。绑定可以发生在两个或多个设备之间。协调器节点维护一个基本上包括两个或多个端点之间的逻辑链路的绑定表。

在绑定表中,包含如下信息,源节点和目的节点的IEEE地址、Endpoint号以及ClusterID。对于可以建立绑定关系的两个节点,它们的Cluster的属性必须一个选择“输入”,另一个选择“输出”,而且ClusterID值相等,只有这样,它们彼此才能建立绑定。如果目标设备的扩展地址是已知的,则调用zb_BindDeviceRequest( )函数可以创建一个绑定条目。

八、寻址(Addressing)

在ZigBee网络中,使用两种地址:

一种是64位的IEEE Address,也叫物理地址,64位地址在所有ZigBee设备之中是唯一,其中包含一个由IEEE 分配、也是全球唯一的24位制造商特定组织标识符OUI(Organizationally Unique Identifier);

另一种是16位的NWK Address即网络地址,当设备加入ZigBee网络时,从允许其加入的父设备上获取16位网络地址。该地址在ZigBee网络中唯一,用于数据传输和数据包路由。

在ZigBee中,数据包可以单点传送(unicast),多点传送(multicast)或者广播传送(broadcast),所以必须有地址模式参数。一个单点传送数据包只发送给一个设备,多点传送数据包则要传送给一组设备,而广播数据包则要发送给整个网络的所有节点。当应用程序需要将数据包发送给网络上的一组设备时,还可以使用组寻址方式(Group Addressing)。

TI Z-Stack协议栈架构分析

协议栈定义通信硬件和软件在不同级如何协调工作。在网络通信领域,在每个协议层的实体们通过对信息打包与对等实体通信。在通信的发送方,用户需要传递的数据包按照从高层到低层的顺序依次通过各个协议层,每一层的实体按照最初预定消息格式向数据信息中加入自己的信息,比如每一层的头信息和校验等终抵达最低的物理层,变成数据位流,在物理连接间传递。在通信的接收方数据包依次向上通过协议栈,每一层的实体能够根据预定的格式准确的提取需要在本层处理的数据信息,最终用户应用程序得到最终的数据信息进行处理。

ZigBee无线网络的实现,是建立在ZigBee协议栈的基础上的,协议栈采用分层的结构协议分层的目的是为了使各层相对独立,每一层都提供一些服务,服务由协议定义,程序员只需关心与他的工作直接相关的那些层的协议,它们向高层提供服务,并由低层提供服务。

在ZigBee协议栈中,PHY、MAC层位于最低层,且与硬件相关;NWK、APS, APL层以及安全层建立在PHY和MAC 层之上,并且完全与硬件无关。分层的结构脉络清晰、一目了然,给设计和调试带来极大的方便。

整个Z-Stack采用分层的软件结构,硬件抽象层(HAL)提供各种硬件模块的驱动,包括定时器Timer,通用I/O 口GPIO,通用异步收发传输器UART,模数转换ADC的应用程序接口API,提供各种服务的扩展集。操作系统抽象层OSAL 实现了一个易用的操作系统平台,通过时间片轮转函数实现任务调度,提供多任务处理机制。用户可以调用OSAL提供的相关API进行多任务编程,将自己的应用程序作为一个独立的任务来实现。

Z-stack OSAL API 介绍

OSAL层是与协议栈独立的,但是整个协议都要基于OS才能运行。OSAL提供如下服务和管理:信息管理、任务同步、时间管理、中断管理、任务管理、内存管理、电源管理以及非易失存储管理。

一、信息管理API

信息管理为任务间的信息交换或者外部处理事件(例如:中断服务程序或一个控制循环内的函数调用等)提供一种管理机制。包括允许任务分配或不分配信息缓存、发送命令信息到其他任务、接受应答信息等API函数。

二、同步任务API

该API允许一个任务等待某个事件的发生并返回等待期间的控制。该API的功能是为某个任务设置事件,一旦任何一个事件被设置就修改该任务。

三、时间管理API

该API允许定时器被内部(Z-Stack)任务和外部任务使用。该API提供开始和停止一个定时器的功能,这些定时器能用毫秒(ms)设置。

四、中断管理API

这些API是外部中断和任务的接口。这些API函数允许一个任务为每个中断分配指定服务程序。这些中断能被允许或禁止。在服务程序内,可为其他的任务设置事件。

五、任务管理API

该API用在管理OSAL中的任务,包括系统任务和用户自定义任务的创建、管理和信息处理等。

六、内存管理API

该API描绘了简单的存储分配系统。这些函数允许动态存储分配。

七、电源管理API

这里描写了OSAL的电源管理系统。当OSAL安全地关闭接收器与外部硬件并使处理器进入休眠模式时,该系统提供向应用/任务通告该事务的方式。

Z-Stack ZigBee API命令解释:应用程序编程接口(1)

1.1 ZigBee 设备对象(ZDO)

本节列举了ZDO 层提供的所有函数调用,它们对于实现ZigBee 设备功能层(ZDP)定义的所有命令和响应,以及其它能使设备像ZigBee 设备一样运行的功能都是必需的。在概述一节中根据功能将ZDO 的所有API 函数分类,每一类将在以下的章节中进行讨论。

1.1.1 概述

ZDP描述了ZDO内部一般性的ZigBee 设备功能是如何实现的。它定义了使用命令和响应对的设备描述和簇。通过定义命令结构体的信息,ZDP为ZDO和应用程序提供了如下功能:

? 设备网络启动

? 设备和服务发现

? 终端设备绑定、绑定和取消绑定服务

? 网络管理服务

设备发现是为一个ZigBee 设备找到另一个ZigBee 设备的过程。设备发现的一个例子是网络寻址命令,它以广播的形式发送,携带已知的IEEE 地址作为数据的有效载荷。目标设备应该做出响应并告知其网络地址。设备发现能使个人区域网络中的设备发现其它ZigBee 设备提供的服务。它使用各种描述符来指定设备的功能。

典型的绑定用于网络配置期间,即当用户需要将控制设备绑定到被控制设备(比如开关和灯光)时。特别地,终端设备绑定支持一个简化的绑定方法,即使用用户的输入来识别控制或被控制的设备对。绑定和取消绑定服务提供了创建和删除绑定表条目的功能,其中绑定表的功能是记录控制信息及其各自的目的地。

网络管理服务提供了检索设备管理信息的功能,包括网络发现结果、路由表内容、到周边节点的链路质量以及绑定表内容。它还提供了通过断开与个人区域网络设备的联系来控制网络联系的功能。网络管理服务主要是针对用户或调试工具而设计,用来管理网络。以上三种功能的API将在下面的分节中讨论。

1.1.2 ZDO 网络启动

通过默认的ZDApp_Init()(在ZDApp.c中)启动ZigBee 网络中的设备。但是一个应用程序可以跳过这个默认行为。对于控制网路设备启动的应用程序,必须包含HOLD_AUTO_START作为编译选项,还建议包含NV_RESTORE编译选项(以便在NV中保存ZigBee 网络状态)。如果设备包含这些编译标志,将需要调用ZDOInitDevice()来启动网络中的设备。

1.1.

2.1 ZDOInitDevice()

启动网络中的设备。这个函数将读取ZCD_NV_STARTUP_OPTION (NV 条目)的值来决定是否恢复设备的网络状态。要调用这个函数,设备必须先编译HOLD_AUTO_START 编译标志。

如果应用程序想要强制加入一个新设备,在调用此函数之前应用程序应该设置ZCD_NV_STARTUP_OPTION NV条目下的ZCD_STARTOPT_DEFAULT_NETWORK_STATE位,加入新设备意味着不再恢复设备的网络状态。使用zgWriteStartupOptions()来设置这些选项[zgWriteStartupOptions(ZG_STARTUP_SET,

ZCD_STARTOPT_DEFAULT_NETWORK_STATE);]。

函数原型

uint8 ZDOInitDevice( uint16 startDelay );

参数描述

startDelay—设备启动时延(单位为毫秒)。这一时延增加了一个变化幅度:((NWK_START_DELAY + startDelay) + (osal_rand() & EXTENDED_JOINING_RANDOM_MASK))

返回值

这个函数将返回下面值之一:

ZDO _INITDEV_RESTORED_NET WORK_STATE 该设备的网络状态为恢复状态。

ZDO _INITDEV_NEW_NETWORK_STATE 网络状态初始化。这可能意味ZCD_NV_STARTUP_OPTION说,不能恢复,或它可能意味着,没有任何网络状态恢复。

ZDO _INITDEV_LEAVE_ NOT_STARTED 复位前,网络假发重返选项设置为TRUE。因此,该设备没有在网络中启动(仅一次)。下一次调用该函数它才会启动。

1.1.3 ZDO 信息回调

一个应用程序使用ZDO_RegisterForZDOMsg()登记信息,就能够接收任何无线信息(请求或响应)。

1.1.3.1 ZDO_Regis terForZDOMsg()

调用此函数请求一个空中信息。该信息的复本会被送到OSAL信息的一个任务中。接收此信息的任务可以自己解析信息或调用一个ZDO解析函数来解析该信息。只有响应信息具有ZDO解析函数。

登记信息之后,信息被接收(OTA:无线传送),作为一个ZDO_CB_ MSG(OSAL 信息)被发送至一个应用程序或任务。信息的主体(zdoIncomingMsg_t—定义在ZDProfile.h 中)包含了OTA信息。

函数原型

ZStatus_t ZDO_RegisterForZDOMsg( uint8 taskID, uint16 clusterID );

参数描述

tasked—应用程序的任务ID。这将用于发送OSAL信息。

clustered—要接收的无线信息的簇ID号(例如:NWK_addr_rsp)。这些定义在ZDProfile.h中。

返回值

ZStatus_t —定义在ZComDef.h中的ZStatus_t 状态值。

1.1.3.2 ZDO_Remo veRegisteredCB()

调用此函数取消一个无线信息请求。

函数原型

ZStatus_t ZDO_RemoveRegisteredCB( uint8 taskID, uint16 clusterID );

参数描述

tasked—应用程序的任务ID。调用ZDO_RegisterForZDOMsg()时必须使用同一ID。

clustered—无线信息的簇ID。调用ZDO_RegisterForZDOMsg()时必须使用同一ID。

返回值

ZStatus_t—定义在ZComDef.h中的ZStatus_t状态值。

1.1.4 ZDO 查询API

查询API建立、发送ZDO设备和服务的查询请求和响应。所有API函数及其相应的ZDP命令列在下表中。用户可以将命令名称作为关键字在最新的ZigBee 规范中查阅,以作进一步参考。这些函数将在下面的分节中一一详细讨论。

Zigbee设备对象API 函数ZDP发现命令

ZDP_NwkAddrReq() NWK_addr_req

ZDP_NWKAddrRsp() NWK_addr_rsp

ZDP_IEEEAddrReq() IEEE_addr_req

ZDP_IEEEAddrRsp() IEEE_addr_rsp

ZDP_NodeDescReq() Node_Desc_req

ZDP_NodeDescRsp() Node_Desc_rsp

ZDP_PowerDescReq() Power_Desc_req

ZDP_PowerDescRsp() Power_Desc_rsp

ZDP_SimpleDescReq() Simple_Desc_req

ZDP_SimpleDescRsp() Simple_Desc_rsp

ZDP_ComplexDescReq() Complex_Desc_req

ZDP_ActiveEPIFReq() Active_EP_req

ZDP_ActiveEPIFRsp() Active_EP_rsp

ZDP_MatchDescReq() Match_Desc_req

ZDP_MatchDescRsp() Match_Desc_rsp

ZDP_UserDescSet() User_Desc_set

ZDP_UserDescConf() User_Desc_conf

ZDP_UserDescReq() User_Desc_req

ZDP_UserDescRsp() User_Desc_rsp

ZDP_EndDeviceAnnce() Device_annce

ZDP_ServerDiscReq() System_Server_Discovery_req

ZDP_ServerDiscRsp() System_Server_Discovery_rsp

Z-Stack ZigBee API命令解释:应用程序编程接口(2)

1.1.4.1 ZDP_NwkAddrReq()

调用此函数将生成一个根据其已知IEEE地址询问远程设备16位地址的信息。这个信息作为一个广播信息发送给网络中所有设备。

函数原型

afStatus_t ZDP_NwkAddrReq( byte *IEEEAddress, byte ReqType,byte StartIndex, byte SecuritySuite );

参数描述

IEEEAddress—请求设备的IEEE地址。

ReqType—响应信息类型要求。其允许值列在下表中:

名称描述

ZDP_NWKADDR_REQTYPE_ SINGLE 只返回设备的短地址和扩展地址。

ZDP_NWKADDR_REQTYPE_ EXTEND ED 返回设备短地址和扩展地址以及所有相关设备短地址。

StartIndex—响应设备的响应信息可以有更多的响应选项,请求程序可以在可能的响应设备中指定一个起始索引。索引从0开始。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

1.1.4.2 ZDP_NWKAddrRsp()

这实际上是一个调用ZDP_AddrRsp()的宏。这个调用将建立和发送一个网络地址响应。

函数原型

afStatus_t ZDP_NWKAddrRsp( byte TranSeq, zAddrType_t *dstAddr, byte Status, byte *IEEEAddrRemoteDev,byte ReqType, uint16 nwkAddr,byte NumAssocDev, byte StartIndex, uint16 *NWKAddrAssocDevList, byte SecuritySuite );

参数描述

TranSeq—本次事务的序列号。

DstAddr—目的地址。

Status—值如下:

含义值

ZDP_SUCCESS 0

ZDP_INVA LID_REQTYPE 1

ZDP_DEVICE_ NOT_FOUND 2

Reserved 0x03-0xff

IEEEAddrRemoteDev—远程设备的64位地址。

ReqType—该请求信息的请求类型。

nwkAddr—远程设备的16位地址。

NumAssocDev—计算与远程设备关联的设备个数,以及各自的16位短地址个数。如果远程设备无关联设备,NumAssocDev值应设为0,且StartIndex 和NWKAddrAssocDevList的值应设为空。

StartIndex—响应设备的响应信息中可以有更多的响应选项。请求程序可以给可能的响应设备指定一个起始索引。这是该响应信息的起始索引字段。

NWKAddrAssocDevList—16 位地址列表,与远程设备的关联设备一一对应。

NWKAddrAssocDevList 中的16 位地址个数由NumAssocDev 提供。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t 的AF层状态值。

1.1.4.3 ZDP_IEEEAddrReq()

调用此函数将生成一个根据其已知16位网络地址询问远程设备64位地址的信息。

函数原型

afStatus_t ZDP_IEEEAddrReq( uint16 shortAddr, byte ReqType, byte StartIndex, byte SecuritySuite );

参数描述

shortAddr—已知的16位网络地址。

ReqType—响应信息类型要求。

名称描述

ZDP_IEEEADDR_REQTYPE_ SINGLE 只返回该设备短地址和扩展地址。

ZDP_IEEEADDR_REQTYPE_ EXTEND ED 返回该设备短地址和扩展地址及所有相关设备短地址。

StartIndex—响应设备的响应信息可以有更多的响应选项,请求程序可以给可能的响应设备指定一个起始索引。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t 的AF层状态值。

1.1.4.4 ZDP_IEEEAddrRsp()

这实际上是一个调用ZDP_AddrRsp()的宏。这个调用将建立和发送一个IEEE地址响应。

函数原型

afStatus_t ZDP_IEEEAddrRsp( byte TranSeq, zAddrType_t *dstAddr, byte Status, byte

*IEEEAddrRemoteDev, byte ReqType, uint16 nwkAddr, byte NumAssocDev, byte StartIndex, uint16

*NWKAddrAssocDevList, byte SecuritySuite );

参数描述

TranSeq—本次事务的序列号。

DstAddr—目的地址。

Status—值如下:

含义值

ZDP_SUCCESS 0

ZDP_INVA LID_REQTYPE 1

ZDP_DEVICE_ NOT_FOUND 2

Reserved 0x03-0xff

IEEEAddrRemoteDev—远程设备的64位地址。

ReqType—该请求信息的请求类型。

nwkAddr—远程设备的16位地址。

NumAssocDev—计算与远程设备关联的设备个数,以及各自的16位短地址个数。如果远程设备无关联设备,NumAssocDev值应设为0,且StartIndex 和NWKAddrAssocDevList的值应设为空。

StartIndex—本次报告中关联设备列表的起始索引。

WKAddrAssocDevList—16位地址列表,与远程设备的关联设备一一对应。NWKAddrAssoc -DevList 中的16位地址个数由NumAssocDev提供。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t 的AF层状态值。

1.1.4.5 ZDP_NodeDescReq()

这实际上是一个调用ZDP_NWKAddrOfInterestReq()的宏。这个调用将为目的地址字段指定的远程设备建立和发

送一个节点描述请求。

函数原型

afStatus_t ZDP_NodeDescReq( zAddrType_t *dstAddr, uint16 NWKAddrOfInterest, byte SecuritySuite );

参数描述

DstAddr—目的地址。

NWKAddrOfInterest—目标设备的16位短地址。

SecuritySuite—该信息的安全类型要求。

返回值

Z-Stack ZigBee API命令解释:应用程序编程接口(3)

ZDP_NodeDescMsg()

调用此函数来响应节点描述请求。

函数原型

afStatus_t ZDP_NodeDescMsg( byte TransSeq, zAddrType_t *dstAddr,byte Status, uint16 nwkAddr, NodeDescriptorFormat_t *pNodeDesc,byte SecuritySuite );

参数描述

TranSeq—本次事务的序列号。

DstAddr—目的地址。

Status—值如下:

nwkAddr—设备的16位地址。

pNodeDesc—指向节点描述符的指针(定义在AF.h中)。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDP_PowerDescReq()

这实际上是一个调用ZDP_NWKAddrOfInterestReq()的宏。这个调用将建立和发送一个功率描述请求。使用这个宏来请求远程设备的功率描述。

函数原型

afStatus_t ZDP_PowerDescReq( zAddrType_t *dstAddr, int16 NWKAddrOfInterest,byte SecuritySuite );

参数描述

DstAddr—目的地址。

NWKAddrOfInterest—目标设备16位短地址。

SecuritySuite—该信息的安全类型要求。

返回值

ZDP_PowerDescMsg()

调用此函数来响应功率描述请求。

函数原型

afStatus_t ZDP_PowerDescMsg( byte TranSeq, zAddrType_t *dstAddr,byte Status, int16 nwkAddr, NodePowerDescriptorFormat_t *pPowerDesc,byte SecuritySuite );

参数描述

TranSeq—本次事务的序列号。

DstAddr—目的地址。

Status—值如下:

nwkAddr—设备16位地址。

pPowerDesc—指向功率描述符的指针(定义在AF.h中)。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDP_SimpleDescReq()

调用此函数将建立和发送一个简单描述符请求。

函数原型

afStatus_t ZDP_SimpleDescReq( zAddrType_t *dstAddr, uint16 nwkAddr,byte epIntf, byte SecuritySuite );

参数描述

DstAddr—目的地址。

nwkAddr—已知的16位网络地址。

epIntf—目标应用程序的终端设备或接口。

SecuritySuite—该信息的安全类型要求。

返回值

ZDP_SimpleDescRsp()

调用此函数来响应简单描述符请求。

函数原型

afStatus_t ZDP_SimpleDescRsp( byte TranSeq, zAddrType_t *dstAddr, byte Status, SimpleDescriptionFormat_t *pSimpleDesc,byte SecuritySuite );

参数描述

TranSeq—本次事务的序列号。

DstAddr—目的地址。

Status—值如下:

pSimpleDesc—指向简单描述符的指针(定义在AF.h中)。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中ZStatus_t的AF层状态值。

ZDP_ComplexDescReq()

这个调用建立和发送一个复杂描述符请求。它是一个调用ZDP_NWKAddrOfInterestReq()的宏。

函数原型

afStatus_t ZDP_ComplexDescReq( zAddrType_t *dstAddr, uint16 nwkAddr, byte SecuritySuite );

参数描述

DstAddr—目的地址。

nwkAddr—已知的16位网络地址。

SecuritySuite—该信息的安全类型要求。

返回值

ZDP_ActiveEPIFReq ()

这实际上是一个调用ZDP_NWKAddrOfInterestReq()宏。这个调用将建立和发送一个动态终端或接口请求。使用这个宏来请求远程设备的所有动态终端或接口。

函数原型

afStatus_t ZDP_ActiveEPIFReq( zAddrType_t *dstAddr, uint16 NWKAddrOfInterest, byte SecuritySuite );

参数描述

DstAddr—目的地址。

NWKAddrOfInterest—目标设备的16位短地址。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDP_ActiveEPIFRsp()

这是一个调用ZDP_EPIFRsp()宏。调用此函数来响应动态终端或接口请求。

函数原型

afStatus_t ZDP_ActiveEPIFRsp( byte TranSeq, zAddrType_t *dstAddr,byte Status, uint16 nwkAddr, byte Count, byte *pEPIntfList, byteSecuritySuite );

参数描述

TranSeq—本次事务的序列号。

DstAddr—目的地址。

Status—值如下:

nwkAddr—设备的16位网络地址。

Coun—pEPIntfList中的动态终端或接口个数。

pEPIntfList—设备的动态终端或接口数组。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDP_MatchDescReq()

这个调用将建立和发送一个匹配描述请求。使用这个函数查询与应用程序输入或输出簇列表相匹配的设备或应用程序。

函数原型

afStatus_t ZDP_MatchDescReq( zAddrType_t *dstAddr, uint16 nwkAddr,uint16 ProfileID,byte NumInClusters, byte *InClusterList, byteNumOutClusters, byte *OutClusterList, byteSecuritySuite );

参数描述

DstAddr—目的地址。

nwkAddr—已知的16位网络地址。

ProfileID—应用程序的特征ID,作为簇ID的参照。

NumInClusters—簇输入列表中的簇ID个数。

InClusterList—簇ID的输入数组(每个占1个字节)。

NumOutClusters—簇输出列表中的簇ID个数。

OutClusterList—簇ID的输出数组(每个占1个字节)。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDP_MatchDescRsp()

这是一个调用ZDP_EPIFRsp()的宏。调用此函数响应匹配描述请求。

函数原型

afStatus_t ZDP_MatchDescRsp( byte TranSeq, zAddrType_t *dstAddr, byte Status , uint16 nwkAddr, byte Count, byte *pEPIntfList, byteSecuritySuite );

参数描述

TranSeq—本次事务的序列号。

DstAddr—目的地址。

Status—值如下:

nwkAddr—设备16位网络地址。

Count—pEPIntfList中的动态终端或接口个数。

pEPIntfList—设备的动态终端或接口数组。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDP_UserDescSet()

这个函数建立和发送一个User_Desc_set信息来设置远程设备用户描述符。该请求将自身单播到远程设备或含有远程设备发现信息其它设备。请注意,远程设备应该定义了NV_RESTORE以启用此功能。

函数原型

afStatus_t ZDP_UserDescSet( zAddrType_t *dstAddr, uint16 nwkAddr,

UserDescriptorFormat_t *UserDescriptor, byte SecurityEnable );

参数描述

dstAddr—请求信息的目的地址。

nwkAddr—要寻找的远程设备的16位网络地址。

UserDescriptor—用户描述符配置。它包含一个长度小于或等于16个字符的ASCII字符串。它将被加上空格字符(0x20),使总长度为16位字符。

SecurityEnable —该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDP_UserDescConf()

这是一个直接调用ZDP_SendData ()的宏。调用此函数来响应User_Desc_Conf命令。

函数原型

afStatus_t ZDP_UserDescConf( byte TranSeq, zAddrType_t *dstAddr, byte Status, byte SecurityEnable );

参数描述

TranSeq—本次事务的序列号。

DstAddr—目的地址。

Status—值如下:

SecurityEnable —该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中ZStatus_t的AF层状态值。

ZDP_UserDescReq()

调用将建立和发送一个User_Desc_Req命令。是一个调用ZDP_NWKAddrOfInterestReq() 宏。

函数原型

afStatus_t ZDP_UserDescReq( zAddrType_t *dstAddr, uint16 nwkAddr, byte SecurityEnable );

参数描述

DstAddr—目的地址。

nwkAddr—已知的16位网络地址。

SecurityEnable —该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。.

ZDP_UserDescRsp()

这个调用将建立和发送一个User_Desc_Rsp命令。

函数原型

ZStatus_t ZDP_UserDescRsp( byte TransSeq, zAddrType_t *dstAddr, uint16 nwkAddrOfInterest, UserDescriptorFormat_t *userDesc, byte SecurityEnable );

参数描述

TranSeq—本次事务的序列号。

DstAddr—目的地址。

nwkAddrOfInterest—已知的16位网络地址。

userDesc—本地设备的用户描述符。

SecurityEnable —该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDP_EndDeviceAnnce()

这个函数为ZigBee 终端设备建立和发送一个End_Device_annce命令,来通知网络中的其它ZigBee 设备,该终端设备已经加入或重新加入网络。该命令包含终端设备新16位网络地址和64位IEEE地址,以及ZigBee 终端设备的容量。它以收到End_Device_annce命令后,所有接收者应在其所有内部参考中检查信息中提供的IEEE地址,并更新相应的网络地址。但不会为End_Device_annce命令再返回响应信息。

函数原型

afStatus_t ZDP_EndDeviceAnnce( uint16 nwkAddr, byte *IEEEAddr, byte capabilities, byte SecurityEnable );

参数描述

nwkAddr—本地设备的16位网络地址。

IEEEAddr—指向本地设备64位IEEE地址的指针。

Capabilities—本地设备的容量。

SecurityEnable —该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

Z-Stack ZigBee API命令解释:应用程序编程接口(4)

ZDP_ServerDiscReq()

这个函数建立和发送一个System_Server_Discovery_req请求信息,它包含一个16位服务器掩码。该请求的目的是寻找某个特定的系统服务器或服务器掩码中指明的服务器。该信息广播发送到所有包含RxOnWhenIdle 的设备。远程设备将接收到的服务器掩码和存储在本地节点描述符的掩码相比较后,只要有一位相匹配,就以单播的形式返回响应信息。

函数原型

afStatus_t ZDP_ServerDiscReq( uint16 serverMask, byte SecurityEnable );

参数描述

serverMask—要寻找的16位掩码的系统服务器。

SecurityEnable —该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDP_ServerDiscRsp()

这个函数建立和返回一个System_Server_Discovery_rsp响应。当收到System_Server_Discovery_req命令,且发现服务器掩码有匹配位时此函数将被调用。

函数原型

ZStatus_t ZDP_ServerDiscRsp( byte transID, zAddrType_t *dstAddr, byte status, uint16 aoi, uint16 serverMask, byte SecurityEnable );

参数描述

TransID—本次ZDO事务序列号。

dstAddr—响应信息的目的地。

status—状态始终是ZSUCCESS。

aoi—目标地址。目前还不使用。

serverMask—指明匹配系统服务器的16位屏蔽位。

securityEnable —该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDO 绑定API

ZDO绑定API建立、发送ZDO绑定请求和响应。所有绑定信息(表)保存在ZigBee 协调器中。

因此只有ZigBee 协调器可以接收绑定请求。下面的表格列出了ZigBee 规范中协议栈支持的绑定API,以及各自的响应命令名称。用户可以将命令名称作为关键字在最新的ZigBee 规范中查阅,以作进一步参考。这些原语将在下面的分节中一一讨论。

ZDP_EndDeviceBindReq()

这个调用将建立和发送一个终端设备绑定请求(“手动绑定”)。可以发送该信息来尝试一个设备的手动绑定功能。手动绑定之后你可以给协调器发送一个间接(无地址)信息,协调器将把该信息发送至绑定了该信息的设备,然后你就可以从新绑定的设备接收信息了。

函数原型

afStatus_t ZDP_EndDeviceBindReq( zAddrType_t *dstAddr, uint16 LocalCoordinator, byte epIntf, uint16 ProfileID, byte NumInClusters, byte *InClusterList, byte NumOutClusters, byte *OutClusterList, byte SecuritySuite );

参数描述

DstAddr—目标地址。

LocalCoordinator—已知16位网络地址的设备的父节点协调器。

epIntf—应用程序的终端或接口。

ProfileID—应用程序的特征ID,作为簇ID的参照。

NumInClusters—簇输入列表中的簇ID个数。

InClusterList—簇ID的输入数组(每个占一位字节)。

NumOutClusters—簇输出列表中的簇ID个数。

OutClusterList—簇ID的输出数组(每个占一位字节)。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDP_EndDeviceBindRsp()

这是一个直接调用ZDP_SendData ()的宏。调用此函数来响应终端设备绑定请求。

函数原型

afStatus_t ZDP_ EndDeviceBindRsp( byte TranSeq, zAddrType_t *dstAddr, byte Status, byte SecurityEnable );

参数描述

TranSeq—本次事务序列号。

DstAddr—目的地址。

Status—值如下:

SecurityEnable —该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDP_BindReq()

这实际上是一个调用ZDP_BindUnbindReq()的宏。这个调用将建立和发送一个绑定请求。使用这个函数来请求ZigBee 协调器根据簇ID绑定应用程序。

函数原型

afStatus_t ZDP_ Bind Req( zAddrType_t *dstAddr, byte *SourceAddr, byte SrcEPIntf, byte ClusterID, byte *DestinationAddr, byte DstEPIntf, byte SecuritySuite );

参数描述

DstAddr—目的地址。

SourceAddr—发送信息设备的64位IEEE地址。

SrcEPIntf—发送信息应用程序的终端或接口。

ClusterID—该信息要绑定的簇ID。

DestinationAddr—接收信息设备的64位IEEE地址。

DstEPInt—接收信息应用程序的终端或接口。

SecuritySuite—该信息的安全类型要求。

返回值

afStatus_t—这个函数使用AF层来发送信息,所以状态值是定义在ZComDef.h中的ZStatus_t的AF层状态值。

ZDP_BindRsp()

这是一个直接调用ZDP_SendData ()的宏。调用此函数响应绑定请求。

ZigBee 协议架构

根据应用和市场需要定义了ZigBee 协议的分层架构,其协议的体系结构如图1 所示,其中物理层(physical layer,PHY)和媒介访问控制层(medium access control sub-layer,MAC)是由IEEE802.15.4-2003 标准定义的,在这个底层协议的基础上ZigBee 联盟定义了网络层(network layer,PHY)和应用层(application layer,APL)架构. 图1 zigbee协议栈体系结构 物理层规范 物理层定义了它与MAC 层之间的两个接口:数据服务接口PD-SAP 和管理服务接口PLME-SAP,其中PD-SAP 接口还为物理层提供了相应的数据服务,负责从无线物理信道上收发数据,而PLME-SAP 接口同时为物理层提供相应的管理服务,用于维护一个由物理层相关数据组成的数据库。物理层负责数据的调制、发送和接收、空闲信道评估(clear channel assessment,CCA)信道能量的监测(energy detect,ED)和链接质量指示(link quality indication,LQI)等。物理层帧结构由同步头、物理层帧头和物理层有效载荷三部分组成,如表1 所示。

同步头又包括32bit 的前同步码和8bit 的帧定界符,前同步码用来为数据收发提供码元或数据符号的同步;帧界定符用来标识同步域的结束及数据的开始。物理层帧头包括7bit 的帧长度和1bit 的预留位,帧长度定义了物理层净荷的字节数。物理层有效载荷就是MAC层的帧内容。 表一物理层帧格式 媒体接入控制层规范 MAC 层定义了它与网络层之间的接口,包括提供给网络层的数据服务接口MLDE-SAP 和管理服务接口MLME-SAP,同时提供了MAC 层数据服务和MAC 层管理服务。MAC层数据服务主要实现数据帧的传输;MAC 层管理服务主要负责媒介访问控制、差错控制等。 MAC 层主要功能包括以下几个方面: (1)ZigBee 协调器产生网络信标 (2)设备与信标同步 (3)支持节点加入或着退出操作 (4)信道接入方式采用免冲突载波检测多路访问(CSMA-CA)机制 (5)建立并维护保护时隙机制 (6)为设备提供安全支持 MAC 帧格式由三个基本部分组成:MAC 帧头、MAC 帧载荷和MAC 帧尾。不同类型的MAC 帧,其帧头和帧尾都是一样的,只是MAC 帧载荷有差别,通用MAC 帧格式如表2所示。 表二通用MAC帧格式 网络层规范 网络层定义了它与应用层之间的接口,包括提供给应用层的数据服务接口NLDE-SAP和管理服务接口NLME-SAP , 同时提供了网络层数据服务和网络层管理服务。网络层主要负责拓扑结构的建立和网络的维护,具体的功能如下:(1)初始化网络,即建立一个新的包含协调器、路由器和终端设备的网络(2)设备连接和断开时所采用的机制 (3)对一跳邻居节点的发现和相关节点信息的存储 (4)ZigBee 协调器和路由器为新加入节点分配短地址

Zigbee协议栈原理基础

1Zigbee协议栈相关概念 1.1近距离通信技术比较: 近距离无线通信技术有wifi、蓝牙、红外、zigbee,在无线传感网络中需求的网络通信恰是近距离需求的,故,四者均可用做无线传感网络的通信技术。而,其中(1)红外(infrared):能够包含的信息过少;频率低波衍射性不好只能视距通信;要求位置固定;点对点传输无法组网。(2)蓝牙(bluetooth):可移动,手机支持;通信距离10m;芯片价格贵;高功耗(3)wifi:高带宽;覆盖半径100m;高功耗;不能自组网;(4)zigbee:价格便宜;低功耗;自组网规模大。?????WSN中zigbee通信技术是最佳方案,但它连接公网需要有专门的网关转换→进一步学习stm32。 1.2协议栈 协议栈是网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 1.2.1Zigbee协议规范与zigbee协议栈 Zigbee各层协议中物理层(phy)、介质控制层(mac)规范由IEEE802.15.4规定,网络层(NWK)、应用层(apl)规范由zigbee联盟推出。Zigbee联盟推出的整套zigbee规范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeepro zigbee协议栈:很多公司都有自主研发的协议栈,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN 等。 1.2.2z-stack协议栈与zigbee协议栈 z-stack协议栈与zigbee协议栈的关系:z-stack是zigbee协议栈的一种具体实现,或者说是TI公司读懂了zigbee 协议栈,自己用C语言编写了一个软件—---z-stack,是由全球几千名工程师共同开发的。ZStack-CC2530-2.3.1-1.4.0软件可与TI的SmartRF05平台协同工作,该平台包括MSP430超低功耗微控制器(MCU)、CC2520RF收发器以及CC2591距离扩展器,通信连接距离可达数公里。 Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。与z-stack 相比msstatePAN、freakz协议栈都是全部真正的开源的,它们的所有源代码我们都可以看到。但是由于它们没有大的商业公司的支持,开发升级方面,性能方面和z-stack相比差距很大,并没有实现商业应用,只是作为学术研究而已。 还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,当网络节点要求不多在30个以内,通信距离500m-1000m时用simpliciti。 1.2.3IEEE802.15.4标准概述 IEEE802.15.4是一个低速率无线个人局域网(LowRateWirelessPersonalAreaNetworks,LR-WPAN)标准。定义了物理层(PHY)和介质访问控制层(MAC)。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。 ◆具有16位短地址或者64位扩展地址。 ◆支持冲突避免载波多路侦听技术(carriersensemultipleaccesswithcollisionavoidance,CSMA/CA)。(mac层) ◆用于可靠传输的全应答协议。(RTS-CTS) ◆低功耗。 ◆能量检测(EnergyDetection,ED)。 ◆链路质量指示(LinkQualityIndication,LQI)。 ◆在2.45GHz频带内定义了16个通道;在915MHz频带内定义了10个通道;在868MHz频带内定义了1个通道。 为了使供应商能够提供最低可能功耗的设备,IEEE(InstituteofElectricalandElectronicsEngineers,电气及电子工程师学会)定义了两种不同类型的设备:一种是完整功能设备(full.functionaldevice,FFD),另一种是简化功能设备

ZigBee协议栈OSAL介绍

讨论ZigBee协议栈的构成以及内部OSAL的工作机理。 ZigBee协议栈OSAL介绍 操作系统抽象层 OSAL常用术语: 1.资源(Resource):任何任务所占用的实体都叫资源,如变量、数组、结构体 2.共享资源(Shared Resource):两个或两个以上任务使用的资源,为防止破坏资源,任务在操作共享资源时是独占状态。 3.任务(Task):即线程,简单的程序的执行过程。任务设计时将问题尽可能分成多个任务,每个任务独立完成某项功能,同时赋予优先级、CPU寄存器和堆栈空间。一般一个任务设计为一个无限循环。 4.多任务运行(Muti-task Running):其实同一时刻只有一个任务运行。 5.内核(Kernel):内核负责管理各个任务。包括:分配CPU时间;任务调度;任务间的通信。 6.互斥(Mutual Exclusion):多任务通信最常用方法是共享数据结构。 保护共享资源常用的方法: 关中断; 使用测试并置位指令(T&S指令); 禁止任务切换; 使用信号量; 7.消息队列(Message Queue):用于任务间传递消息。 OSAL提供如下功能: 任务注册、初始化和启动; 任务间的同步、互斥; 中断处理; 储存器分配和管理; OSAL运行机理: OSAL就是一种支持多任务运行的系统资源分配机制。 OSAL是一种基于事件驱动的轮询式操作系统。、 void osal_start_system(void)是ZigBee协议栈的灵魂,不断的查看事件列表,如果有事件发生就调用相应的事件处理函数。 SYS_EVENT_MSG是一个事件集合,是由协议栈定义的事件,即系统强制事件(Mandatory Events),它的定义为: #define SYS_EVENT_MSG 0x8000; 它包含如下事件: AF_INCOMING_MSG_CMD 收到一个新的无线数据

2020年Zigbee协议栈中文说明免费

1.概述 1.1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层:网络层(NWK)、应用层和安全服务提供层。图1-1给出了这些组件的概况。 1.1.1ZigBee堆栈层 每个ZigBee设备都与一个特定模板有关,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。 设备是由模板定义的,并以应用对象(Application Objects)的形式实现(见图1-1)。每个应用对象通过一个端点连接到ZigBee堆栈的余下部分,它们都是器件中可寻址的组件。 图1-1 zigbe堆栈框架 从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。 端点之间的通信是通过称之为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。图1-1-2就是设备及其接口的一个例子:

图1-1-2 每个接口都能接收(用于输入)或发送(用于输出)簇格式的数据。一共有二个特殊的端点,即端点0和端点255。端点0用于整个ZigBee设备的配置和管理。应用程序可以通过端点0与ZigBee 堆栈的其它层通信,从而实现对这些层的初始化和配置。附属在端点0的对象被称为ZigBee设备对象 (ZD0)。端点255用于向所有端点的广播。端点241到254是保留端点。 所有端点都使用应用支持子层(APS)提供的服务。APS通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。APS使用网络层(NWK)提供的服务。NWK负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过ZigBee设备对象(ZD0)对网络层参数进行配置和访问。 1.1.2 80 2.15.4 MAC层 IEEE 802.15.4标准为低速率无线个人域网(LR-WPAN)定义了OSI模型开始的两层。PHY层定义了无线射频应该具备的特征,它支持二种不同的射频信号,分别位于2450MHz波段和868/915MHz 波段。2450MHz波段射频可以提供250kbps的数据速率和16个不同的信道。868 /915MHz波段中,868MHz支持1个数据速率为20kbps的信道,915MHz支持10个数据速率为40kbps的信道。MAC层负责相邻设备间的单跳数据通信。它负责建立与网络的同步,支持关联和去关联以及MAC 层安全:它能提供二个设备之间的可靠链接。 1.1.3 关于服务接入点 ZigBee堆栈的不同层与802.15.4 MAC通过服务接入点(SAP)进行通信。SAP是某一特定层提供的服务与上层之间的接口。 ZigBee堆栈的大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。 1.1.4 ZigBee的安全性 安全机制由安全服务提供层提供。然而值得注意的是,系统的整体安全性是在模板级定义的,这意味着模板应该定义某一特定网络中应该实现何种类型的安全。 每一层(MAC、网络或应用层)都能被保护,为了降低存储要求,它们可以分享安全钥匙。SSP是通过ZD0进行初始化和配置的,要求实现高级加密标准(AES)。ZigBee规范定义了信任中心的用

ZigBee测试与协议分析

ZigBee测试与协议分析 1 前言 ZigBee协议栈包括物理层协议(IEEE802.15.4)和上层软件协议(ZigBee 2007以及其他的ZigBee网络协议)。本文将从这两方面来了解这些协议,通过介绍如何捕获及如何理解关键参数,深层次剖析ZigBee技术。有了这些本质性的认识,对于分析解决无线产品应用问题,会有很大的帮助。 2 物理层分析 ZigBee的物理层为IEEE802.15.4标准所规定,定义了ZigBee底层的调制编码方式。这些规约大多是芯片设计者需要关心的,对于应用开发来说,更关心的是衡量一个芯片、一个射频系统性能的参数。在过去的文章中,已介绍了输出功率、接收灵敏度和链路预算等参数,这一讲将更深入地介绍一个调制质量的参数:EVM。EVM指的是误差向量(包括幅度和相位的矢量),表征在一个给定时刻理想无误差基准信号与实际发射信号的向量差,。从EVM参数中,可以了解到一个输出信号的幅度误差及相位误差。 EVM是衡量一个RF系统总体调制质量的指标,定义为信号星座图上测量信号与理想信号之间的误差,它用来表示发射器的调制精度,调制解调器、PA、混频器、收发器等对它都会有影响。EVM数据和眼图。 了解完这个参数之后,再看看实际测试中是如何获取EVM参数的。 ZigBee物理层的测试,在产品研发、生产和维护阶段,可以分别采用不同的仪器。 (1)产品研发阶段要测量EVM参数,需要使用带协议解析的频谱仪,最好是自带相应协议插件的仪器,可以使用安捷伦PXA N9030A频谱分析仪+8960B插件(选配了ZigBee分析插件)。这些仪器可以测试出ZigBee调制信号的星座图、实时数据和眼图等信息,在芯片级开发过程中,需要考量高频电容电感以及滤波器等的单个及组合性能,特别需要注意的是ZigBee信号的临道抑制参数,利用PXA N9030A的高分辨率,可以查看点频的带外信号,这些细节在更换射频器件供应商时,需要仔细测量,一般数字电路抄板比较容易,因为器件性能的影响不是很大,只要值和封装对了就可以,但是射频前端的设计上,即使原样的封装、容值和感值,供应商不一样,射频参数也是不一样的,板材的选用也极大地影响着阻抗匹配,因此复制和再开发都有较大难度。合格的测试工具,加上有质量保证的射频器件供应商资源,方能真正具备RF设计能力。安捷伦PXA N9030A频谱分析仪。 (2)批量生产阶段在批量生产中,不可能将实验室的研发测试仪器搬到工厂,因此,需要便携小巧的测试设备,这时可用罗德与斯瓦茨公司的热功率探头,如NRP-Z22,做一个2.4 GHz的输出功率测试,保证能够输出公差允许的功率信号即可,因为在生产中,射频器件的焊接不良、馈线连接头的接触不良,都会造成输出功率的下降甚至消失。需要注意的是,探头非常容易被静电损坏,必须要带上防静电手套进行操作,返修过程如需要经过德国,则时间长,经费也不便宜,不是很严重的损坏倒是可以在深圳维修中心处理。NRP-Z22。 (3)应用阶段在现场出现问题时,ZigBee节点已经安装到现场,不能逐一拆下来测试,并且周围的电磁环境也是没办法在单个节点上检测到,这时就需要手持式的频谱仪进行现场勘查了,例如安捷伦公司的N9912A手持式频谱仪。使用该频谱仪,可以完成无线系统设计初期的现场勘查工作,检测现场各个地点是否有异常电磁干扰,对于ZigBee来说,当然是检测是否有持续的WIFI信号干扰了。同时,更为详细的现场勘查,还包括在定点进行数据发送,预期覆盖点进行信号强度分析,以实地评估墙体等障碍物的信号衰减,在已经架设好的ZigBee网络中,也可以检测信号覆盖,数据通信是否正常等。N9912A。

zigbee协议栈代码主要名词解释

zigbee协议重要名词解释及英文缩写(转载)网络层功能: 1. 加入和退出网络 2. 申请安全结构 3. 路由管理 4. 在设备之间发现和维护路由 5. 发现邻设备 6. 储存邻设备信息 当适当的重新分配地址联合其他设备,ZIGBEE2006可以依赖于网络协调者建立一个新网络. ZIGBEE应用层由APS(应用支持)、AF(应用结构)、ZDO(ZIGBEE设备对象)和厂商自定义应用对象组成。 APS功能 1. 绑定维持工作台,定义一个两个合拢的设备进行比较建立他们的需要和服务。 2. 促进信息在设备之间的限制 3. 组地址定义,移除和过滤组地址消息 4. 地址映射来自于64位IEEE地址和16位网络地址 5. 分裂、重新组装和可靠数据传输 ZDO功能 1. 定义设备内部网络(ZigBee协调者和终端接点) 2. 开始和/或回答绑定请求 3. 在网络设备中建立一个网络安全关系 4. 在网络中发现设备和决定供给哪个应用服务 ZDO同样有责任在网络中发现设备和为他们提供应用服务。 1.1.4 网络拓扑 ZIGBEE网络层支持星状、树状和网状拓扑。在星状拓扑中网络受约束与单个设备,呼叫COORD。COORD有责任建立和维持在网络中发现的设备和其他所有设备,都知道的终端接点直接和COORD 通信。在网状和树状拓扑中,COORD有责任建立一个网络和选择几个关键网络参数,但是网络有有可能直接应用于ZigBee路由器。在树状网络中,利用分等级路由策略完成路由传输数据和控制消息直通网络。树状网络在802.15.4-2003中可以采用信标引导通信。网状网络将允许所有对等网络通信。ZIGBEE 路又将不能在网状网络中发射规则的IEEE802.15.4-2003信标。

从Zigbee协议栈底层添加自己的按键配置

本实验是基于ZStack-CC2530-2.5.1a版本的协议栈来进行实验的,整个实验需要改动 hal_board_cfg.h、hal_board_cfg.h、hal_key.c、hal_key.h和自己定义的Coordinator.c这5个文件。 注意:添加自己的按键时尽量不要修改协议栈里面的按键程序,自己另行添加即可。 1、hal_key.h 在/* Switches (keys) */下面添加自己的按键定义 #define HAL_KEY_SW_8 0x80 图1: ---------------------------------------------------------------------------------------- 2、hal_board_cfg.h 在/* S6 */ #define PUSH1_BV BV(1) #define PUSH1_SBIT P0_1 #if defined (HAL_BOARD_CC2530EB_REV17) #define PUSH1_POLARITY ACTIVE_LOW #elif defined (HAL_BOARD_CC2530EB_REV13) #define PUSH1_POLARITY ACTIVE_LOW #else #error Unknown Board Indentifier #endif 下面模仿/* S6 */下的程序定义自己的按键值: /* S8 */ #define PUSH8_BV BV(4)//修改 #define PUSH8_SBIT P0_4//修改 #if defined (HAL_BOARD_CC2530EB_REV17)

TI_zigbee协议栈结构分析应用

无线盛世《快速进入ZB世界》
Ver:1

进入Zigbee世界的准备工作
§ 首先,我们需具备一些硬件设备及平台。以下 我就罗列一下Zigbee开发基本工具: § 计算机:不管是设计电路还是编程开发都是离 不开它的。 § Zigbee开发板:对于初学者来说,Zigbee开发 板无疑是最佳选择。有了开发板,你可以在我 们成熟设计的基础上学习或者做自己的设计。 § Zigbee模块:集MCU,RF,天线设计于一体 的Zigbee模块。使用它,我们可省去设计天线 及IC周边电路设计的复杂工作。

进入Zigbee世界的准备工作
§ Zigbee仿真器:是集烧写程序、在线编程和在线仿真 功能于一身的开发过程工作中必不可少的开发工具。 编程器既能对CC243x芯片(其实包括TI产品中的CC 系列的大部分芯片)进行烧写程序(hex标准文件程序 ),也能对CC243x芯片进行在线编程和仿真,让我们 能方便地在线调试开发,从而大大地提高了开发效率 。 § Zigbee协议分析仪:ZigBee的设计开发者必不可少的 工具!ZigBee协议分析仪具有广泛的功能,包括:分 析以及解码在PHY、MAC、NETWORK/SECURITY、 APPLICATION FRAMEWORK、和APPLICATION PROFICES等各层协议上的信息包;显示出错的包以 及接入错误;指示触发包;在接收和登记过程中可连 续显示包。

进入Zigbee世界的准备工作
§ 再次,我们需要在将用于开发Zigbee的计 算机平台上安装这些软件: § Zigbee协议分析软件(sniffer) § 程序烧写软件(Flash Programmer) § IAR公司的EW8051 version 7.20I/W32 。

ZigBee协议架构

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 ZigBee协议架构 甲方:___________________ 乙方:___________________ 日期:___________________

(application layer,APL )架构. 图1 zigbee协议栈体系结构 物理层规范 物理层定义了它与MAC层之间的两个接口:数据服务接口PD-SAP和管理服务接口PLME-SAP其中PD-SAP接口还为物理层提供了相应的数据服务,负责从无线物理信道上收发数据,而PLME-SAPg口同时为物理层提供相应的管理服务,用丁维护一个由物理层相关数据组成的数据库。物理层负责数据的调制、发送和接收、空闲信道评估(clear channel assessment,CCA)信道能量的监测(energy detect,ED )和链接质量指示(link quality indication , LQI)等。物理层帧结构由同步头、物理层帧头和物理层*效载荷三部分组成,如表1所示。 同步头乂包括32bit的前同步码和8bit的帧定界符,前同步码用来为数据收发提供码元或数据符号的同步;帧界定符用来标识同步域的结束及数据的开始。物理层帧头包括7bit的帧长度和1bit的预留位,帧长度定义了物理层净荷的字节数。物理层有效载荷就是MAC层的帧内容。 表一物理层帧格式

媒体接入控制层规范 MAC层定义了它与网络层之间的接口,包括提供给网络层的数据服务接口MLDE-SAFffi管理服务接口MLME-SAP同时提供了MAC层数据服务和MAC层管理服务。MA@数据服务主要实现数据帧的传输;MAC层管理服务主要负责媒介访问控制、差错控制等。 MAC层主要功能包括以下几个方面: (1) ZigBee协调器产生网络信标 (2) 设备与信标同步 (3) 支持节点加入或着退出操作 (4) 信道接入方式采用免冲突载波检测多路访问(CSMA-CA机制 (5) 建立并维护保护时隙机制 (6) 为设备提供安全支持 MAC帧格式由三个基本部分组成:MAC帧头、MAC帧载荷和MAC帧尾。不同类型的MAC帧,其帧头和帧尾都是一样的,只是MAC帧载荷有差别,通用MAC帧格式如表2所小。 表二通用MA#格式 网络层规范 网络层定义了它与应用层之间的接口 ,包括提供给应用层的数据服务接口 NLDE-SAP管理服务接口NLME-SAP,同时提供了网络层数据服务和网络层管理 服务。网络层主要负责拓扑结构的建立和网络的维护,具体的功能如下: (1) 初始化网络,即建立一个新的包含协调器、路由器和终端设备的网络 (2) 设备连接和断开时所采用的机制 (3) 对一跳邻居节点的发现和相关节点信息的存储 (4) ZigBee协调器和路由器为新加入节点分配短地址 (5)确保MAC正常工作,并且为应用层提供合适的服务接口 网络层帧结构包括网络层帧头(Network header, NHR和网络层载荷(Network payload,NPL)两部分,其中网络层帧头域由帧控制域、目的设备地址、源设备地址、广播半径和广播序列号等部分组成,通用网络帧的结构如表3所示。 表3通用网络层帧结构

zigbee协议栈源码

竭诚为您提供优质文档/双击可除 zigbee协议栈源码 篇一:zigbeez-stack协议栈构架 zstack基础 1、zstack协议栈构架 zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层api,供用户调用。协议栈体系分层架构与协议栈代码文件夹对应表如下:整个协议栈的构架,如图所示 app:应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。 hal:硬件层目录,包含有与硬件相关的配置和驱动及操作函数。 mac:mac层目录,包含了mac层的参数配置文件及其mac的lib库的函数接口文件。 mt:监控调试层,主要用于调试目的,即实现通过串口调试各层,与各层进行直接交互。nwk:网络层目录,含网络层配置参数文件及网络层库的函数接口文件,aps层库的

函数接口。 osal:协议栈的操作系统。 profile:aF层目录,包含aF层处理函数文件。 security:安全层目录,安全层处理函数接口文件,比如加密函数等。 services:地址处理函数目录,包括着地址模式的定义及地址处理函数。 tools:工程配置目录,包括空间划分及zstack相关配置信息。 zdo:zdo目录。 zmac:mac层目录,包括mac层参数配置及mac层lib 库函数回调处理函数。zmain:主函数目录,包括入口函数main()及硬件配置文件。 output:输出文件目录,这个ew8051ide自动生成的。 2、zigbee20xx协议栈源码库结构分析 了解了zigbee20xx协议栈整个构架后,再来看看协议栈源码库结构是什么样的,各层的具体文件是什么,建立不同的项目、添加自己的应用层任务及处理函数需要修改什么文件。zigbee20xx协议栈zstack-1.4.2文件目录及说明如下: 打开smapleapp项目工程 先看app层:

zigbee协议名词解释

zigbee协议重要名词解释及英文缩写(转载) 网络层功能: 1.加入和退出网络 2.申请安全结构 3.路由管理 4.在设备之间发现和维护路由 5.发现邻设备 6.储存邻设备信息 当适当的重新分配地址联合其他设备,ZIGBEE2006可以依赖于网络协调者建立一个新网络. ZIGBEE应用层由APS(应用支持)、AF(应用结构)、ZDO(ZIGBEE设备对象)和厂商自定义应用对象组成。 APS功能 1.绑定维持工作台,定义一个两个合拢的设备进行比较建立他们的需要和服务。 2.促进信息在设备之间的限制 3.组地址定义,移除和过滤组地址消息 4.地址映射来自于64位IEEE地址和16位网络地址 5.分裂、重新组装和可靠数据传输 ZDO功能 1.定义设备内部网络(ZigBee协调者和终端接点) 2.开始和/或回答绑定请求 3.在网络设备中建立一个网络安全关系 4.在网络中发现设备和决定供给哪个应用服务 ZDO同样有责任在网络中发现设备和为他们提供应用服务。 1.1.4网络拓扑 ZIGBEE网络层支持星状、树状和网状拓扑。在星状拓扑中网络受约束与单个设备,呼叫COORD。COORD有责任建立和维持在网络中发现的设备和其他所有设备,都知道的终端接点直接和COORD 通信。在网状和树状拓扑中,COORD有责任建立一个网络和选择几个关键网络参数,但是网络有有可能直接应用于ZigBee路由器。在树状网络中,利用分等级路由策略完成路由传输数据和控制消息直通网络。树状网络在802.15.4-2003中可以采用信标引导通信。网状网络将允许所有对等网络通信。ZIGBEE 路又将不能在网状网络中发射规则的IEEE802.15.4-2003信标。

1.ZigBee协议栈简介

1、ZigBee协议栈简介 本节内容仅仅是对ZigBee协议栈的一些大家必须理解清楚的概念进行简单的讲解,并没有对ZigBee协议栈的构成及工作原理进行详细的讨论。让刚接触ZigBee协议栈的朋友们对它有个初步的感性认识,有助于后面使用ZigBee协议栈进行真正的项目开发。 什么是ZigBee协议栈呢?它和ZigBee协议有什么关系呢 协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议的,进而实现无线数据收发。 图1展示了ZigBee无线网络协议层的架构图。ZigBee的协议分为两部分,IEEE 802.15.4定义了PHY(物理层)和MAC(介质访问层)技术规范;ZigBee 联盟定义了NWK(网络层)、APS(应用程序支持子层)、APL(应用层)技术规范。ZigBee协议栈就是将各个层定义的协议都集合在一直,以函数的形式实现,并给用户提供API(应用层),用户可以直接调用。 图1 ZigBee无线网络协议层 在开发一个应用时,协议较底下的层与应用是相互独立的,它们可以从第三方来获得,因此我们需要做的就只是在应用层进行相应的改动。 介绍到这里,大家应该清楚协议和协议栈的关系了吧,是不是会想着怎么样才能用协议栈来开发自己的项目呢?技术总是不断地在发展地,我们可以用ZigBee厂商提供的协议栈软件来方便地使用ZigBee协议栈(注意:不同厂商提供的协议栈是有区别的,此处介绍TI推出的ZigBee 2007协议栈也称Z-Stack)。 Z-stack是挪威半导体公司Chipcon(目前已经被TI公司收购)推出其CC2430开发平台时,推出的一款业界领先的商业级协议栈软件,由于这个协议栈软件的出现,用户可以很容易地开发出具体的应用程序来,也就是大家说的掌

Zigbee协议栈原理基础

Zigbee协议栈原理基础

1Zigbee协议栈相关概念 1.1近距离通信技术比较: 近距离无线通信技术有wifi、蓝牙、红外、zigbee,在无线传感网络中需求的网络通信恰是近距离需求的,故,四者均可用做无线传感网络的通信技术。而,其中(1)红外(infrared):能够包含的信息过少;频率低波衍射性不好只能视距通信;要求位置固定;点对点传输无法组网。(2)蓝牙(bluetooth):可移动,手机支持;通信距离10m;芯片价格贵;高功耗(3)wifi:高带宽;覆盖半径100m;高功耗;不能自组网;(4)zigbee:价格便宜;低功耗;自组网规模大。?????WSN中zigbee通信技术是最佳方案,但它连接公网需要有专门的网关转换→进一步学习stm32。 1.2协议栈 协议栈是网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 1.2.1Zigbee协议规范与zigbee协议栈 Zigbee各层协议中物理层(phy)、介质控制层(mac)规范由IEEE802.15.4规定,网络层(NWK)、应用层(apl)规范由zigbee联盟推出。Zigbee联盟推出的整套zigbee规范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeepro zigbee协议栈:很多公司都有自主研发的协议栈,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN 等。 1.2.2z-stack协议栈与zigbee协议栈 z-stack协议栈与zigbee协议栈的关系:z-stack是zigbee协议栈的一种具体实现,或者说是TI公司读懂了zigbee 协议栈,自己用C语言编写了一个软件—---z-stack,是由全球几千名工程师共同开发的。ZStack-CC2530-2.3.1-1.4.0软件可与TI的SmartRF05平台协同工作,该平台包括MSP430超低功耗微控制器(MCU)、CC2520RF收发器以及CC2591距离扩展器,通信连接距离可达数公里。 Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。与z-stack 相比msstatePAN、freakz协议栈都是全部真正的开源的,它们的所有源代码我们都可以看到。但是由于它们没有大的商业公司的支持,开发升级方面,性能方面和z-stack相比差距很大,并没有实现商业应用,只是作为学术研究而已。 还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,当网络节点要求不多在30个以内,通信距离500m-1000m时用simpliciti。 1.2.3IEEE802.15.4标准概述 IEEE802.15.4是一个低速率无线个人局域网(LowRateWirelessPersonalAreaNetworks,LR-WPAN)标准。定义了物理层(PHY)和介质访问控制层(MAC)。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。 ◆具有16位短地址或者64位扩展地址。 ◆支持冲突避免载波多路侦听技术(carriersensemultipleaccesswithcollisionavoidance,CSMA/CA)。(mac层) ◆用于可靠传输的全应答协议。(RTS-CTS) ◆低功耗。 ◆能量检测(EnergyDetection,ED)。 ◆链路质量指示(LinkQualityIndication,LQI)。

ZigBee协议栈原理简介

第1章ZigBee协议栈原理 2007 年4 月,德州仪器推出业界领先的ZigBee 协议栈(Z-Stack)。Z-Stack 符合ZigBee2006 规范,支持多种平台,包括基于CC2420 收发器以及TI MSP430 超低功耗单片机的平台、CC2530 SOC 平台等。Z-Stack 包含了网状网络拓扑的几近于全功能的协议栈,在竞争激烈的ZigBee 领域占有很重要地位。 4.1 Zigbee 设备类型 在 ZigBee 网络中存在三种逻辑设备类型:Coordinator(协调器),Router(路由器)和End-Device(终端设备)。ZigBee 网络由一个Coordinator 以及多个Router 和多个End_Device组成。 下图是一个简单的ZigBee 网络示意图。其中黑色节点为Coordinator,红色节点为Router, 白色节点为End-Device。 1、Coordinator(协调器) 协调器负责启动整个网络。它也是网络的第一个设备。协调器选择一个信道和一个网络ID(也称之为PAN ID,即Personal Area Network ID),随后启动整个网络。协调器也可以用来协助建立网络中安全层和应用层的绑定(bindings)。 注意,协调器的角色主要涉及网络的启动和配置。一旦这些都完成后,协调器的工作就像一个路由器。 2、Router(路由器) 路由器的功能主要是:允许其他设备加入网络,多跳路由和协助它自己的由电池供电的子终端设备的通讯。通常,路由器希望是一直处于活动状态,因此它必须使用主电

源供电。但是当使用树型网络模式时,允许路由间隔一定的周期操作一次,这样就可以使用电池给其供电。 3、End-Device(终端设备) 终端设备没有特定的维持网络结构的责任,它可以睡眠或者唤醒,因此它可以是一个电池供电设备。通常,终端设备对存储空间(特别是RAM)的需要比较小。 注意:在Z-Stack 1.4.1 中一个设备的类型通常在编译的时候通过编译选项 (ZDO_COORDINATOR 和RTR_NWK)确定。所有的应用例子都提供独立的项目文件来 编译每一种设备类型。 栈配置(Stack Profile) 栈参数的集合需要被配置为一定的值,连同这些值在一起被称之为栈配置。ZigBee 联盟定义了这些由栈配置组成的栈参数。网络中的所有设备必须遵循同样的栈配置。为了促进互用性这个目标,ZigBee 联盟为ZigBee2006 规范定义了栈配置。所有遵循此栈配置的设备可以在其它开发商开发的遵循同样栈配置的网络中使用。

ZigBee协议栈(免费下载)

2005 Microchip Technology Inc.DS00965A_CN 第1页 AN965 引言 ZigBee?是专为低速率传感器和控制网络设计的无线网络协议。有许多应用可从ZigBee 协议受益,其中可能的一些应用有:建筑自动化网络、住宅安防系统、工业控制网络、远程抄表以及PC 外设。 与其他无线协议相比,ZigBee 无线协议提供了低复杂性、缩减的资源要求,最重要的是它提供了一组标准的规范。它还提供了三个工作频带,以及一些网络配置和可选的安全功能。 如果您正在寻求现有的控制网络技术(例如RS-422、RS-485)或专有无线协议的替代方案,ZigBee 协议可能是您所需的解决方案。 此应用笔记旨在帮助您在应用中采用ZigBee 协议。 可以使用在应用笔记中提供的Microchip ZigBee 协议栈快速地构建应用。为了说明该协议栈的用法,本文包含了两个有效的演示应用程序。可将这两个演示程序作为参考或者根据您的需求经过简单修改来采用它们。此应用笔记中提供的协议栈函数库实现了一个与物理层无关的应用程序接口。 因此,无需做重大修改就可以轻松地在射频(Radio Frequency ,RF )收发器之间移植应用程序。 在此文档末尾的“常见问题解答”中提供了有关Microchip 协议栈和用法的一些常见问题及其答案。 假设 此文档假设您熟悉C 编程语言。文档中大量使用了有关ZigBee 和IEEE 802.15.4规范的术语。 此文档没有详细讨论ZigBee 规范,只提供了对ZigBee 规范的简要概述。建议您仔细阅读ZigBee 和IEEE 802.15.4规范。 特性 Microchip ZigBee 协议栈设计为随着ZigBee 无线协议规范的发展而发展。在发布此文档时,该协议栈的 1.0版本具有以下特点(欲知最新特性,请参阅源代码版本日志文件version.log ):? 基于ZigBee 规范的0.8版本 ? 使用Chipcon CC2420 RF 收发器支持2.4GHz 频带 ? 支持简化功能设备(Reduced Function Device ,RFD )和协调器 ? 在协调器节点中实现对邻接表和绑定表的非易失性存储 ? 支持非时隙的星型网络 ? 可以在大多数PIC18系列单片机之间进行移植? 协同多任务处理架构? 不依赖于RTOS 和应用 ? 支持Microchip MPLAB ? C18和Hi-Tech PICC-18? C 编译器 ? 易于添加或删除特定模块的模块化设计 限制 Microchip 协议栈的1.0版本包含以下限制。请注意随着时间的推移,Microchip 会添加新特性。如需了解目前的限制,请参阅源代码版本日志文件(version.log )。? 不完全符合ZigBee 协议? 不支持群集和点对点网络? 无安全和访问控制功能? 无路由器功能 ? 不提供标准的配置文件;但是包含创建配置文件必需的所有原始函数? 不支持一对多绑定 作者: Nilesh Rajbharti Microchip Technology Inc. Microchip ZigBee ?协议栈 https://www.sodocs.net/doc/217763406.html, 电子发烧友 https://www.sodocs.net/doc/217763406.html, 电子技术论坛

zigbee协议栈深入详解

zigbee协议栈 2010-03-10 15:11 zigbee协议栈结构由一些层构成,每个层都有一套特定的服务方法和上一层连接。数据实体(data entity)提供数据的传输服务,而管理实体(managenmententity)提供所有的服务类型。每个层的服务实体通过服务接入点(Service Access Point.SAP)和上一层相接,每个SAP提供大量服务方法来完成相应的操作。 ZigBee协议栈基于标准的OSI七层模型,但只是在相关的范围来定义一些相应层来完成特定的任务。IEEE 802.15.4—2003标准定义了下面的两个层:物理层(PHY层)和媒介层(MAC层)。ZigBee联盟在此基础上建立了网络层(NWK 层)以及应用层(APL层)的框架(framework)。APL层又包括应用支持子层(Application Support Sub—layer,APS)、ZigBee的设备对象(ZigBee Device 0bjects。ZD0)以及制造商定义的应用对象。 1物理层(PHY) IEEE802.15.4协议的物理层是协议的最底层,承担着和外界直接作用的任务。它采用扩频通信的调制方式,控制RF收发器工作,信号传输距离约为 50m(室内)或150m(室外)。 IEEE802.15.4.2003有两个PHY层,提供两个独立的频率段:868/915MHz 和2.4GHz。868/915MHz频段包括欧洲使用的868MHz频段以及美国和澳大利亚使用的915MHz频段,2.4GHz频段世界通用。 2媒体访问控制层(MAC) MAC层遵循IEEE802.15.4协议,负责设备间无线数据链路的建立、维护和结束,确认模式的数据传送和接收,可选时隙,实现低延迟传输,支持各种网络拓扑结构,网络中每个设备为16位地址寻址。它可完成对无线物理信道的接入过程管理,包括以下几方面:网络协调器(coordinator)产生网络信标、网络中设备与网络信标同步、完成PAN的入网和脱离网络过程、网络安全控制、利用CSMA—CA机制进行信道接入控制、处理和维持GTS(Guaranteed Time Slot)机制、在两个对等的MAC实体间提供可靠的链路连接。 数据传输模型: MAC规范定义了三种数据传输模型:数据从设备到网络协调器、从网络协调器到设备、点对点对等传输模型。对于每一种传输模型,又分为信标同步模型和无信标同步模型两种情况。 在数据传输过程中,ZigBee采用了CSMA/CA碰撞避免机制和完全确认的数据传输机制,保证了数据的可靠传输。同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突。 帧结构定义: MAC规范定义了四种帧结构:信标帧、数据帧、确认帧和MAC命令帧。

相关主题