TI中文支持网
TI专业的中文技术问题搜集分享网站

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

理想状态:

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区清除入网信息,同时也要接受新的参数?

 

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

xiao zhang4:

该问题已解决。

Guanqiang li:

回复 xiao zhang4:

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

lei:

回复 xiao zhang4:

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

xiao zhang4:

回复 Guanqiang li:

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 

明白啦?

有问题再找我。

xiao zhang4:

回复 lei:

看我上面的回答。

xiao zhang4:

回复 Guanqiang li:

使能全部信道

f8wConfig.cfg

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

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

xiao zhang4:

回复 Guanqiang li:

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

Guanqiang li:

回复 xiao zhang4:

好的,谢啦

Guanqiang li:

回复 xiao zhang4:

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

Guanqiang li:

回复 xiao zhang4:

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

赞(0)
未经允许不得转载:TI中文支持网 » 修改协调器PAN ID和Channel,协调器广播至所有的设备重启加入新建后的网络,修改不成功
分享到: 更多 (0)