没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
内容概要:本文档详细介绍了如何在STM32WB系列微控制器上使用Zigbee群集模板。通过具体的实例和步骤,解释了群集的创建、配置、绑定和使用方法。主要内容包括基本群集、支持群集(如群组群集、场景群集、报警群集)以及特殊专用端点群集(如Touchlink、CBKE和绿色电源群集)的使用。此外,文档还提供了如何通过ZCL协议进行属性访问和命令处理的方法,以及如何实现服务器端命令处理程序。 适合人群:具备嵌入式系统开发基础,熟悉Zigbee协议栈,正在或即将从事STM32WB系列微控制器开发的工程师和研发人员。 使用场景及目标:①帮助开发人员快速掌握STM32WB系列微控制器上Zigbee群集的使用方法;②提供详细的API使用示例,加速开发过程;③确保Zigbee应用的可靠性和稳定性。 其他说明:本文档适用于基于STM32WB系列的Zigbee应用开发,需要结合参考文献中的相关规范和API文档一起使用。
资源推荐
资源详情
资源评论
AN5498
概述
AN5498 - 第 2 版
第 2 页,共 24 页
1 概述
本文档适用于 STM32WB 系列基于双核 Arm
®
的微控制器。
注意:
Arm
是
Arm Limited
(或其子公司)在美国和
/
或其他地区的注册商标。
1.1 参考文档
• [R1] 05-2374-22《ZigBee PRO 规范第 22 版》
• [R2] 07-5123-07《Zigbee 群集库第 7 版》
• [R3] AN5500《ZSDK API 在 STM32WB 系列上实现 Zigbee
®
》
• [R4] 07-5356-21《Zigbee 智能能源标准第 1.4 版》
1.2 快速开始
本文档可用于指导开发人员了解使用 Exegin ZCL 群集模板构建应用的要点。每个 Exegin ZCL 群集模板均提
供了起始源代码,以便实现完整的群集。该模板提供了 Exegin 规范[R2]、[R4]中定义的强制性 ZCL 命令和属
性。
许多命令和属性已成功通过 Zigbee
®
认证测试。应用的构建包括向特定硬件添加接口,或添加类似应用特定的
详细信息。这对于以应用为中心的群集尤为如此,以应用为中心的群集的主要目的是提供应用特定的功能,诸
如“开关”群集,对于灯而言,该群集会打开和关闭灯。
除了特定于应用程序的群集之外,还为其他类型的群集(如支持群集和专业群集)提供了模板。基本群集通过
提供设备的品牌和型号等信息来支持常规操作。组合,可以将其它群集进行组合管理。第三种类型的群集(即
专业群集)独立性较高,并且涉及到应用的部分最少。这些群集提供了一些特殊函数,诸如 Touchlink、
CBKE(智能能源安全)和绿色电源。
本文档旨在与定义群集的[R2] ZCL 7 规范和[R3]结合使用,用于 Exegin ZSDK API。
本文档基于[R2]和[R3]构建,为用户使用群集模板构建应用提供了相关知识。
第 2 节“使用群集模板工作”包含有关 API 工作原理的基本信息,和第 3 节“以应用为中心的群集”包含有
关群集模板的具体信息。
第 4 节“支持群集”包含构建应用所依赖的基本信息。
第 5 节“特殊专用端点群集”包含有关更专用群集的信息。
注意:
要构建应用,建议从以下清单开始,然后查看后续章节。
1.3 清单
• 确保参考部分中的文档可用
• 评估应用需要哪些 ZCL 群集
• 参见第 3.1 节“以应用为中心的客户端群集”来实现群集的客户端
• 参见第 3.2 节“以应用为中心的服务器群集”来实现群集的服务器端
• 参见第 4 节“支持群集”用于基本群集、报警群集、群组群集、场景群集和识别群集
• 参见第 5 节“特殊专用端点群集”用于 CBKE 群集、touchlink 群集和绿色电源群集”
• 需要多个群集实例的应用需要多个端点
AN5498
回调和应用结构
AN5498 - 第 2 版
第 3 页,共 24 页
应用负责:
• 对端点和群集进行实例化
• 对于客户端群集:
‒ 根据应用需要将命令和属性请求从本地群集发送到远程服务器群集
‒ 在极少数情况下,客户端群集可支持其自有属性
• 对于服务器群集:
‒ 在值改变时编写本地属性,或通过回调的形式提供需要的数据
‒ 提供回调函数来处理远程命令请求并提供命令响应
‒ 与硬件接合
大多数应用还有其他职责,诸如支持用户接口、控制硬件或其他非 Zigbee 相关接口或服务。所有这些职责均
超出本文档的范围。
1.4 回调和应用结构
群集模板函数利用应用提供的回调,这些回调具有以下原型:
enum ZclStatusCodeT ZbFunction(...,
void (*callback)(...,
void * arg), void *arg);
当应用调用此函数时,会提供回调函数和参数。该函数快速返回,当操作完成时,将调用回调。当调用回调时,
将传回(回调)在调用原始函数(ZbFunction)时提供的相同参数。
回调通常需要访问 ZSDK 协议栈指针和其他应用数据。该应用还需要在某个位置存储指向群集的指针。通用
约定定义了用于存储该信息的应用存储结构。
struct 应用;
{
struct ZigbeeT * zb;
struct ZbZclClusterT * a_cluster;
/* other application data */
}
struct application app;
…
status = ZbFunction(..., callbk, &app)
…
void callbk(..., void *arg)
{
struct application *app = (struct application *)arg;
app ->zb ...
app->a_cluster ...
}
然而,最好的做法是只披露回调中真正需要的内容。在一些情况下,优先传递群集指针。这也使回调更通用,
因为同一回调可与不同的群集实例一起使用。
1.5 群集和端点
协议栈负责建立和维护某个节点与 Zigbee 网络上的其他节点之间的通信(参见[R1]和[R3])。应用组件建立
在这些较低层上并交换 Zigbee 群集库(ZCL)消息。
本文档介绍了如何使用 ZSDK 提供的群集模板构建应用。
ZCL 由多套有组织的相关功能(即群集)组成。通常,该功能与特定的硬件原件相关联,诸如单个灯或控制
灯的开关。与给定设备相关联的所有函数都位于单个端点上。
AN5498
客户端服务器的关系
AN5498 - 第 2 版
第 4 页,共 24 页
节点上的每个端点都具有一个唯一的端点 ID(通常称为“端点”),取值范围从 1 到 239。保留端点 0 和
240 到 255 用于特殊用途。
1.6 客户端服务器的关系
群集功能分为服务器端和客户端,服务器端通过一个节点上的端点提供服务,客户端通过另一个节点上的另一
个端点访问该服务)。
图 1. 客户端-服务器架构
一个节点通过支持同一群集(举例来说,“开关”群集)的多个实例,可以具有多台物理设备(例如,该节点
支持多个灯或多个开关)。因此,每个实例位于唯一的端点上,一个节点上的特定灯(“开关”服务器)通过
使用相应的节点端点,与另一个节点上的特定开关(“开关”客户端)相关联。
例如:开关 3 可以位于开关节点上的端点 3 上,并且配置为与灯节点的端点 2 上的灯 2 通信。
给定端点上只允许有一个群集实例,但每个端点通常具有多个群集(如“开关”、基本、报警、场景等)。
应用使用 ZbZclAddEndpoint()函数创建一个或多个端点,该函数已在 Zigbee 群集库头文件 zcl.h 中予以声明。
注意:
也可以使用
APS
函数创建端点。
对于 ZCL 应用,首选上述 API。
创建新端点时,应用应在 1 和 239 之间选择新的唯一端点,并提供配置文件 ID 和设备 ID。
在以下样例中,我们选择端点 1。配置文件 ID 和设备 ID 的值以 ZCL_PROFILE_和 ZCL_DEVICE_开头,并
在头文件 zcl.h 中定义。
ZbApsmeAddEndpointReqT add_ep_req;
ZbApsmeAddEndpointConfT add_ep_conf;
memset(&add_ep_req, 0, sizeof(add_ep_req));
memset(&add_ep_conf, 0, sizeof(add_ep_conf));
add_ep_req.endpoint = 1;
add_ep_req.profileId = ZCL_PROFILE_HOME_AUTOMATION;
add_ep_req.deviceId = ZCL_DEVICE_ONOFF_SWITCH;
ZbZclAddEndpoint(app->zb, &add_ep_req, &add_ep_conf);
创建端点后,使用 ZbZclClusterSetProfileId()等 ZCL 帮助程序函数来帮助更改端点设置。
AN5498
端点和简单描述符
AN5498 - 第 2 版
第 5 页,共 24 页
注意:
始终建议在使用之前采用
memset
将数据结构归零,以防因内存未初始化而引起的不可预测的行为。
大多数协议栈函数采用协议栈指针(
(struct ZigbeeT
指针作为其第一个参数。大多数
ZCL
函数将采用
ZbZclClusterT
作为其第一个参数(有些则采用
ZigbeeT
)。
ZbZclAddEndpoint()
的原型通常在协议栈之后。
添加端点请求和确认在头文件
Zigbee.aps.h
中定义。
1.7 端点和简单描述符
当用户创建端点时,协议栈会在内部为每个创建的端点创建一个简单的描述符(参见[R1]第 2.3.2.5 节)。简
单描述符具有两个群集列表:“输入”和“输出”。ZCL 服务器群集位于输入列表中,而客户端群集位于输
出列表中。
可以使用 ZDO Simple_Desc_req 查询远程设备的简单描述符。然而,实际上,Match_Desc_req ZDO 命令更
常用于在远程节点上查找群集。当使用 Match_Desc_req 和 Simple_Desc_req 时,首先使用 Active_EP_req
发现远程节点的端点可能很有用。
有关这些 ZDO 命令的详细信息,请参见[R1]和[R3]。
1.8 群集类型
创建端点后,应用可以创建应用群集并将其添加到该端点。在默认情况下,每个端点都包含基本群集,本文档
稍后将对此进行更详细的讨论。
除了基本群集之外,还有其他几个特殊群集,包括:群组群集、场景群集、touchlink 群集、CBKE 群集、报
警群集和绿色电源群集。
1.9 以应用程序为中心、支持和特殊群集
Zigbee 应用使用群集构建。大多数群集提供应用功能,诸如:开关、色彩控制、温度测量、智能能量计量等。
Zigbee 节点提供端点,每个端点都包含一个或多个以应用为中心的群集的实例。
此外,还有支持群集,诸如群组群集、场景群集和报警群集,这些群集不提供此类应用功能。相反,这些支持
群集披露出支持其他群集的功能,使能分别能够对其他群集进行群组寻址、激活其他群集的设置以及记录其他
群集生成的报警。
此外,还有一些特殊群集,这些群集由协议栈自动创建,用于提供与应用没有直接关系的特殊功能。这些群集
(诸如 CBKE、touchlink 和绿色电源代理基本群集)也通常位于其自己的端点上。
以下章节首先介绍了以应用为中心的群集,然后是支持群集,之后是特殊群集。
1.10 命令:特定于群集与配置文件范围
ZCL 群集提供一组属性和命令(某些群集仅提供属性)。命令分为两种类型:群集特定的命令(特定于该群
集,例如基本或 OnOff)和配置文件范围的命令(在每个群集上可用)。配置文件范围的命令的主要用途是访
问群集的属性。每个群集都有其自己独特的群集特定的命令。属性主要通过配置文件范围的命令(读取属性、
写入属性)进行访问,但配置文件范围的命令还包括其他常规函数,诸如默认响应、配置报告、发现属性和命
令等。配置文件范围的命令对于所有群集都是相同的。配置文件范围的命令在 ZCL 7 [R2]的第 2.5 节“通用命
令帧”中进行描述。
1.11 寻址和绑定
应用可以使用多种机制来处理从源(通常是客户端)群集到目标(通常是服务器)群集的属性或命令请求。在
Zigbee 网络中使用网络短地址的成本很高,因此自然采用使用短地址的单播寻址。另外也可以使用扩展地址,
但这并不常见。当使用群组时,可以使用群组寻址来通过单一请求对多个设备进行多播(参见第 4.2 节“群组
群集”)。然而,对于实际应用,大多数 Zigbee 应用采用绑定。
剩余23页未读,继续阅读
资源评论
冻结的鱼
- 粉丝: 2321
- 资源: 191
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功