Zigbee协议栈2007详解

1.以下是Zigbee协议栈的发展历史:

  1. 1998年-2003年: Zigbee的前身可以追溯到1998年,当时美国的一些公司开始合作开发低功耗、低数据速率的无线通信技术。在此基础上,Zigbee联盟成立于2002年,开始制定Zigbee标准。

  2. 2004年: Zigbee协议栈的第一个版本1.0于2004年发布,这个版本建立了基本的架构和规范,包括PHY、MAC、网络层和应用层。

  3. 2006年: Zigbee协议栈的版本1.1发布,该版本修复了一些漏洞,改进了网络和设备的管理。

  4. 2007年: Zigbee Pro发布,这是一个增强的版本,引入了更多的功能和选项,以满足更多应用场景的需求。

  5. 2012年: Zigbee 2007版本发布,修复了先前版本中的一些错误,并增加了新功能,提高了网络安全性和可靠性。

  6. 2015年: Zigbee 3.0发布,将之前的Zigbee、Zigbee Pro和Zigbee IP整合到一个统一的协议堆栈中,以简化开发和互操作性。

  7. 2020年: Zigbee联盟宣布将合并入Connectivity Standards Alliance (CSA),并将标准命名为Matter标准,该标准基于Zigbee 3.0,旨在推动智能家居设备的互操作性。

2. coordinatorEB与coordinatorEB-Pro对比

其中Zigbee在07年初的规范中,这个规范有两个版本,coordinatorEB与coordinatorEB-Pro,他们之间的区别就是,功能基本相同,Pro版本的功能稍微强大,一般选择Pro版本使用。如下图

3.Zigbee信道设置 

 在如图目录文件中,包含了对Zigbee通信信道的定义,DEFAULT_CHANLIST决定了选择哪个信道,信道之间可以进行或运算,对于路由器和终端而言,可以在参与或操作的信道上选择一个相对最佳的网络,对于协调器而言,可以在参与或操作的信道上选择一个最佳的信道并在这个信道上创建自己的Zigbee网络。

4.zigbee的ZDAPP_CONFIG_PAN_ID设置 0xFFFF于非0xFFFF差异性

        在 Zigbee 协议栈中,设置 ZDAPP_CONFIG_PAN_ID0xFFFF(十六进制)实际上将 PAN ID 设为了广播 PAN ID,即任何 PAN ID。这样设置后,路由器将不再受限于特定的 PAN ID,可以尝试连接到任何可用的 PAN。

通常情况下,Zigbee 网络中的设备需要配置相同的 PAN ID 才能进行通信,这个 PAN ID 就是网络的标识符,确保设备连接到正确的网络。但是,如果将 PAN ID 设置为广播 PAN ID,路由器会尝试加入任何它能够检测到的 Zigbee 网络,而不受 PAN ID 限制。

当我们将 ZDAPP_CONFIG_PAN_ID 设置为 0xFFF8(十六进制)时,这个设置实际上是配置了一个特定的 PAN ID。

PAN ID(Personal Area Network ID)是 Zigbee 网络中的标识符,用于区分不同的 Zigbee 网络。PAN ID 有 16 位(4 个十六进制数字),范围从 0x0000 到 0xFFFF。

设置 ZDAPP_CONFIG_PAN_ID0xFFF8 意味着将 PAN ID 设置为特定的值,即十进制的 65528。这个设置会影响路由器和终端设备加入 Zigbee 网络时的 PAN ID。

对于路由器和终端来说:

  • 如果路由器或终端设备尝试加入一个 Zigbee 网络时,指定的 PAN ID 将是 0xFFF8(65528),因此它们会尝试连接到这个特定 PAN ID 对应的 Zigbee 网络。
  • 如图为ZDAPP_CONFIG_PAN_ID所在文件位置

假如2个模块下载相同的协调器代码,并且指定的PANID参数值为0xFFF8,后果会怎样? 

答:先上电的模块可以创建0xFFF8这样一个zigbee网络,后上电的模块创建一个在0XFFF8基础上加1的网络。

5.议栈的使用部分:

①uint8 osal_set_event( uint8 task_id, uint16 event_flag )

在 Zigbee 协议栈 (ZStack) 中,uint8 osal_set_event(uint8 task_id, uint16 event_flag) 函数的作用是用于设置特定任务的事件标志,以通知该任务需要执行特定的操作或处理事件。这在多任务操作系统或任务调度的上下文中非常有用,因为不同的任务需要协同工作并相应外部事件或命令。

具体而言,这个函数的参数和作用如下:

  • task_id:代表任务或线程的标识符,用于指定要设置事件标志的任务。每个任务都有一个唯一的标识符。

  • event_flag:一个 16 位的无符号整数,用于指定要设置的事件标志。事件标志可以是一个位掩码,每个位表示一个特定事件。通过设置不同的位,你可以触发不同的事件或状态。

