enddevice无法恢复加入父节点,仿真发现是由于deviceCapacity为0,而捕捉数据包中deviceCapacity为1
协议栈:Z-Stack Home 1.2.2a
CPU:CC2530
节点:一个路由器,一个终端
问题:
enddevice离网后无法恢复加入父节点,仿真发现是由于终端节点ZDApp_NwkDescListProcessing()函数中deviceCapacity为0导致失败;而使用协议分析仪捕捉的数据包中,父节点回复的beacon中end deviceCapacity为1(见附件)
当两节点距离较近时,恢复入网的几率更大,仿真发现成功时ZDApp_NwkDescListProcessing()函数中的deviceCapacity为1。
附件中的数据是在两节点距离较近时捕捉的,可见经过了20多次的beacon request与beacon才成功恢复入网,而所有父节点回复的beacon中end deviceCapacity均为1.
请问这是什么原因呢?
最有可能的就是收到的beacon 信号强度太低,或者是没有收到beacon。
因为sniffer是一个第三方设备,sniffer收到并不一定设备也收到。
你可以看下接收处理beacon的地方,
void ZDO_beaconNotifyIndCB( NLME_beaconInd_t *pBeacon )
// check if this device is a better choice to join...
// ...dont bother checking assocPermit flag is doing a rejoin
if ( ( pBeacon->LQI > gMIN_TREE_LQI ) &&
( ( pBeacon->permitJoining == TRUE ) || ( _tmpRejoinState ) ) )
{
另外你们的CC2530节点硬件是否有测试过,频偏,发射功率都正常么?
@VV
感谢回复。
我将gMIN_TREE_LQI 调低后,问题基本解决。
另外,问下频偏,发射功率的测试有推荐的机构吗?我们不具备测试的能力,谢谢
有2种方法:
1,去TI的开放实验室,里面有相关的测试仪器
2,去RF测试仪器的开发实验室也可以。但是这种实验室是为了卖仪器的。免不了他们的商务来打扰你
1,去TI的开放实验室,里面有相关的测试仪器
TI的开放实验室在哪?深圳有吗?