ZED未加入网络的时候的功耗问题
ZED 和ZC,在组网正常的情况下,ZED可以进入低功耗模式,电流在uA级别。CC2530芯片
当关闭ZC后,ZED会持续的进行网络发现,无法进入低功耗模式。电流达28mA;
求教TI工程师,如何降低ZC发现网络的频次以降低功耗?或者有其他什么方法来降低功耗?
当失去父节点以后,节点会先发出orphan然后会以rejoin的方式去加网络,因为对于节点来说加入网是首要的任务。
如果不想让节点不停的去搜索网络的话,可以extern uint8 ZDApp_StopJoiningCycle( void );,把搜索网络关掉,或者开一个定期把搜网的周期拉大
如何设置搜索网络的时间间隔?或者是得自己定时实现?
“发出orphan”及“以rejoin的方式去加网络”分别在什么地方操作?失去父节点的消息在哪里获得?
节点在失去父节点以后,会调用下面的callback函数
void ZDO_SyncIndicationCB( uint8 type, uint16 shortAddr )
在这个函数里面,会把节点的状态改成devStartMode = MODE_RESUME,然后开始重新去找原先的网络
然后会调用ZDO_StartDevice
在这个函数里面 开始Orphan join,
这个时候你可以开启一个timer event,如果没有join成功,可以加长尝试搜网的时间。如果加网成功了可以把这个timer event清除掉。
最新的Z-Stack Home 1.2.2 里面已经把这个功能加进去了。你可以参考下,代码如下。
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);
}
macEventLoop,
nwk_event_loop,
APS_event_loop,
ZED在有网络的时候持续频繁进入这几个事件,导致功耗在100uA,如何降低这些事件的发生频率?都是库,无法追踪。。。。
测试发现低功耗会频繁进入nwk_event_loop 看来配置有问题,不好追踪是什么事件导致的
仅看到事件变量为1、32768 等