微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > ZStack加入NV_RESTORE选项PANID变化问题

ZStack加入NV_RESTORE选项PANID变化问题

时间:10-02 整理:3721RD 点击:

我在ZStack编译选项加入了NV_RESTORE和NV_INIT,设备设置为协调器,每次重启PANID都是随机变化的。

从NVRAM里面读取ZCD_NV_PANID的值为0xFFFF,想请教下是哪里没有设置对呢?感觉是NWK层创建网络的时候根本就没有把_NIB.nwkPanId存到NVRAM里面。

请问哪位知道这是什么原因?谢谢。

ZGlobals.c里 

void zgInitItems( uint8 setDefault )
{
  uint8  i = 0;
  zgConfigPANID = 0x1111;
  
  while ( zgItemTable[i].id != 0x00 )
  {
    // Initialize the item

这里或许可以改

zgConfigPANID = 0x1111, 是自己添加的

我也碰到了同样的问题。读取出来的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

经过实测确认了这个问题。

原因:设置的默认的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中。

Bx da,

如果你开启了NV_RESTORE功能,每次协调器建立网络以后,如果没有设备加入的话,那么下次重启协调器以后会随机产生一个新的PANID,如果有设备加入过就不会再变了。

Dear W,

的确如你所说的,如果协调器组网有设备加入之后PANID就不会变。想进一步请教下为什么协议栈要做成必须有设备加入才会把PANID存储到ZCD_NV_PANID呢?还有这部分代码是不是在协议栈的网络层实现?我找了半天都没有看到相关代码。

谢谢。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top