微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 关于osal_nv_write 修改PANID不成功问题

关于osal_nv_write 修改PANID不成功问题

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

求大神帮忙看下为什么之前 可以实现在程序运行过程中修改PANID,而如今却是不行,代码如下:

typedef union
{
unsigned short word;
unsigned char byte[2];
} UNION_2_BYTE;

uint8  dd=0xff;

if(g_sys_key1Sample > 160)//有按键超过500毫秒
{
UNION_2_BYTE tmp;
tmp.byte[0]=0x88;
tmp.byte[1]=0x66;
g_sys_key1Sample = 0;
osal_nv_item_init(ZCD_NV_PANID,osal_nv_item_len( ZCD_NV_PANID ), &tmp.word);   //改变PANID值
dd=osal_nv_write(ZCD_NV_PANID, 0, osal_nv_item_len( ZCD_NV_PANID ), &tmp.word);    //运行到这里dd均等于0;

SystemResetSoft();
}

测试环境说明:宏定义环境(协调器)

环境一:xNV_INIT                     
                xNV_RESTORE 

另外分:单协调器环境下,和有一个终端成功组网环境下。

环境二:xNV_INIT
                NV_RESTORE 

另外分:单协调器环境下,和有一个终端成功组网环境下。

总结:在以上测试中用抓包软件测得的PANID都不是上面代码的,有记忆了之前的,也有随机分配其他的。

@Jack,

1) xNV_INIT                     
                xNV_RESTORE

不管协调器有没有加过终端设备,每次协调器重启都会换一个新的PANID

2)xNV_INIT
                NV_RESTORE 

如果协调器上电以后,有终端设备加网成功过,那么下次协调器再上电,PANID不会变

如果协调器上电以后,没有终端设备加网过,那么下次协调器再上电,PANID会变

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

网站地图

Top