当调用 osal_set_event 函数时,它会将指定的 event_flag 设置到特定任务的事件标志中。这通常会导致目标任务从等待状态(可能是休眠或等待事件)中醒来,以处理与设置的事件标志相关的任务。

举例来说,如果你有一个任务 A,它在等待某个事件发生,另一个任务 B 可以通过调用 osal_set_event 函数来设置任务 A 的事件标志。一旦任务 A 的事件标志被设置,任务 A 就会知道相关事件发生,从而执行相应的操作或处理。

示例:

osal_set_event( GenericApp_TaskID,GENERICAPP_SEND_MSG_EVT);

代码调用函数,传入了应用层用户任务ID,调用了应用层发送信息事件。 

②uint8 osal_start_timerEx( uint8 taskID, uint16 event_id, uint16 timeout_value )

在 Zigbee 协议栈中,uint8 osal_start_timerEx(uint8 taskID, uint16 event_id, uint16 timeout_value) 函数用于启动一个定时器,以便在指定的时间间隔后向特定任务发送一个事件。这个函数常用于任务调度和事件处理。

下面是对这个函数的参数和作用的解释:

  • taskID:指定要启动定时器的目标任务的标识符。定时器将在这个任务的上下文中触发相应的事件。

  • event_id:指定要触发的事件标识符,用于通知目标任务定时器已经超时。通常,这个事件标识符会在任务中用来识别和处理特定的事件。

  • timeout_value:指定定时器的超时时间,以毫秒为单位。超时后,将触发相应的事件,通知目标任务。

当调用 osal_start_timerEx 函数时,它会启动一个定时器,计时器将在指定的超时时间后到期。一旦超时,指定的事件标识符将被传递给指定任务,以触发相应的事件处理。

通常情况下,任务可以通过等待相应的事件来处理定时器超时事件。这种机制可以用于实现定时任务、定时操作或周期性的事件处理。

例如,假设有一个任务 A,通过调用 osal_start_timerEx 函数启动一个定时器,设置超时时间为 1000 毫秒,指定事件标识符为 EVENT_TIMER_EXPIRED。一旦定时器超时,将触发事件 EVENT_TIMER_EXPIRED,并通知任务 A,任务 A 可以相应地处理这个事件。

示例:

if ( events & GENERICAPP_SEND_MSG_EVT )
  {
    // Send "the" message
    GenericApp_SendTheMessage();

    // Setup to send message again
    osal_start_timerEx( GenericApp_TaskID,
                        GENERICAPP_SEND_MSG_EVT,
                      GENERICAPP_SEND_MSG_TIMEOUT );

    // return unprocessed events
    return (events ^ GENERICAPP_SEND_MSG_EVT);
  }

 此代码片段存在于UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events ){}中,相较于uint8 osal_set_event(uint8 task_id, uint16 event_flag)多了延时

③UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events )

事件处理函数,当调用osal_set_event( uint8 task_id, uint16 event_flag )函数后,会触发事件处理函数,如下代码判断事件类型,执行代码内自定义的具体事件。

  if ( events & GENERICAPP_SEND_MSG_EVT )
  {
    // Send "the" message
    GenericApp_SendTheMessage();

    // Setup to send message again
    osal_start_timerEx( GenericApp_TaskID,
                        GENERICAPP_SEND_MSG_EVT,
                      GENERICAPP_SEND_MSG_TIMEOUT );


    // return unprocessed events
    return (events ^ GENERICAPP_SEND_MSG_EVT);
  }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
zigbee协议规范2007版,英文 These documents cover the functionalities that represent the respective feature set. They need to be implemented as written in order to assure interoperability. The ZigBee specification has a number of options, which, if exercised in different ways by different vendors, will hamper both compliance testing activities and future product interoperability. The Feature Set profiles, which are, for the most part, a set of restrictions on the Protocol Implementation Conformance Statement (PICS) documents corresponding to the three main sub-clauses of the specification, further restricts those options so as to promote interoperability and testability. Purpose This document defines the knobs settings, functional description and PICS for devices conforming to this stack profile, and is intended as the foundation for the platform compliance test plan that stack providers must pass in order to certify their products as ZigBee compliant. Protocol Implementation Conformance Statement (PICS) The protocol implementation conformance statement (PICS) of a protocol implementation is a statement of which capabilities and options of the protocol have been implemented. The statement is in the form of answers to a set of questions in the PICS proforma. The questions in a proforma consist of a systematic list of protocol capabilities and options as well as their implementation requirements. The implementation requirement indicates whether implementation of a capability is mandatory, optional, or conditional depending on other options selected. When a protocol implementer answers questions in a PICS proforma, they would indicate whether an item is implemented or not, and provide explanations if an item is not implemented.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值