微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > Z-Stack Home 1.2.0终端进入低功耗

Z-Stack Home 1.2.0终端进入低功耗

时间:10-02 整理:3721RD 点击:

大家好:

        我现在用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啊,但是不会出现你说的不停的找网,求教如何配的这么低的电流

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top