[Zigbee]

使用TI Zigbee 3.0协议栈快速进入产品开发模式

[复制链接]
22821|5
手机看帖
扫描二维码
随时随地手机跟帖
macpherson|  楼主 | 2020-7-16 20:31 | 显示全部楼层 |阅读模式
TI设计这个UI的初衷其实很简单,为了让大家能够在下载安装协议栈以后,能够使用例程在TI开发板上快速演示Zigbee 3.0的所有feature。 另外一个原因大家都知道,在Zigbee 3.0里面增加BDB(Base Device Behavior)功能,简单来说他是一个从设备上电开始,初始化,建网,加网,发现其他应用匹配的设备,绑定,到最后能够使用的一些过程的集合,内容包含很多状态机的转换。这个BDB好处在用户不需要太关注设备怎么家网,怎么匹配,怎么绑定,都是有这个BDB完成。之所有他有了这么强大的功能,往往就会有很多可以配置的参数,比方说设备是做建网还是加网,设备在哪个信道或者哪组信道上建网加网,设备是否需要支持touchlink 功能,设备是否在加网完成以后启动匹配绑定过程,设备加网是否使用install code还是默认的key。这些东西如果通过UI界面的方式,通过菜单选择会使得更加简单,这个也是设计UI的另一个目的。当然这些东西抛开UI, 直接使用代码都可以实现.....
接下来,我们可以看如何把UI部分删除掉,使用代码,直接开发Zigbee 3.0产品。
1) 在TI官网,下载最新的Zigbee3.0协议栈,Z-Stack3.0. http://www.ti.com/tool/Z-STACK?keyMatch=Z-Stack&tisearch=Search-EN-Everything
2) 将协议栈安装到默认路径,位于C:\Texas Instruments\Z-Stack 3.0.1
3) 使用IAR打开工程,以CC2530上面的SampleSwitch工程为例,C:\Texas Instruments\Z-Stack 3.0.1\Projects\zstack\HomeAutomation\SampleSwitch\CC2530DB
4) 删除跟UI相关的文件,zcl_sampleapps_ui.c和zcl_sampleapps_ui.h
5)在zcl_samplesw.c文件中删除跟UI相关的代码,具体如下面的文件,只要搜索NO_UI宏定义就可以了。在IAR工程里面可以加入宏定义NO_UI或者,或者跟UI相关的代码直接删除。
6)在去掉了UI功能以后,就可以编译整个工程,没有报错就可以了。
7)如何让协调器建网,如何在建网以后去绑定设备(在上面的附件文件中通过按键实现了)
可以通过调用 bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_FINDING_BINDING); 函数选择合适的模式。
8)如何让路由或者终端设备进行加网,如何在加网以后去绑定设备
可以通过调用bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING);
9)如果加网成功了,或者不成功在哪里可以知道状态?
在zclSampleSw_ProcessCommissioningStatus函数里面知道相关的状态。比方说下
case BDB_COMMISSIONING_NWK_STEERING:
if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_SUCCESS)
{
//YOUR JOB:
//We are on the nwk, what now?
此处表示加网成功,可以做应用上的使用,最简单的比方说LED指示,UART打印。
}
else
{
//See the possible errors for nwk steering procedure
//No suitable networks found
//Want to try other channels?
//try with bdb_setChannelAttribute
如果代码运行到这里说明加网失败了,可以在这里再次调用bdb_StartCommissioning函数进行新的加网,如果为了节省功耗,可以在这里触发一个timer事件,在timer事件触发的时候可以再调用bdb_StartCommissioning函数进行加网。
}
zclSampleSw_ProcessCommissioningStatus中除了加网的状态以外,还有建网,绑定,断网等状态的指示。
10) 设备需要在指定的信道上进行搜网,加网,需要在哪里修改?
在bdb_interface.h文件的
#define BDB_DEFAULT_PRIMARY_CHANNEL_SET                    DEFAULT_CHANLIST //BDB specification default is: 0x02108800
#define BDB_DEFAULT_SECONDARY_CHANNEL_SET (DEFAULT_CHANLIST ^ 0x07FFF800) //BDB specification default is: (0x07FFF800 ^ 0x02108800)
11)需要使用install code进行加网,
也是在bdb_interface.h文件的
#define BDB_DEFAULT_JOIN_USES_INSTALL_CODE_KEY             FALSE

基本上使用BDB的接口可以方便的完成一个设备从上电初始化,到网络里面正常工作的整个过程。具体关于BDB的工作流程,状态机的转换,请参考BDB Specification。

使用特权

评论回复

相关帖子

21ic小喇叭| | 2020-7-30 16:46 | 显示全部楼层
可以给个下载链接吗

使用特权

评论回复
dirtwillfly| | 2020-7-30 18:09 | 显示全部楼层
感谢分享

使用特权

评论回复
buffered| | 2020-7-30 19:50 | 显示全部楼层
感谢楼主分享!学习一下

使用特权

评论回复
datouyuan| | 2021-6-3 18:07 | 显示全部楼层
感谢楼主分享!学习一下

使用特权

评论回复
dami| | 2021-6-29 09:32 | 显示全部楼层
感谢楼主分享!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

1265

帖子

1

粉丝