联网成功的终端,脱离网络后,从新启动后电流在8mA左右无法,功耗无法降低。
2.5.1a协议栈,在SampleApp上进行试验,开启
POWER_SAVING
NV_RESTORE
NV_INIT
加入一次网络后,关闭协调器,重启终端设备,设备功耗始终很高,各项低功耗设置都与
AN079 -- Measuring Power Consumption of CC2530 with Z-Stack文档一致。
我使用了
if(initFailCounter++ >= NWK_INIT_fAIL_MAX )//连续链接失败6次进入1分钟休眠6timer
{
osal_start_timerEx( ZDAppTaskID, ZDO_NETWORK_INIT, 60000 );
devState = DEV_INIT;
return(events ^ ZDO_NETWORK_INIT);
}这种方法,但是问题没并有根本解决。
我在论坛中查到过类似的问题,但是没有发现什么好的解决办法,再次向各位大神请教。
我也測試過加入函數ZDApp_StopJoiningCycle();加入定時週期1分鐘開啟三秒,然後使用該函數關閉加入網絡。但實際並沒有降低功耗,電流依然是8mA左右。
功耗高的原因是设备一直处于搜网状态。
在实际产品中,我们建议客户在断网以后,重新搜网的时候如果一段时间没有搜到,就可以暂停搜网,休眠一段时间以后再搜。
你可以下载Z-Satck Home 1.2.2a协议栈,里面已经有这个功能,具体你可以搜索
if( events & ZDO_REJOIN_BACKOFF )
{
if( devState == DEV_NWK_BACKOFF )
{
ZDApp_ChangeState(DEV_NWK_DISC);
// Restart scan for rejoin
ZDApp_StartJoiningCycle();
osal_start_timerEx( ZDAppTaskID, ZDO_REJOIN_BACKOFF, zgDefaultRejoinScan );
}
else
{
// Rejoin backoff, silent period
ZDApp_ChangeState(DEV_NWK_BACKOFF);
ZDApp_StopJoiningCycle();
osal_start_timerEx( ZDAppTaskID, ZDO_REJOIN_BACKOFF, zgDefaultRejoinBackoff );
}
return ( events ^ ZDO_REJOIN_BACKOFF);
}
谢谢大V,我用的是2.3.0,正准备改成最新版本。
我现在的方法是在
if ( events & ZDO_NETWORK_INIT )
这段之后加入次数判断,判断后进行执行
initFailCounter = 0;
devState = DEV_INIT;
ZDApp_StopJoiningCycle();
然后计时1分钟后再次开启网络申请。