This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

无法随意修改终端panid但协调器可以的问题

Other Parts Discussed in Thread: CC2530

大家好,打扰你们了。

硬件:cc2530


预编译选项:
ZTOOL_P1
NV_RESTORE

协议栈 2.5

动态修改PanID的方法:
_NIB.nwkPanId = new_panid;
NLME_UpdateNV(0x01);
zb_SystemReset();

协调器:在f8wConfig.cfg文件中设置 PanID = A
终端:在f8wConfig.cfg文件中设置 PanID = A

1、协调器、终端上电,终端可以加入到网络,正常;
2、用函数修改协调器的PanID为B,终端断开,正常,这是再修改终端的PanID为B,发现无法改成功,终端始终没法加入网。
(在上面这种情况中是先改协调器的PanID,再改终端的PanID,终端的PanID就改不了)


协调器:在f8wConfig.cfg文件中设置 PanID = A
终端:在f8wConfig.cfg文件中设置 PanID = A
1、协调器、终端上电,终端可以加入到网络,正常;
2、用函数修改终端的PanID为B,可以改成功,终端这时断开了网络,正常,修改协调器PanID为B,终端重新入网成功。
(这种情况则是先改终端的PanID,再改协调器的PanID,就可以实现)


协调器:在f8wConfig.cfg文件中设置 PanID = A
终端:在f8wConfig.cfg文件中设置 PanID = A
1、协调器、终端上电,终端可以加入到网络,正常;
2、先改终端的PanID为B,再改协调器的PanID为B,两者可以重新建立起网络,此时协调器和终端的PanID都是B了;
3、先改协调器的PanID为A,再改终端的PanID为A,两者又可以重新建立网络!


上面三个实验总结出得规律就是:
终端的f8wConfig.cfg文件中设置哪个 PanID,它就可以在任何情况下修改到这个PanID,但如果要修改到其他的PanID,
必须是再它还在某个网络中(仍与协调器保持着连接)的前提下。而协调器则没有这个限制。

请问是为什么呢?

已经看了 www.deyisupport.com/.../228859.aspx  

还是不清楚问题在哪,好奇怪。

不管怎样,先谢谢你们,若有时间回复,感激不尽。

  • 问题解决了,按照 那个帖子里VV说的,在修改PANID的后面加上osal_nv_write。

    贴上我按键更改PANID的代码,供以后的人参考:

    if ( keys & HAL_KEY_SW_1 )
      {
          
          uint16 mypanid = 0x1122;
          _NIB.nwkPanId = mypanid;
          NLME_UpdateNV(0x01);
          zgConfigPANID = mypanid;
          osal_nv_write(ZCD_NV_PANID, 0, osal_nv_item_len( ZCD_NV_PANID ), &zgConfigPANID);
          
          
          //要用定时器延时一段时间后再重启,否则 osal_nv_write 会来不及执行
          osal_start_timerEx( SampleApp_TaskID,
                                  SAMPLEAPP_RESET_EVT,
                                  SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT );
      
        
        
    
      }
  • 应该跟先后顺序没有关系

  • 你好,我也尝试了这种方法但是还是不行,我用的是同样的程序,分别选择router和coordinate下载在不同的板子上,我的情况是这样的:

    1.开始设置coordinate和的panid的panid都为A,组网加入都正常,修改coordinate的panid为B,重启后,coordinate修改成功,router无法加入。这时候再想修改router的panid为B,发现修改失败,依旧无法加入

    2.对于router节点,设置其panid为A,下载到板子中,不添加coordinate节点,直接利用串口修改router的panid,发现router根本无法执行重启

    请问这个又遇到吗  希望你可以看到  谢谢你