TI论坛
直播中

刘建军

8年用户 162经验值
私信 关注
[问答]

从NVRAM里面读取ZCD_NV_PANID的值为0xFFFF的原因?

我在ZStack编译选项加入了NV_RESTORE和NV_INIT,设备设置为协调器,每次重启PANID都是随机变化的。
从NVRAM里面读取ZCD_NV_PANID的值为0xFFFF,想请教下是哪里没有设置对呢?感觉是NWK层创建网络的时候根本就没有把_NIB.nwkPanId存到NVRAM里面。
请问哪位知道这是什么原因?谢谢。

回帖(6)

张燕

2020-8-5 13:18:10
ZGlobals.c里 
void zgInitItems( uint8 setDefault )[td][td][td][/tr]
[[td][td][td][/tr]
  uint8  i = 0;[td][td][td][/tr]
[td][td][td][td][/tr]
  zgConfigPANID = 0x1111;[td][td][td][/tr]
  [td][td][td][/tr]
  while ( zgItemTable.id != 0x00 )[td][td][td][/tr]
  [[td][td][td][/tr]
    // Initialize the item[td][td][td][/tr]
这里或许可以改
举报

张燕

2020-8-5 13:27:17
zgConfigPANID = 0x1111, 是自己添加的
举报

陈芸

2020-8-5 13:36:43
我也碰到了同样的问题。读取出来的ZCD_NV_PANID 和 zgConfigPANID变量 都是0xFFFF,不知道什么原因?

osal_nv_read( ZCD_NV_NIB, osal_offsetof( nwkIB_t, nwkPanId ), sizeof( uint16), &nwkPanId );
在NIB的panID地址中读取到了存储的PanID值0x983F,但是在自身的ZCD_NV_PANID 中读取的是0XFFFF
举报

陈芸

2020-8-5 13:46:40
引用: 60user62 发表于 2020-8-5 18:36
我也碰到了同样的问题。读取出来的ZCD_NV_PANID 和 zgConfigPANID变量 都是0xFFFF,不知道什么原因?

osal_nv_read( ZCD_NV_NIB, osal_offsetof( nwkIB_t, nwkPanId ), sizeof( uint16), &nwkPanId );

经过实测确认了这个问题。
原因:设置的默认的ZDAPP_CONFIG_PAN_ID=0xFFFF
这个情况下应该是不会改动到ZCD_NV_PANID Flash的值的。只是存储到了_NIB中。
如果初始设置 ZDAPP_CONFIG_PAN_ID=0x1234,并执行下
zgWriteStartupOptions( ZG_STARTUP_SET, 3 ); // bit set both default configuration and default network
// restart device
SystemReset();
恢复一下出厂设置后,值会写入到Flash中。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分