问题描述:
1,芯片采用cc2530,参考设计采用Ti的官方参考,并且已制作1000+pcs,正在使用.
2,协议栈采用ti的ZStack-CC2530-2.5.1.
3,出现问题是:烧写程序后第一次coordinator打开组网,所有router总是可以组网成功.然后反复关闭组网,打开组网,router重新组网,有时候就出现总也组网不成功.连续几十分钟也不能组网成功重启也不行,重新把coordinator程序烧写一遍,就能组网成功.
4,问题用到的操作:coordinator打开和关闭组网用函数:
NLME_PermitJoiningRequest(0xFF); //允许入网
ZDSecMgrPermitJoining(0xFF);
NLME_PermitJoiningRequest(0); //禁止入网
ZDSecMgrPermitJoining(0);
router重新组网采用函数:
osal_start_timerEx( ZDAppTaskID, ZDO_DEVICE_RESET, 1000 ); // 清除网络参数,并重启
另:抓包工具用的不熟,但组网不成功时看到routet在个个信道广播申请,未见coordinator回复。
以上,问题全部,请高手帮助判断是否有解决办法或者思路,谢谢!
VV:
如果你是项目初期刚开始使用CC2530做产品,那么建议你使用最新的协议栈Z-Stack Home 1.2.2a,你的协议栈是非常老的版本的了。
最好能够提供空中抓包的数据。
你看下协调器是否已经加满了,多少个节点做的测试?
da che:
回复 VV:
谢谢W的回复
1,项目已经完成了,在正式产品上使用中.解决了这个问题,我再研究新协议栈,这可能需要一段时间.
2,打开组网后,所有的信道都充满router的申请数据,未看到其他数据,我应该抓取哪个信道的数据呢?
3,协调器可组网20台,默认设置我未更改,我已定义了NV_INIT和NV_STORE,而且以前做过试验,route再次重新组网,并不会分配新的Dest.Address.所以不是组网满了.而且从烧写完coordinator的程序开始,我一直用固定的5台routet做实验.
VV:
回复 da che:
你确定定义是NV_STORE??正确的应该是NV_RESTORE
只要抓下数据包就知道路由在复位重启以后,是怎么入网的?
da che:
回复 VV:
感谢W的回复.
1,确实是NV_RESTORE,我记错了。
2,经过研究,我抓住了组网不成功的数据包,请帮忙分析下我应该在哪找问题,谢谢!
另外,多问一个问题,抓住的数据包有很多标志字符,不是很明白,有哪个文档详细描述我怎样分析用sniffer抓出数据包的,请帮忙提供个链接,谢谢!
VV:
回复 da che:
协调器里面加过其他的设备,AssociateList满了,你可以用Flash Programmer擦除下协调器的程序就可以了
da che:
回复 VV:
感谢W的回复.
明白了,AssociateList满了。我想知道你用的这个PACKET View的软件是什么,方便告诉我下软件名称和下载地址么?