【zigbee】开启及清除NV_RESTORE信息的方法,zigbeenv_restore


1、NV_RESTORE宏的作用

  • 问:coo和终端都已经组网成功

    1、这时将coo断电,重新上电,组网后终端的短地址是否不变?

    2、这时终端断电,重新上电,组网后终端的短地址是否不变?

    3、这时COO和终端都断电,重新上电,组网后终端的短地址是否不变?


  • 答:分两种情况来看 开启NV_RESTORE和不开启NV_RESTORE

    1) 开启NV_RESTORE

    1, 不变

    2,不变

    3,不变

    2)不开启NV_RESTORE

    1, 变化

    2,不变

    3,变化


2、加入NV_RESTORE编译选项

这个选项可以帮助终端在重启后也还会连上一次连接的协调器,获取到的短地址仍然不变化。开启的方法也很简单

在宏定义中定义NC_RESTORE=1即可


3、清除NV_RESTORE保存的信息

加入这个宏定义好处肯定是有的,但是问题也来了,如果终端想加入别的协调器网络,既是PANID和频道都一样,

不管重启多少次都不会加入新的协调器中,那该怎么办呢?

其实TI考虑到这个问题了,下面是官方的说明

application wants to delete the stored NV information It just needs to set the ZCD_NV_STARTUP_OPTION as explained below and do a reset. 

"If the application would like to force a "new" join, the application should set the ZCD_STARTOPT_DEFAULT_NETWORK_STATE bit in the ZCD_NV_STARTUP_OPTION NV item before calling this function. "New" join means to not restore the network state of the device. Use zgWriteStartupOptions() to set these options 

[zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);]

zGlobals.c中有这两个函数,第二个就是上面所用的函数

uint8 zgReadStartupOptions( void )  //启动时读取ZCD_NV_STARTUP_OPTION的值

uint8 zgWriteStartupOptions( uint8 action, uint8 bitOptions )  //修改ZCD_NV_STARTUP_OPTION的值


总结:

本文仅抛砖引玉,希望大牛们提出更多的见解和方法,共享技术,共同进步!




zigbee开发中遇到的一些问题

编译NV_RESTORE选项,这样协调器再上电后不会去扫描网络,直接加入原来的那个PAN.
 

快速学习ZigBee的方法

现在比较火的解决方案是TI的。比较典型的IC就是CC2430。集成了CC2410 RF射频芯片加增强型51内核。有51单片机的底子就行了。其实,按照我自己的经验,学2430其实是学Z-STACK,最后真正用的其实也是Z-STACK。不知道LZ有没有过嵌入式操作系统的开发经验。如果有就轻松很多。现在市面上的很多学习板,说是什么配有各种CC2430实验材料,其实个人认为实际意义不大。因为那些实验本质上是把2430简单地当做一个带RF模块的增强型51MCU来用了,ZIGBEE的协议啊、网络特性啊什么的完全没涉及。IN SUM,个人认为学Z-STACK才是学ZIGBEE、CC2430的精髓。好好研究API文档。装一个Z-STACK,然后根目录下有个DOCUMENT文件夹,里面各种PDF,好好研究一下。

不过说句实话,我个人觉得,zigbee推出了也时间不短了,一直是雷声大雨点小。从自己开发的经验来看,这个技术吹乎的挺厉害,实际比较鸡肋。说是低成本解决方案,实际上也现在5、6刀的成本也不算低了。2430的片上资源又有限的很,Z-STACK、IAR还有这样那样的版本问题。不能说很难,但让人不爽。总之现在并不很看好它。
 

相关内容