首页 技术 正文
技术 2022年11月15日
0 收藏 954 点赞 2,613 浏览 7513 个字

前言

兄弟们,我发现一个有意思的东西,我在爱智官网翻资料的时候,发现他们终于终于把官网文档的索引优化了!有一说一,真是方便不少,终于不再是一堆文档糊在一坨了。

另外我还发现他们居然做了一个EFR32的教程 我去年就很想搞一个来玩的,但是网上资料太少了,难搞的一逼,于是简单弄了一下后就丢一遍吃灰去了。现在终于可以回过头把EFR32捡起来了。

配置 Simplicity Studio 可能遇到的问题

关于 Simplicity Studio 介绍和简单教程可以看看我去年写的《基于EFR32的Zigbee开发-自定义Cluster》 ,接下来就是跟着官方的EFR32的教程 配置一下,我跟着做了一遍,完全可以,但是有很多细节一定要注意,很容易忽略。

首先是编译过程中出现出现各种找不到文件,搜索这些文件的时候发现都是IDE目录下的文件,最后查看Makefile打印的时候发现,报错的编译信息的路径都是“./xxx/xxx”开头,看了一下这个./实际上是 workspace 文件夹所在的地址,也就是说编译的时候它是以workspace所在的地址为根目录去IDE里面的文件,也就是说必须把 workspace 和 IDE 塞一个文件夹里面。没见过这么奇怪的做法。

编译提示各种宏缺少的时候,看看缺少的宏是什么宏,看上去像各种功能相关的,那大概率是 ZCL Clusters 那边勾选出了问题,如果看上去是各种硬件的宏报错,那就检查一下硬件配置。

ZCL Clusters 这里是配置一些命令和通道之类的东西,在下一个章节我在细说。

在这配置硬件相关的东西,注意右侧红框内的东西,比较容易被忽略,需要根据你板子实际情况选择。

配置 ZCL Clusters

官方教程中使用了基于 ZigBee HA 修改出了自己的一个规范,也给了一个XML文件给大家做一个参考,而这个 XLM 文件其实就是 ZDDC 设备端的关键。这里需要我们去官方教程中复制文档最下面的 XML 代码 :

