微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 协调器掉线以后终端搜索网络的功耗太高

协调器掉线以后终端搜索网络的功耗太高

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

协调器掉线以后,起初我用ZDApp_StopJoiningCycle关闭了加入网络搜索,随后我又调用NLME_OrphanJoinRequest( zgDefaultChannelList,

zgDefaultStartingScanDuration );开启了搜索,但是这个函数会导致搜网周期过长,约为8-9s,而且这段时间内功耗很高,有80mW。请问这个高功耗的时间能不能缩短,而且这段时间终端到底在干哪些事情?

不要调用NLME_OrphanJoinRequest

直接调用ZDApp_StartJoiningCycle(

@VV

非常感谢VV给我的解答,问题已经解决。维持8-9s的高功耗状态是因为在Ztack机制里当扫描失败次数达到5次时if (startMode == MODE_REJOIN && scanCnt++ >= 5 ),扫描信道被置为所有信道zgDefaultChannelList = MAX_CHANNELS_24GHZ,所以导致扫描周期变长,我把这句注释掉就好了。

至于您说的用ZDApp_StartJoiningCycle,我试过可是一直不可以,当启用该函数时一直都加不上网络,而且功耗会一直维持在80mW的高功耗状态,但是用NLME_OrphanJoinRequest或者直接调用ZDOInitDevice( 0 )却都能加入网络,现在我还在找原因在哪,如果您知道的话也希望能指点一二,谢谢。

帮忙确定下 当时的devState是不是 DEV_NWK_DISC

ZDApp_ProcessOSALMsg( osal_event_hdr_t *msgPtr )

if ( ( (pChosenNwk = ZDApp_NwkDescListProcessing()) != NULL ) && (zdoDiscCounter > NUM_DISC_ATTEMPTS) )

你好W,

       我采用ZDApp_StopJoiningCycle( void )停止了网络搜寻,但是还有8mA的电流吗,如何才能进一步降低功耗?

@VV

谢谢,现在如果我使用ZDApp_StartJoiningCycle();,我通过打印串口信息发现当时的devState的确是DEV_NWK_DISC,而且此时的devStartMode == MODE_REJOIN,若在执行ZDApp_StartJoiningCycle()的前一刻重新打开Coordinator,则函数进入case ZDO_NWK_DISC_CNF---->else if ( devStartMode == MODE_REJOIN )----->if ( NLME_ReJoinRequest( ZDO_UseExtendedPANID, pChosenNwk->logicalChannel) != ZSuccess )----->ZDO_JoinConfirmCB回调函数------->case ZDO_NWK_JOIN_IND------>ZDApp_ProcessNetworkJoin()------->else if ( devState == DEV_NWK_ORPHAN || devState == DEV_NWK_REJOIN )--------->此时nwkStatus !== ZSuccess,所以进入else------->ZDApp_NetworkInit(),一直无法rejoin的话就形成死循环了。

请问为什么这个时候EndDevice无法rejoin入协调器的网络呢,我的协调器已经加入了预编译NV_INIT和NV_RESTORE,EndDevice预编译选项是NV_RESTORE,期待您的解答,谢谢!

@cai yu

          应该是因为你没有进入低功耗模式

这个问题的原因是因为你的coordinator再次启动的PANID和上一次的不一样,有两种修改方式,1.固定网络的PANID,不要随机生成; 2.在devStartMode设置为MODE_REJOIN的时候,把_NIB.nwPanId设置为INVALID_PAN_ID,这样终端节点在rejoin的时候才有可能会加入另外一个PANID的网络(大约在ZDApp.c文件的1506行),希望能够对你有所帮助!

 

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

网站地图

Top