Zigbee快速入门第一节 – Zigbee预备课程
Zigbee快速入门第二节 – Zigbee基础介绍
Zigbee快速入门第三节 – EmberZnet和AppBuilder介绍
Zigbee快速入门第四节 – 由Light构建网络,并使用install code将Switch加入到这个网络
Zigbee快速入门第五节 – 在设备上使用API发送,接收和处理On-Off命令
Zigbee快速入门第六节 – 在Switch端用一个周期事件来执行自定义代码,在我们的实验中是控制LED闪烁。
Zigbee快速入门第七节 – 在Switch端使用非易失性存储器来存储自定义数据
Silicon Labs的Zigbee解决方案包括三个部分:
你可以从Silicon Labs的官方网站了解到,Mighty Gecko系列的SoC和模块用于Zigbee应用。Mighty Gecko是Gecko家族中最强大的芯片。它支持Zigbee,蓝牙,Thread,私有技术。
SoC 系列 | MCU 内核 | 频段 | 闪存大小(KB) | 内存大小(KB) |
---|---|---|---|---|
EFR32MG22 | ARM Cortex-M33 | 2.4GHz | 512 | 32 |
EFR32MG21 | ARM Cortex-M33 | 2.4GHz | 512/768/1024 | 64/96 |
EFR32MG12 | ARM Cortex-M4 | 2.4GHZ/Sub-GHz | 1024 | 128/256 |
EFR32MG13 | ARM Cortex-M4 | 2.4GHZ/Sub-GHz | 512 | 64 |
使用模块的好处在于,无需再进行认证,可以节省大量的时间,例如FCC,CE,ISED等。
模块 系列 | MCU 内核 | 频段 | 闪存大小(KB) | 内存大小(KB) |
---|---|---|---|---|
MGM210 Series | ARM Cortex-M33 | 2.4GHz | 1024 | 96 |
MGM12 Series | ARM Cortex-M4 | 2.4GHz | 1024 | 256 |
MGM13 Series | ARM Cortex-M4 | 2.4GHz | 1024 | 256 |
下面是EFR32MG12系列SoC的框图。
SoC可以在6种不同的功耗模式下工作。从最大功耗到最低功耗:
注意:
EmberZnet为Zigbee应用程序提供了两种设计模型:
您可能想参考UG103.3的设计选择以及何时选择SoC和NCP模型。
为了支持固件升级,我们需要一个Bootloader。
Silicon Labs提供了三种类型的Bootloader。
类型 | 注释 |
---|---|
Bootloader Xmodem UART | 也称为独立Bootloader。主要用于基于UART的NCP。主机可以通过UART将image传输到NCP,以升级NCP image。 |
EZSP SPI Bootloader | 另一种独立的Bootloader。主要用于基于SPI的NCP。主机可以通过SPI将image传输到NCP,以升级NCP image。 |
Internal Storage Bootloader | 用于SoC。将新软件image存储在内部闪存中。 |
SPI Storage Bootloader | 用于SoC。将新image存储在SPI闪存中。 |
还有一些用于DEV-Kit的预编译的Bootloader image。可以在Gecko SDK Suite目录下的platform\bootloader\sample-apps
目录中找到它们。
例如
The default path for Gecko SDK Suite V2.7:
C:\SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.7
The path for pre-built bootloader:
C:\SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.7\platform\bootloader\sample-apps
EmberZnet SDK是Gecko SDK套件的一部分。可以在Gecko SDK Suite目录下的protocol\zigbee
中找到它。EmberZnet SDK的目录层次结构如下(仅列出了一些重要目录):
+---app
| +---framework -- Source code of the framework, consist of many plugins
| | +---plugin -- plugins applicable for host and SoC
| | +---plugin-host -- plugins applicable for host
| | +---plugin-soc -- plugins applicable for SoC
| +---gpd -- Source code of Green Power Device SDK
+---build -- Libraries of some component
+---documentation -- All documents about EmberZnet SDK
+---ncp-images -- Pre-built NCP images for DEV-Kits
\---tool
+---image-builder -- Tools for build Zigbee OTA files
Silicon Labs的无线入门套件(WSTK)由主板和无线电板组成。就像下面这样:
母板还可以用作独立的闪存编程器和J-Link调试器,以调试定制板。如AN958第4.1节所述,建议在自定义板上设计10管脚的Simplicity微型调试连接器。
开始编程或调试时,只需将主板的微型连接器连接到自定义板上,然后将主板的“调试模式”设置为“输出”即可。
Simplicity IDE是一个功能强大的IDE。集成了许多工具,包括:
这些工具将在Zigbee开发过程中频繁使用。我们将演示如何创建Zigbee项目,配置项目,调试项目。所有这些工具将在演示期间进行介绍。
您可以按照以下步骤创建Zigbee项目:
在配置Zigbee项目之前,建议先阅读UG391。
打开isc文件时,默认选项卡是“General”选项卡。在这里,您可以看到项目的板/芯片型号和工具链。您还可以看到项目的绝对路径。您可以在此处更改为其他芯片或不同的工具链。
在“ Zigbee Stack”选项卡下,您可以设置设备类型和安全性类型。对于Zigbee设备类型,我们有四个选项:
确定Zigbee设备类型后,您可以设置endpoint和每个endpoint所在的cluster。这些功能在“ ZCL Clusters”选项卡下。
您可以选择Cluster,然后选择Cluster定义的属性和命令。
插件具有以下属性:
属性 | 注释 |
---|---|
Plugin Name | 插件名称 |
Quality | 插件的质量可能是::
|
Option | 插件选项 |
Located | 插件目录 |
Source files | 插件的源文件 |
Defined callbacks | 此插件定义的回调 |
Implemented callbacks | 在协议栈或其他插件中定义的回调,用此插件实现 |
大多数插件都是开源的。您可以检查源代码以了解其实现方式。 |
类别 | 插件 | 注释 |
---|---|---|
核心协议栈 | Zigbee PRO Stack Library | 具有路由支持的核心协议栈,由路由和协调器使用 |
Zigbee PRO Leaf Library | 不支持路由的核心协议栈,由终端设备使用 | |
End Device Support | 一个支持终端设备的插件 | |
Network Creator | 创建网络,由协调器使用 | |
Network Creator Security | 协调器的安全设置,例如为新设备配置Link key | |
Network Steering | 扫描可加入的网络并加入 | |
睡眠 | Idle/Sleep | 由睡眠终端设备使用。空闲时设备将进入EM2。 |
EM4 | 插件可帮助睡眠终端设备进入EM4 | |
主条目 | Simple Main | 项目的主要入口 |
非易失性数据 | Simulate EEPROM Version 1 Library | 模拟EEPROM版本1的库,用于存储非易失性数据 |
Simulate EEPROM Version 2 Library | 模拟EEPROM版本2的库,用于存储非易失性数据 | |
NVM3 Library | NVM3库,用于存储非易失性数据 |
Silicons Labs建议客户在回调中添加其自定义源代码。好处是,当您从旧的SDK迁移到新的SDK时,这将非常容易。
建议在生成的文件<projectname>_callbacks.c 中定义和实现选定的回调。您也可以将它们添加到新的源文件中。
使用它们之前,请确保已阅读回调的注释。
在“Includes”选项卡下,您可以包含自定义头文件,包含自定义Token头文件,定义自定义宏以及定义自定义事件和处理程序对。
在“ HAL”选项卡下,有一个按钮“ Open Hardware Configurator”。点击此按钮,您将打开“Hardware Configurator”。
有很多硬件组件。您可以选择所需的引脚并配置它们的引脚。
完成后,按“ CTRL + S”进行保存。硬件设置将作为头文件hal-config.h生成。
完成项目设置后,保存并按下按钮“ Generate”,AppBuilder将生成项目。
在生成的项目中,大多数源文件都链接到SDK。它们在项目文件夹中不存在。当您尝试编辑链接的源文件时,会出现一条警告,让您选择是否进行复制。
如果确实需要编辑这些文件之一,请始终选择进行复制。
一些文件在项目文件夹下生成。
文件 | 描述 |
---|---|
<projectname>.h | 主头文件。此处列出了所有插件设置,回调设置 |
<projectname>_callbacks.c | 生成的源文件。自定义回调和事件处理应在此文件中实现。 |
<projectname>_endpoint_config.h | 定义endpoint,属性和命令 |
znet-cli.c/znet-cli.h | CLI命令列表 |
client-command-macro.h | 定义大量宏指令用于填充消息 |
call-command-handler.c | Cluster命令处理 |
attribute-id.h/attribute-size.h/attribute-type.h/att-storage.h | 相关属性 |
af-structs.h | 数据结构 |
af-gen-event.h | 事件/处理程序对 |
有两种启动编译的方法:
编译完成后,生成的应用程序image位于:
生成的应用程序image是 .s37/.hex 文件。您可以将它们烧录到设备中进行测试。
Simplicity Studio提供了两种烧录程序的工具:
Flash Programmer
使用Flash Programmer是开发过程中最常用的烧录程序的方式。你可以在”Project Explorer“中选择编译好的程序(.hex或者.s37),右键,然后选择"Flash to Device".
之后,Flash Programer启动。如果连接有多块开发板,会弹出对话框提示你,选择要操作的开发板。
之后你可以看到Flash Programmer的主界面了。”File“ 字段是你选择的文件。
点击"Program"按钮,开始烧录。
注意:如果你点击”Erase“按钮,在Flash内部从地址0开始的空间都会被擦除。所有保存在Flash中的信息,包括程序、安全密钥、网络信息等都会丢失。
Simplicity Commander
你也可以使用Simplicity Commmander来烧录程序。操作步骤如下:
启动Simplicity Studio,切换到”Launcher“界面,点击工具栏的按钮,然后选择”Simplicity Commander“,然后Simplicity Commander会启动。
之后,选择文件并烧录。
Simplicity Studio 已经集成了一个终端控制台,你可以很方便的通过这个控制台操作开发板。只需通过如下的步骤即可打开集成的控制台:
以下是一些在测试和调试期间经常使用的命令
Network Analyzer 对于调试无线故障非常有用. 空中传输的数据包可以被WSTK板子捕捉并解码.
按照如下步骤开始抓包:
建议选择"Save decrypton keys in ISD files", 这样你在传递ISD文件给其他人分析的时候, 就不用再单独发送密钥给他.
密钥设置好后在下次数据包捕捉生效. 如果你在设置好密钥之间已经捕捉了数据包, 那么你可以把数据包保存为ISD文件, 设置好密钥再打开ISD文件就可以看到解码后的数据包.
「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」
上一篇:Zigbee快速入门第二章 – Zigbee基础介绍
下一篇:Zigbee快速入门第四章 – 由Light构建网络,并使用install code将Switch加入到这个网络