1. 程式人生 > >【zigbee】開啟及清除NV_RESTORE資訊的方法

【zigbee】開啟及清除NV_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的值

總結:

本文僅拋磚引玉,希望大牛們提出更多的見解和方法,共享技術,共同進步!