首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

zigbee终端节点问题!

zigbee终端节点问题!

应用环境:


协调者和路由器长期供电。


终端节点经外部条件触发供电,进行相关数据传输后断电。


存在问题:


当终端节点断电后,再上电。


Zigbee协议会这样处理:断电后,先前的NBI信息(网络地址,邻居表等)将会全部被清除;重新上电后,必须重新申请加入网络,协调者会重新分配一个网络地址。


有没有一种方法,让终端节点断电后,保持所有NBI信息;等下次上电上电恢复到之前状态?

freescle的东西是不错的,只是开发工具有点小贵
可以看这个文档Z-Stack Compile Flag Definitions_F8W-2004-0013_.pdf

加入NV_Restore编译字就可以了
其实,我觉得你可以不必要完全断电。你可以让中断节点处于休眠状态,RF处于Hibernate,MCU处于STOP2模式。这样可以使用外面的终端来唤醒,比如说按键。
这样终端节点的功耗是很低的。而且,醒来的时候不会重新找网络,里面的东西也不会丢掉。加上NV_Restore编译的话,断电后也可以保存在FLASH里面的。
jimmytan的方法好象更好,但是现在无法评估RF处于Hibernate,MCU处于STOP2模式的功耗到底有多大.可能要等做产品的时候实际实验.

根据seuafu2005的指点,我看了NV_Restore相关的程序:打开NV_Restore开关后,系统上电后会恢复各层的NBI.我找到了相关的定义:
OSAL_NV_EXTADDR OSAL_NV_BOOTCOUNTER
ZDO_NV_USERDESC ZDO_NV_NWKKEY
NWK_NV_NIB NWK_NV_DEVICE_LIST
APS_NV_BINDING_TABLE
我有几点疑问: 1.所有的NBI都会存储在NV中吗? 我只找到以上几个.其他的都在哪里定义?
2.这些定义对应的meomery地址? 在map文件中可以找到吗?
3.打开NV_Restore后,上电会恢复16位网络地址吗?还是会重新分配新的?
有没有办法固定网络地址
freescle的东西是不错的,只是开发工具有点小贵
1.不是很清楚保存了些什么,但是重要的内容都会保存
2。对应的地址有两个block, 0x1200-0x13ff和0x1400-0x15ff。因为要写必须擦除整块flash,所以两个block交替使用
3。16位的网络地址应该可以恢复使用,这个在Coordinator中间同样设置NV_RESTORE应该可以做到
具体的电流消耗,可以参考MC13192和GT60的数据手册。RF HIBERNATE : 3uA DOZE: 40uA
GT60 STOP2 大概 1uA.
1.若寻址模式设置为ieee寻址,是否意味着nwk_addr毫无意义,只是个id,可以不使用.
那么nwk_addr上电后丢失或重分配也没关系.因为ieee地址在NV中没改变.
2.终端向协调者申请加入网络,协调者会根据设定的分配地址算法产生nwk_addr,并返回给终端.协调者会保存这个nwk_addr吗?

jimmytan: 我觉得完全断电更好些,如果采取相关措施保证上电后相关信息能够恢复.

在电池供电系统中 zigbee只能用于间歇式或触发式,实时行要求低,单向通讯,或非实时双向通讯的环境.这是我的一点理解.
freescle的东西是不错的,只是开发工具有点小贵
1。同意你的说法,如果发送地址用64位的mac,那么16bit的网络地址也无所谓。但是网络地址可以帮助coord知道device挂在哪个router下面,如果网络大的话。
2。coord会保存这个地址,但是否断电后继续保存,就看用户的设置了,如果用NV_RESTORE,是都可以保存的

返回列表