zigbee 3:协议

2015-02-13 星期五 21:38:25

1、Zigbee协议栈

ZigBee 位于 IEEE802.15.4 物理层(PHY)和媒体访问控制(MAC)层的上面。

每一层为它的上层提供一套特定的服务。每一个服务实体通过一个服务访问点(SAP)为上层提供服务。



  • 应用(APL)层

    ZigBee 协议栈的顶层由应用框架、ZigBee 设备对象(ZDO)和应用支持(APS)子层组成。

  • 应用框架

    提供了一个如何在 ZigBee 协议栈上建立一个规范(以帮助确保该规范可以产生一种前后一致的方式)的描述。它也规定了规范的一系列的标准数据类型,协助服务发现的描述符 ,传输数据的帧格式,和一个键值对结构以快速开发基于属性的简单规范。

  • 应用对象

    在一个端点上的软件,它控制 ZigBee 设备。一个单一的 ZigBee 节点可支持多达 240 个应用对象。每一个应用对象支持的端点编号为 1~240(端点 0 保留给 ZigBee 设备对象(ZDO))。

  • ZigBee 设备对象(ZDO)

    定义一个设备在网络中的角色(协调器、路由器或终端设备),发起和/或回应绑定和发现请求,并在网络设备间建立一个安全关系。它也提供定义在 ZigBee 设备规范(用于 ZigBee试运转)里的一套丰富的管理指令。ZigBee 设备对象总是为端点 0。

  • ZigBee 设备对象管理面板

    使用 ZigBee 设备对象促进应用支持子层和网络层之间的联系。允许 ZigBee 设备对象处理为网络访问和安全的来自应用的请求,使用 ZDP(ZigBee 设备规范)信息。

  • 应用支持(APS)子层

    负责提供一个数据服务给应用和 ZigBee 设备规范。它也提供一个管理服务以维护绑定链接和它自己绑定表的存储。

2、ZigBee 网络
  • 设备类型

    ZigBee 网络包含以下设备类型:

    协调器(ZC)

    路由器(ZR)

    终端设备(ZE)

  • 网络类型


3、IAR编译不同设备的版本

CoordinatorEB   ---->f8wCoord.cfg 

RouterEB            --->f8wRouter.cfg

EndDeviceEB      --->f8wEndev.cfg

4、App Init

GenericApp.c 中的 GenericApp_Init()函数实现 App 初始化。重点的有:

  • 初始化发送数据包目的地址模式、端点号和 16 位网络地址

1
2
3
GenericApp_DstAddr.addrMode = (afAddrMode_t)AddrNotPresent;
GenericApp_DstAddr.endPoint = 0;
GenericApp_DstAddr.addr.shortAddr = 0;
  • 初始化端点描述符,分别有:端点任务 ID 号、端点号、简单描述符和延时请求,端点描述符内部的简单描述符由应用程序决定

1
2
3
4
5
6
// Fill out the endpoint description.
   GenericApp_epDesc.endPoint = GENERICAPP_ENDPOINT;
   GenericApp_epDesc.task_id = &GenericApp_TaskID;
   GenericApp_epDesc.simpleDesc
             = (SimpleDescriptionFormat_t *)&GenericApp_SimpleDesc;
   GenericApp_epDesc.latencyReq = noLatencyReqs;
  • 注册

1
2
3
4
5
6
// Register the endpoint description with the AF
afRegister( &GenericApp_epDesc );
 
//注册终端绑定响应消息和匹配描述符响应消息
ZDO_RegisterForZDOMsg( GenericApp_TaskID, End_Device_Bind_rsp );
ZDO_RegisterForZDOMsg( GenericApp_TaskID, Match_Desc_rsp );


  • App任务事件处理函数

应用层任务事件处理函数 GenericApp_ProcessEvent()所有的事件,包含时间、消息和其他用户定义的事件。



5、ZDO Init

ZDApp.c 中的 ZDApp_Init()函数实现 ZDO 初始化,主要完成以下几个方面的初始化工作:

  • 根据设备类型初始化网络服务

1
2
// Initialize ZDO items and setup the device - type of device to create.
ZDO_Init();
  • 注册端点 0

1
2
3
4
// Register the endpoint description with the AF
// This task doesn't have a Simple description, but we still need
// to register the endpoint.
afRegister( (endPointDesc_t *)&ZDApp_epDesc );
  • ZDO 初始化设备

1
2
3
4
5
6
7
8
9
10
11
// Start the device?
if  ( devState != DEV_HOLD )
{
   ZDOInitDevice( 0 );
}
else
{
   ZDOInitDevice( ZDO_INIT_HOLD_NWK_START );
   // Blink LED to indicate HOLD_START
   HalLedBlink ( HAL_LED_4, 0, 50, 500 );
}
  • ZDO 任务事件处理函数

任务事件处理函数 ZDApp_event_loop ()包含消息、网络初始化、网络启动、路由启动等事件。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值