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

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

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

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

VV:

不要调用NLME_OrphanJoinRequest

直接调用ZDApp_StartJoiningCycle(

VV:

回复 xu zhang7:

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

ZDApp_ProcessOSALMsg( osal_event_hdr_t *msgPtr )

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

cai yu:

回复 VV:

你好W,

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

xu zhang7:

回复 VV:

@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,期待您的解答,谢谢!

xu zhang7:

回复 cai yu:

@cai yu

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

tao li7:

回复 xu zhang7:

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

 

赞(0)
未经允许不得转载:TI中文支持网 » 协调器掉线以后终端搜索网络的功耗太高
分享到: 更多 (0)