Z-Stack Home 1.2.0终端进入低功耗
大家好:
我现在用C:\Texas Instruments\Z-Stack Home 1.2.0\Projects\zstack\HomeAutomation\SampleLight例程来更改我的程序,配置为endDevice。我现在想进入低功耗,-DPOLL_RATE=0,-DQUEUED_POLL_RATE=0,-DRESPONSE_POLL_RATE=0,-DRFD_RCVC_ALWAYS_ON=FALSE设置。但是我测功耗在20mA左右,一直降不下来。怎么修改才能进入低功耗?
还有我想先旁路协议栈的zigbee功能,先实现我的功能,不知怎么才能停止终端不断寻找网络?
谢谢大家了。
你的节点还在不停的搜网?
VV:
您好!
我暂时只想要它的低功耗功能,不要组网。终端是没有加入网络,有人说这时它会不断的寻找一个网络,不知道是不是真的?如果是不断寻找网络,怎么才能禁止它搜网?
谢谢。
你好 VV!
我现在也有这样的问题, 我终端加入协调器之后,我把协调器断电,终端使用电池供电。 终端如果再次发送无线消息,网络状态就会修改为DEV_NWK_DISC。
设备睡眠电流1.1UA。 网络改变之后电流变成了25ma左右,这样电量消耗非常快。
请问下有什么解决方法。
利用下面的函数来终止联网和启动连网
uint8 ZDApp_StopJoiningCycle( void )
uint8 ZDApp_StartJoiningCycle( void )
您好 vv!
我刚刚尝试了下 使用这二个函数,但是发现电流并不会减小到1.1ua, 大概在8ma左右。
在此之前,我还尝试了另一个方法,代码如下:
case ZDO_STATE_CHANGE: SmartHomeApp_NwkState = (devStates_t)(MSGpkt->hdr.status); if ((SmartHomeApp_NwkState == DEV_ROUTER)|| (SmartHomeApp_NwkState == DEV_END_DEVICE) ) {g_mSendFlag = true; } else { if(g_mSendFlag == true) { ZDOInitDevice(0xffff); //ZDApp_StopJoiningCycle(); osal_start_timerEx( MkTaskID, APP_START_NET_MSG_EVT,0x3a98);} } break;
if(events &APP_START_CHECK_MSG_EVT) { if(g_mSendFlag == false) { g_mSendFlag = true;osal_start_timerEx( MkTaskID, APP_START_NET_MSG_EVT,0x3a98); } return (events ^ APP_START_CHECK_MSG_EVT); } if(events &APP_START_NET_MSG_EVT) { g_mSendFlag = false; ZDOInitDevice(0); osal_start_timerEx( MkTaskID, APP_START_CHECK_MSG_EVT,0x3a98); return (events ^ APP_START_NET_MSG_EVT); }
这几段代码能让我 的设备在运行过程中如果没有网络的时候,进行15s 查询网络,15s休眠。 休眠电流也可以达到1ua左右。 但是我并且不太明白,这种方式和
终止联网和启动连网的区别, 按照我之前所设想的, 我需要的就应该是终止联网和启动连网的二个API,但是为什么这二个API又达不到要求。
刚刚测试, 在Stop之后加入睡眠能降低功耗
if(g_mSendFlag == false)
{
ZDApp_StopJoiningCycle();
SLEEPCMD &= ~PMODE; /* clear mode bits */ \
SLEEPCMD |= 0x03; /* set mode bits */ \
while (!(STLOAD & LDRDY));
osal_start_timerEx( MkTaskID, APP_START_NET_MSG_EVT,0x3a98);
}
我需要进一步测试之后在回帖, 并且还有一个疑问未得到测试。
设备加入网络之后, 协调器断线。 终端如果重启, 是否也可以通过这样的方法来降低消耗!
你好,qiang chen3:
看你的功耗可以到1uA,是不是进到了PM3模式呢?我们这好像电流还在150uA啊,但是不会出现你说的不停的找网,求教如何配的这么低的电流