Z-STACK 低功耗设置

Z-stack提供了两种sleep模式,LITE和DEEP(PM2/PM3)。当系统需 要唤醒去执行一些周期性的事件时,使用LITE sleep;当系统没有被定制周期事件而是通过外部中断(如按键)来唤醒设备,使用DEEP sleep。例如带有传感器的终端设备,它需要周期性的唤醒发送采集的数据,又如远程控制终端设备通过按键唤醒来发送一信息,它们的大部分时间都是处于 sleep,以降低功耗。

第一步:添加编译选项:POWER_SAVING

默认情况下,Z-stack里终端设备的电源管理是关闭的。添加编译选项POWER_SAVING以开启此功能

第二步:在f8wConfig.cfg里设置:-DRFD_RCVC_ALWAYS_ON = FALSE

 

-DRFD_RCVC_ALWAYS_ON=FALSE

第三步:根据需要,在f8wConfig.cfg里设置三个参数:

 

-DPOLL_RATE=1000

 

-DQUEUED_POLL_RATE=100

 

-DRESPONSE_POLL_RATE=100

Z-stack工程终端设备默认情况下为电源管理关闭,自动轮询消息这一功能是开启的。这里有三个轮询选项,每一个都由一个不同的时间延迟参数控制。当电源管理功能开启后(添加POWER_SAVING),任一个轮询选项的设置都会影响到睡眠模式。时间延迟的设置不能用于DEEP skeep中的轮询,因此限制了降低功耗。这三个轮询选项分别如下:

Data Request Polling—周期性向父节点发送数据请求来轮询消息队列。轮询的时间间隔由NLME_SetPollRate()或gNWK_POLL_RATE设定,如果事先没有使能它,那么在调用时就立即进行轮询。

赋值下载到程序后,终端就会按照这个速率去发data request,我们可以通过调用函数 NLME_SetPollRate()来立即改变终端的速率。尤其在低功耗模式下,这个参数的值非常的影响功耗,为了达到深度睡眠,这个值应该设置为零。

改成0以后,父设备是无法发数据给子设备,因为父设备给子节点的数据时Indirect message,需要子设备去data request获取数据。



Queued Data Polling—在收到数据指示后,就会向父节点请求消息。这个时间间隔可由NLME_SetQueuedPollRate()或gQUEUED_POLL_RATE设定。这个应该是终端每隔一段时间向父节点发送数据。

Response Data Polling—在收到数据确认指示后,就会向父节点请求响应消息,这个时间间隔可由NLME_SetResponsePollRate()或gRESPONSE_POLL_RATE设定。这个时间是每隔一段时间向父节点发送ACK消息。。。。。。这个我们可以明天来测试一下

函数说明:

NLME_SetPollRate()——设置/改变网络检测速率,仅终端设备可用。

NLME_SetQueuedPollRate()——设置/改变队列检测速率,仅终端设备可用。

NLME_SetPollRate()——设置/改变响应检测速率,仅终端设备可用。

如果只是使用默认的轮询频率进入睡眠态,则只能进入LITE sleep。为了进入DEEP sleep则必须将gNWK_POLL_RATE设为0(也就是通过设置Data Request Polling 为零可以使用NLME_SetPollRate()函数来实现),不让它反复轮询。这个样子就不会采集数据了。

设置这个三个选项可以实现多种轮询方式,例如,对于一个不需要接收消息的设备,在它加入网络后,就将这三个选项都设为0。如果APS层使用了ACK,则必需确保在消息发送后到收到ACK这一段时间内,轮询是使能的。

在有的系统中,可能需要使用可变的轮询频率,根据具体应用而进行设置。
对于这个功耗管理最好参考TI的官方资料,顺便还说一句上面那种情况一般是出现在ZC和ZD通信时才考虑.上面的设置方式还不能最大的降低功耗,好像只能进入到PM2模式,如果需要进入PM3模式还需要调用HAL_SLEEP()这个函数,具体怎么弄可以看协议栈代码。对于低功耗的数据采集,有些网友不知道如何保存之前的网络,也就无法知道是那个模块在采集数据,对于这个,我觉得最好可以加入 NV_INIT,NV_RESTORE编译。还有一个大伙可能会出现的,就是有些人把虽然保存了网络信息也组好了网络,但是发现用TI的smartRF给协调器烧写hex文件之后无法入网了,这是为什么呢?因为smartRF把NV擦除了,所以协调器重启建立PANID所以无法入网。有时甚至会出现PANID冲突,对于这个解决办法是用IAR BEGUG 工程里面选择不擦除NV就OK了。


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值