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.

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

Other Parts Discussed in Thread: Z-STACK

大家好:

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