使用的协议栈版本是:ZStack-CC2530-2.5.1a
使用的无线芯片是:CC2530F256RHAT
开发环境是:IAR 8.10.3
项目描述:
20个终端,1个协调器。每一个终端都布局在协调器的20米范围内。20个终端都能与协调器通信上。20个终端会每天断电重新上电一次,协调器也可能会断电重新上电。我现在使用项目工程是从D:\Texas Instruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\GenericApp修改过来的,并且不管是协调器还是终端,我都在Option中的C/C++Compoler的Preprocessor的Defined symbols中加入了NV_INIT、NV_RESTORE,希望系统保留原先的网络。另外,如果终端找不到原来的网络存在,在检测到设备状态为(devState == DEV_NWK_DISC)时,1分钟后将恢复这个终端的自由之身,重新寻找新的网络,重新加入,这个处理方法如下:
if(devState == DEV_NWK_DISC)
{
JoiningNWKTimer ++;
if(JoiningNWKTimer >= 6000)
{
JoiningNWKTimer = 0;
// 网络复位
zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);
SystemReset();
}
}
else
{
JoiningNWKTimer = 0;
}
以上这个代码只在终端程序上实现,协调器没有使用。
现在遇到的问题是:刚开始上电终端都能与协调器通信上,接下来给协调器断电,断电时间超过设置的1分钟,然后协调器重新上电,这样反复几次之后,发现协调器与终端通信不上了,采用SmartRF Packet Sniffer工具抓包(为了方便起见,我停掉了19个终端,只保持一个终端在线),发现终端会发出beacon resqust请求,协调器也会发出回应,但是接下来终端没有理会协调器,还是发beacon resqust请求。抓包工具展示如下:
请TI的大牛们帮忙分析一下状况,显现,在线等着你们精彩的解答!!!!