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;
}
非常感谢您的回复!