<configurator>
<domain name="acoinfo" />
<cluster>
<name>acoinfo_aio</name>
<domain>acoinfo</domain>
<description>Acoinfo custom cluster</description>
<code>0x000C</code>
<define>ACOINFO_ZB_AIO_CLUSTER</define>
<client init="false" tick="false">true</client>
<server init="false" tick="false">true</server>
<attribute side="server" code="0x2000" define="ACOINFO_ZB_AIO_ATTR_1"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_AIO_ATTR_1</attribute>
<attribute side="server" code="0x2001" define="ACOINFO_ZB_AIO_ATTR_2"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_AIO_ATTR_2</attribute>
<attribute side="server" code="0x2002" define="ACOINFO_ZB_AIO_ATTR_3"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_AIO_ATTR_3</attribute>
<attribute side="server" code="0x2003" define="ACOINFO_ZB_AIO_ATTR_4"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_AIO_ATTR_4</attribute>
<attribute side="server" code="0x2004" define="ACOINFO_ZB_AIO_ATTR_5"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_AIO_ATTR_5</attribute>
<attribute side="server" code="0x2005" define="ACOINFO_ZB_AIO_ATTR_6"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_AIO_ATTR_6</attribute>
<attribute side="server" code="0x2006" define="ACOINFO_ZB_AIO_ATTR_7"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_AIO_ATTR_7</attribute>
<attribute side="server" code="0x2007" define="ACOINFO_ZB_AIO_ATTR_8"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_AIO_ATTR_8</attribute>
</cluster> <clusterExtension code="0x0006">
<attribute side="server" code="0x2000"
define="ACOINFO_ZB_DIO_ATTR_1"
type="BOOLEAN" min="0x00" max="0x01" writable="true"
default="0x00" optional="true">ACOINFO_ZB_DIO_ATTR_1</attribute>
<attribute side="server" code="0x2001"
define="ACOINFO_ZB_DIO_ATTR_2"
type="BOOLEAN" min="0x00" max="0x01" writable="true"
default="0x00" optional="true">ACOINFO_ZB_DIO_ATTR_2</attribute>
<attribute side="server" code="0x2002"
define="ACOINFO_ZB_DIO_ATTR_3"
type="BOOLEAN" min="0x00" max="0x01" writable="true"
default="0x00" optional="true">ACOINFO_ZB_DIO_ATTR_3</attribute>
<attribute side="server" code="0x2003"
define="ACOINFO_ZB_DIO_ATTR_4"
type="BOOLEAN" min="0x00" max="0x01" writable="true"
default="0x00" optional="true">ACOINFO_ZB_DIO_ATTR_4</attribute>
<attribute side="server" code="0x2004"
define="ACOINFO_ZB_DIO_ATTR_5"
type="BOOLEAN" min="0x00" max="0x01" writable="true"
default="0x00" optional="true">ACOINFO_ZB_DIO_ATTR_5</attribute>
<attribute side="server" code="0x2005"
define="ACOINFO_ZB_DIO_ATTR_6"
type="BOOLEAN" min="0x00" max="0x01" writable="true"
default="0x00" optional="true">ACOINFO_ZB_DIO_ATTR_6</attribute>
<attribute side="server" code="0x2006"
define="ACOINFO_ZB_DIO_ATTR_7"
type="BOOLEAN" min="0x00" max="0x01" writable="true"
default="0x00" optional="true">ACOINFO_ZB_DIO_ATTR_7</attribute>
<attribute side="server" code="0x2007"
define="ACOINFO_ZB_DIO_ATTR_8"
type="BOOLEAN" min="0x00" max="0x01" writable="true"
default="0x00" optional="true">ACOINFO_ZB_DIO_ATTR_8</attribute>
</clusterExtension> <clusterExtension code="0x0300">
<attribute side="server" code="0x2000" define="ACOINFO_ZB_DIO_ACTIVE_T_ATTR"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_DIO_ACTIVE_ATTR</attribute>
<attribute side="server" code="0x2001" define="ACOINFO_ZB_DIO_WRITE_T_ATTR"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_DIO_WRITE_ATTR</attribute>
<attribute side="server" code="0x2002" define="ACOINFO_ZB_AIO_ACTIVE_T_ATTR"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_AIO_ACTIVE_ATTR</attribute>
<attribute side="server" code="0x2003" define="ACOINFO_ZB_AIO_WRITE_T_ATTR"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_AIO_WRITE_ATTR</attribute>
<attribute side="server" code="0x2004" define="ACOINFO_ZB_MEM_ACTIVE_T_ATTR"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_MEM_ACTIVE_ATTR</attribute>
<attribute side="server" code="0x2005" define="ACOINFO_ZB_MEM_WRITE_T_ATTR"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_MEM_WRITE_ATTR</attribute>
</clusterExtension> <clusterExtension code="0x0500">
<attribute side="server" code="0x2000"
define="ACOINFO_ZB_MEM_ATTR_1"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_MEM_ATTR_1</attribute>
<attribute side="server" code="0x2001"
define="ACOINFO_ZB_MEM_ATTR_2"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_MEM_ATTR_2</attribute>
<attribute side="server" code="0x2002"
define="ACOINFO_ZB_MEM_ATTR_3"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_MEM_ATTR_3</attribute>
<attribute side="server" code="0x2003"
define="ACOINFO_ZB_MEM_ATTR_4"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_MEM_ATTR_4</attribute>
<attribute side="server" code="0x2004"
define="ACOINFO_ZB_MEM_ATTR_5"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_MEM_ATTR_5</attribute>
<attribute side="server" code="0x2005"
define="ACOINFO_ZB_MEM_ATTR_6"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_MEM_ATTR_6</attribute>
<attribute side="server" code="0x2006"
define="ACOINFO_ZB_MEM_ATTR_7"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_MEM_ATTR_7</attribute>
<attribute side="server" code="0x2007"
define="ACOINFO_ZB_MEM_ATTR_8"
type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="true"
default="0x00000000" optional="true">ACOINFO_ZB_MEM_ATTR_8</attribute>
</clusterExtension>
</configurator>

然后保存到一个空的文档中并另存为 XML 格式,然后将这个这个XML文件放入:

\v4\developer\sdks\gecko_sdk_suite\v2.7\app\zcl

文件夹下,在 ZigBee Stack 中添加 XML 文件后就能发现 ZCL Clusters 中多了一些东西。

这里是设置模型 ID 和制造商名字什么的。

这里设置了对应的通道是什么功能,截图中的的意思就是,DIO通道1和DIO通道2分配为灯的开关。

这是最蛋疼也是最有欺骗性的地方 官方设定 :

Cluster ID :0x0300 为本规范定义的通用属性,Attribute ID 0x2000-0x2005 为 6 个属性,类型为

uint32,只读

而原本的 0x0300 是被占用了的,官方这么玩的话,这个通用属性就会跑到颜色那一栏去,而这个通用属性,实际上是管理通道有效性的,上图代表:通道 1 和通道 2 有效并且可读可写。

这次的代码我用的就是官方的代码,他们说得很详细了,我就不重复一遍了。

总结

配置完成将代码烧入 EFR32 开发板 ,通过我们新的嗅探器发送 dio0/1 :true/false 就可以控制我们的LED:PC0/PC1了。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,903
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,429
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,245
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,057
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,689
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,726