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.

Zstack 终端节点 上电入网未成功,进入低功耗的设置问题。

各位,请教一个问题

终端设备在未加入任何网络的情况下启动,启动的时候会寻找网络,电流27ma左右。   如果设备在30s内没有加入网络,这时候我怎么能让设备进入休眠状态。

我设备进入低功耗的处理如下。但是处理完之后电流消耗为8.27ma

ZDApp_StopJoiningCycle();

HalLedSet(HAL_LED_3,HAL_LED_MODE_OFF);

SLEEPCMD &= ~PMODE; /* clear mode bits */
SLEEPCMD |= 0x03; /* set mode bits */
while (!(STLOAD & LDRDY));

请问下怎么解决这个问题啊!

  • 你板子上还有其他的外围器件在消耗电流吗?

  • 您好VV, 板子没有其他外围器件在消耗电流。 

    我加了下面一句函数,想关闭MAC层,返回的读数一直是0XE2。

    macPowerSaveState = MAC_PwrOffReq(MAC_PWR_SLEEP_DEEP);

  • 问下你使用的是哪个版本的协议栈,我试下。

  • 我使用的是2.5.1.a的协议栈。  

    我调试的时候发现, 未入网重启的时候POWER SAVE是没打开的。 做了一下处理之后可以正常的进入休眠了。

    static uint16 networkReadState(uint16 events)
    {
    if(events &MANGETIC_READ_NETWORK_EVENT)
    {

    if(m_gAppNwkState != DEV_END_DEVICE)
    {

    osal_pwrmgr_device( PWRMGR_BATTERY );

    ZDApp_StopJoiningCycle();

    HalLedSet(HAL_LED_3,HAL_LED_MODE_OFF);

    osal_pwrmgr_task_state(s_cTaskID,PWRMGR_CONSERVE );

    if(c_nJoiningCnt++ < MAGNETIC_JOINING_MAX_CNTS)
    {
    osal_start_timerEx( s_cTaskID, MAGNETIC_JOINING_EVENT,100);
    }
    else
    {
    c_nJoiningCnt = 0;
    osal_stop_timerEx(s_cTaskID,MANGETIC_READ_NETWORK_EVENT);
    osal_stop_timerEx(s_cTaskID,MAGNETIC_JOINING_EVENT);
    }
    }
    else
    {
    osal_start_timerEx( s_cTaskID, MANGETIC_READ_NETWORK_EVENT,MAGNETIC_READ_NETWORK_DELAY);
    }

    return (events ^ MANGETIC_READ_NETWORK_EVENT);
    }

    return events;
    }

    非常感谢您的回复!