TI论坛
直播中

李博

8年用户 132经验值
私信 关注

Zstack终端节点上电入网未成功,请问怎么让设备进入休眠状态?

本帖最后由 一只耳朵怪 于 2018-6-3 11:27 编辑

各位,请教一个问题

终端设备在未加入任何网络的情况下启动,启动的时候会寻找网络,电流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));

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

回帖(4)

李果

2018-6-1 13:25:00
你板子上还有其他的外围器件在消耗电流吗?
举报

李博

2018-6-1 13:40:19
引用: wenlonghbo 发表于 2018-6-1 13:25
你板子上还有其他的外围器件在消耗电流吗?

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

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

macPowerSaveState = MAC_PwrOffReq(MAC_PWR_SLEEP_DEEP);
举报

李果

2018-6-1 13:51:38
引用: baibai8000 发表于 2018-6-1 13:40
您好VV, 板子没有其他外围器件在消耗电流。 

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

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

李博

2018-6-1 14:06:06
引用: wenlonghbo 发表于 2018-6-1 13:51
问下你使用的是哪个版本的协议栈,我试下。

我使用的是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;
]


非常感谢您的回复!
 
1 举报

更多回帖

发帖
×
20
完善资料,
赚取积分