微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 修改协调器PAN ID和Channel,协调器广播至所有的设备重启加入新建后的网络,修改不成功

修改协调器PAN ID和Channel,协调器广播至所有的设备重启加入新建后的网络,修改不成功

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

理想状态:

1. 协调器连接串口,通过上位机打开协调器的com口,同时终端也入网了。

2. 通过协调器发送广播给所有在同一网络的终端,内容是即将要修改的信道号。

3. 终端接收到广播

4. 终端修改信道成功

 

现在的问题是:

1.2.3都解决了,通过调试能看到终端收到了协调器发的广播。但是信道没修改成功。

 

问题详细:

      _NIB.nwkLogicalChannel = 17;                           //17是新修改的信道号

      NLME_UpdateNV(0x01);                                     //0x01的定义是保存网络层NIB

     SystemReset();                                                        //重启后,保存的信息生效

 

这段代码没有问题,因为我用串口直接改协调器是可以的,从没有出错过,重启后很快就能组网。

我烧板子的时候信道=26,代码中更改成12。

当终端把这段代码走完后,信道改了,也确实保存了,但是不能入网,此时协调器也改成和终端同样的信道号,终端不断的发送重启的信息,我打印出log看NV区的信道也确实是我刚才改的。当我一旦把协调器的信道恢复成初始信道26时,终端自动的将自己信道恢复成26并入网。也就是说终端只记得他之前入网的信道,不管自己的信道是多少,只要之前的网络还在,就自适应自我调整去加入,我觉得很神奇!   我怀疑是因为nv_restore.我查了很久,查到了一句话:

加入这个宏定义好处肯定是有的,但是问题也来了,如果终端想加入别的协调器网络,既是PANID和频道都一样,不管重启多少次都不会加入新的协调器中。

但是nv_restore不能去掉,还有别的功能是依赖于它的。

我又找到一个函数:

application wants to delete the stored NV information It just needs to set the ZCD_NV_STARTUP_OPTION as explained below and do a reset. 

"If the application would like to force a "new" join, the application should set the ZCD_STARTOPT_DEFAULT_NETWORK_STATE bit in the ZCD_NV_STARTUP_OPTION NV item before calling this function. "New" join means to not restore the network state of the device. Use zgWriteStartupOptions() to set these options 

[zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);]

我把这一句放到了修改信道的前面,但是SystemReset()后又恢复到了初始的信道号。

 

有没有什么方法可以让nv区清除入网信息,同时也要接受新的参数?

 

谢谢大家!鞠躬!鞠躬!鞠躬!

该问题已解决。

哥们,我遇到和你一样的情况,协调器修改panid和信道没有问题,通过串口可以看到数据修改了,而且重启之后也是修改的值,终端设备这边也显示修改了,但是却不能和协调器组网。把协调器的信道和PANID修改到原来的值时,终端设备就可以自动入网了,不知道为什么?请大神指点一二,不胜感谢,,,,,,

我也遇到了相同的问题,希望能指点一下下。

tools-->f8wConfig.cfg  

-DDEFAULT_CHANLIST=0x07FFF800  使能全部信道

就可以了

如果你不想要第几信道,就在这个总值里面减掉就可以了。

比如:

//-DDEFAULT_CHANLIST=0x02000000 // 25 - 0x19
//-DDEFAULT_CHANLIST=0x01000000 // 24 - 0x18
//-DDEFAULT_CHANLIST=0x00800000 // 23 - 0x17
//-DDEFAULT_CHANLIST=0x00400000 // 22 - 0x16
//-DDEFAULT_CHANLIST=0x00200000 // 21 - 0x15
//-DDEFAULT_CHANLIST=0x00100000 // 20 - 0x14
//-DDEFAULT_CHANLIST=0x00080000 // 19 - 0x13
//-DDEFAULT_CHANLIST=0x00040000 // 18 - 0x12
//-DDEFAULT_CHANLIST=0x00020000 // 17 - 0x11
//-DDEFAULT_CHANLIST=0x00010000 // 16 - 0x10
//-DDEFAULT_CHANLIST=0x00008000 // 15 - 0x0F
//-DDEFAULT_CHANLIST=0x00004000 // 14 - 0x0E
//-DDEFAULT_CHANLIST=0x00002000 // 13 - 0x0D
//-DDEFAULT_CHANLIST=0x00001000 // 12 - 0x0C
//-DDEFAULT_CHANLIST=0x00000800 // 11 - 0x0B 

只需要用11,12信道,就是:

-DDEFAULT_CHANLIST=0x000001800 

明白啦?

有问题再找我。

看我上面的回答。

使能全部信道

f8wConfig.cfg

-DDEFAULT_CHANLIST=0x07FFF000  //排除11信道

需要哪个就加上,不需要就不用加。

还有啊,我明明是个妹子!

好的,谢啦

晕,不好意思,误会,总之谢谢啦,上周六我的这个问题也解决了,受了你的不少启发

xiaozhang4美女,我的终端设备重新组网之后,一直在不断的发data request请求,有没有办法让它不发呢,我的QQ778146520,加个好友吧

data request是它本身zstack里的话吗?我没遇到过啊,是谁发给谁的呢?我给你留个邮箱,zxp113@126.com。我们可以一起探讨一下。

    同学你好,我想请问下,协调器如何广播修改信道的信息给其他节点?广播的信息包括什么?在哪里编写这部分代码?我还是小白,所以问题比较多,麻烦详细讲一下吧,十分感谢!

你可以参考一下http://bbs.feibit.com/thread-8632-1-1.html这篇文章,很不错哦

谢谢你的分享~很有用,有问题再跟你讨论~

    漂亮妹子你好啊@@我想请问一下你能不能把你的程序给我借鉴一下?我最近在做毕业设计,在网上找不到类似的程序可以参考,浪费了很多时间都没弄明白要怎么编程序,真的很烦恼。如果方便的话借我借鉴一下吧,万分感谢!么么哒~~

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

网站地图

Top