This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ZED未加入网络的时候的功耗问题

Other Parts Discussed in Thread: CC2530, Z-STACK

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 等