文章目录
参考博客: https://blog.csdn.net/LV9586/article/details/98504838
参考博客: https://blog.csdn.net/code_style/article/details/85841584
JN5169 的所有资源可以 NXP官网 获取。
1、下载 NXP IDE 开发环境:JN-SW-4141,安装
2、下载 3.0 SDK 基础包:JN-SW-4170,安装
版本:JN-SW-4170 ZigBee 3.0 v1840
安装完成:
3、安装 ZigBee 插件
打开 BeyondStudio for NXP,选中 Help – Install New Software
在 Available Software 界面,单击 Add…
显示如下窗口,Name里面输入 plug-in,浏览到已安装SDK插件的文件夹,例如:D:\NXP\bstudio_nxp\sdk\JN-SW-4170\Tools\Eclipse_plugins\com.nxp.sdk.update_site
将 NXP ZBPro SDK 展开,将 Jennic RTOS Configuretion Editor 和 Jennic ZBPro Configuration Editor 前面的复选框打上勾。
完成自动下载一些文件之后,单击 Next:
出现如下界面,等待进度条跑完:
出现如下界面,单击OK继续:
单击Yes,软件自动重新启动,安装完成。
4、下载 Zigbee 3.0 的示例代码,JN-AN-1219
NXP官网 提供了控制器和开关设备模板 JN-AN-1219。(百度云链接,提取码:sl54)
在D:\NXP\bstudio_nxp 新建空目录 Application,然后解压到里面,解压以后是这样子:
5、导入工程 Import
右击 Project Explorer 空白处,选择 Import;
选中 General – Existing Projects into Workspace – Next 继续
在 Select root directory 粘贴 D:\NXP\bstudio_nxp\Application,回车,出现 Projects 框 里面的 Project,这里 只勾选 JN516x 的,取消勾选 JN517x
单击 Finish 结束,完成工程打开。
鼠标左键 选中工程,先 右键 Clean Project,然后 右键 Build Project(Ctrl+ B) 编译工程。
但是,如果路径不对,工程文件 在其他文件夹,比如:E:\NXP\Application,这里 就会出现编译错误:
NXP ZigBee 的 main 是 vAppMain,只有2个位置调用了,这就是NXP提供的真正的示例,只有2个,一个是 app_start_controller.c,一个是 app_start_switch.c,分别对应控制相关应用,还有无线开关类的应用。
很多代码都是被封装起来的,只有很少部分是开放的,NXP的整个协议栈的实现,是基于free RTOS这样的“操作系统”来实现的。
6、工程应用代码说明
6.1 Color Scene Controller Application Code(色彩场景控制器应用代码)
构建 Color Scene Controller 所需的代码保存在应用说明的目录中。
- 所有设备在 Common\Source 目录中的代码是公用的,例如事件类型定义和持久性数据记录标识符的定义。
- Common_Controller\Source 目录中的代码包含ZLO规范中定义的所有类型的控制器设备都通用的代码。 这提供了所有这些的基本功能设备,如果要开发新的控制器类型,可以重复使用。
- ColorSceneController\Source 中的代码包含特定于Color Scene Controller的文件,例如端点注册和构造函数,设备ID的初始化和基本群集属性。 配置ZigBee基本设备和ZigBee群集库的文件也保存在这里。
6.1.1 Touchlink Preconfigured Link Key
Touchlink预先配置的链接密钥用于在Touchlink操作传递给加入设备时对网络密钥
进行加密。 在现实世界的应用程序中应使用的密钥是秘密密钥,由ZigBee组织在成
功完成ZLO认证过程后根据应用程序提供。 本应用笔记中未提供此密钥。
该应用程序已设置为使用基本设备行为(BDB)规范中定义的证书密钥。 拥有真正的Touchlink预配置链接密钥后,需要进行以下更改才能使用此密钥而不是认证密钥。
6.1.2 Common Controller Code
以下是主要的应用程序文件,并且对于所有控制器类型的设备都是公用的。
序号 | 方法 | 描述 |
---|---|---|
1 | app_start_controller.c | 管理芯片启动,调用初始化功能并启动主程序循环 |
1 | app_main.c | 承载主程序循环,并定义和初始化系统资源,队列,计时器等 |
1 | zlo_controller_node.c | 托管应用程序的事件处理程序和ZigBee基本设备回调。 基本设备完成所需的任何处理后,此回调将接收ZigBee基本设备事件和AF堆栈事件。 这些事件然后可以由应用程序进一步处理。 这些事件包括传递给ZCL进行处理的数据指示,以及网络管理事件(例如Joined或Failed to Join事件),以使应用程序了解网络状态。 处理应用程序事件队列以接收按钮按下事件,这些事件将传递到菜单事件处理程序。 睡眠调度和数据轮询也在此处处理。 |
1 | app_menu_handler_DR1159.c | 包含基于DR1159的硬件的菜单处理程序。 它解释按键并启动ZCL,以将适当的ZCL命令发送到网络上的设备。 |
1 | app_menu_handler_DR1199.c | 包含基于DR1199的硬件的菜单处理程序。 它解释来自GUI的按键和来自开关的按键,并启动ZCL将适当的ZCL命令发送到网络上的设备。 |
1 | app_colour_commands.c | 包含与ZCL的颜色控制群集交互以发送颜色控制命令的功能的集合。 |
1 | app_general_commands.c | 包含菜单处理程序的一组实用程序功能。 |
1 | app_group_commands.c | 包含与ZCL的“组” 群集交互以发送组控制命令的功能的集合。 |
1 | app_identify_commands.c | 包含与ZCL的标识 群集交互以发送标识控制命令的功能的集合。 |
1 | app_level_commands.c | 与ZCL的级别控制 群集交互以发送级别控制命令的功能的集合。 |
1 | app_on_off_commands.c | 包含与ZCL的On / Off集群交互以发送On / Off控制命令的功能的集合。 |
1 | app_scenes_commands.c | 包含与ZCL的Scenes群集交互以发送场景调用和保存命令的功能的集合。 |
1 | app_zcl_controller_task.c | 托管ZCL初始化和ZCL回调函数。 回调将收到的任何ZCL命令或响应的结果通知应用程序,以便应用程序可以采取适当的操作。 ZCL滴答计时器用于为ZCL提供滴答,以管理与计时器有关的事件或状态转换。 |
1 | app_captouch_buttons.c | 处理来自CapTouch驱动程序(用于DR1159远程控制单元)的按钮按下,将它们打包为应用程序事件,并将它们发布到队列中。 |
1 | app_serial_interface.c | 包含处理从UART接收的字符,管理串行接口协议,验证消息并将键事件传递到应用程序事件队列的功能。 它还管理将LED消息发送到GUI的协议。 该文件仅用于基于DR1199的硬件的构建。 |
1 | uart.c | 包含一个中断处理程序,并处理串行接口的UART管理。 该文件仅用于基于DR1199的硬件的构建。 |
6.1.3 Code Specific to Color Scene Controller
序号 | 方法 | 描述 |
---|---|---|
1 | App_ColorSceneController.c | 包含特定于Color Scene Controller的代码,用于处理端点注册和构造函数以及Basic群集属性的初始化。 |
1 | bdb_options.h | 定义ZigBee基本设备使用的参数,例如主要和辅助通道掩码。 |
1 | zcl_options.h | 定义ZCL选项,例如,支持哪些集群,客户端和/或服务器以及支持的可选命令和属性。 所选集群的强制命令和属性将自动包括在内。 |