微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 为什么NV_RESTORE和NV_INIT都开启,但Flash中ZCD_NV_PANID和变量zgConfigPANID读取出的值都为0xFFFF?

为什么NV_RESTORE和NV_INIT都开启,但Flash中ZCD_NV_PANID和变量zgConfigPANID读取出的值都为0xFFFF?

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

为什么NV_RESTORE和NV_INIT都开启,但Flash中ZCD_NV_PANID和变量zgConfigPANID读取出的值都为0xFFFF。

通过网络抓包看到的PanID是有效的。为什么没有写入到那个flash中的?更奇怪的是,我断电再重新上电,网络是可以恢复的,可以保持。到底存储到了哪里了呢?

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中。

把NV_INIT去掉就可以了。

看zgItem_t zgItemTable[] =

这是 W 回我的那个问题:

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

就是不知道协议栈为什么要这样做,相关的代码好像也被封成库了。

bx

没有设备加入过网络,所以重启以后换个PANID也是一样的。

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

网站地图

Top