微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 修改zigbee终端PanID出现的问题

修改zigbee终端PanID出现的问题

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

/*

在程序运行中修改zigbee PanId  Chanel出现的问题:

测试方式:

终端1:在f8wConfig.cfg文件中设置 PanID = 0x2345  chanel = 0x0D

终端2:在f8wConfig.cfg文件中设置 PanID = 0x1234  chanel = 0x0F

协调器:在f8wConfig.cfg文件中设置 PanID = 0x2345  chanel = 0x0D

1、先协调器上电,再将两个终端上电,此时终端1能够加入到网络中 并且通信正常

2、通过串口修改协调器的PanID chanel  代码如下:      

     _NIB.nwkPanId=0x1234;    

     _NIB.nwkLogicalChannel=0x0F;    

     NLME_UpdateNV(0x01);    

     SystemResetSoft();     这时候终端2能够加入到网络并且通信正常

3、通过串口修改终端1的PanID chenel  代码如下:

      _NIB.nwkPanId=0x1234;     

      _NIB.nwkLogicalChannel=0x0F;     

      NLME_UpdateNV(0x01);    

      SystemResetSoft();     这时候终端1无法加入到协调器组建的网络中,这是为什么呢?    

      程序degbug的时候 _NIB.nwkPanId=0x1234   _NIB.nwkLogicalChannel=0x0F值是对的

4、如果把协调器的PanID chanel 再修改为PanID = 0x2345  chanel = 0x0D   

     终端2的此时无法加入到网络中 正常!

    此时如果把终端1的PanID设为0x2345    chanel设为0x0D 那么终端1就又能跟协调器通信了

    很怪异的问题,我该怎么修改zigbee终端的PANID 和 chanel(程序运行中)

*/

修改PANID的时候,把下面的代码也加上

zgDefaultChannelList = MyNewDesiredChannel;

osal_nv_write(ZCD_NV_CHANLIST, 0, osal_nv_item_len( ZCD_NV_CHANLIST ), &zgDefaultChannelList);

zgConfigPANID = MyNewPanId;

osal_nv_write(ZCD_NV_PANID, 0, osal_nv_item_len( ZCD_NV_PANID ), &zgConfigPANID);

另外问下你用的协议栈版本,还有能不把每个过程用抓包看下,具体的数据包交互是什么,这样比较清楚到底发生了什么。

@VV

协议栈用的是2.5.1a   我抓了一包数据 详见附件!

@VV   有看到我的回复么。。。。。

 

能从抓到的数据看出是什么问题来么?  

debug的时候  _NIB.nwkPanId      _NIB.nwkLogicalChannel两个值都是我设置的值  但就是不能加入网络!

如果我再从这个值再改回跟f8wConfig.cfg文件中设置的值一样 就能正常工作了    这什么情况啊?

我加了你给的几行代码也还是没效果。。。

求助....

@VV

为什么我问的问题 就没有回应了啊 ? 这个问题到现在也没有解决。。。

VV,你这边能不能提供一个demo给我啊?实在不知道是怎么回事。

你的终端1设备以前是否加过其他的网络,如果是的话,那么除了保存PANID,Channel以外,还有一个变量ExtendPANID,一般每个网络的ExtendPANID都是Coordinator的MAC地址。

hi VV:

zgDefaultChannelList = 0x00002000;      

osal_nv_write(ZCD_NV_CHANLIST, 0, osal_nv_item_len( ZCD_NV_CHANLIST ), &zgDefaultChannelList);      

zgConfigPANID = 0x2233;      

osal_nv_write(ZCD_NV_PANID, 0, osal_nv_item_len( ZCD_NV_PANID ), &zgConfigPANID);

SystemReset();

上次你让我加入这段代码,加入之后 有这样一个现象:

在f8wconfig文件中设置PanId=0x1345  channelList=0x00002000;

用按键将panId修改为0x2233后,channelList不变,这个时候如果重新启动,有时候能成功加入2233的网络,有时候不能。重新断电测试多次,发现基本上有两次就能成功加入到2233网络一次,这个是由于什么原因出现的呢?

debug发现,当startmode为mode_resume的时候 好像都成功了  为mode_rejoin的时候 都失败了!

另,你说的ExtendPanId是什么意思,例如有两个协调器A、B  当终端1加入A之后,通过按键修改 要让终端1加入B协调器,我要将协调器B的ExtendPanId写入到终端1 NV中么?

关于在程序运行中修改PanId、channel、或者设备类型 是否可以提供一个标准的demo,出现这种修改之后无法加入网络的问题 确实很头疼,调试花掉的时间确实很多...

在MT任务中貌似有修改PanId的函数 但是好像也没有效果啊!

还请VV继续为我解答一下我的问题  谢谢了!

我也遇到了类似的问题,通过串口修改pan_id和channel,新的pan_id和channel都不起作用,在f8wConfig.cfg中手动修改,编译,重新下载,用_NIB.nwkLogicalChannel和_NIB.nwkPanId读取,还是以前的的panid 和channel,在f8wConfig.cfg中的修改也没起作用,也很头疼,项目卡在这了。楼主的问题如果解决了,分享下方法,谢谢

@xie

还没解决 我也是卡在这了 ,vv大神又潜水了...   @VV

 

@xueshi xie

你的问题解决了么?交流一下?

没解决呢啊,有方法大家出来分享下啊

如果你解决了别忘了分享啊,谢谢啦

这个问题倒是解决了,你没有解决的话 可以加我QQ(645919447)  交流一下!

没解决了,现在已经不做这个了

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

网站地图

Top