低功耗设置工作总结_公司机构设置工作总结

2020-02-27 其他工作总结 下载本文

低功耗设置工作总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“公司机构设置工作总结”。

最近在搞一个实用性的zigbee网络,网络中使用到了终端节点进行传感器数据采集,因需要电池供电,因此,便用到了它的低功耗设置。在使用过程中碰到了种种疑惑和困难,从中总结出了一些经验,与大家分享,望对大家有所帮助,如有不对,请多指教。

首先在使用低功耗时(对于终端节点而言end device),1.先要将TOOLS文件夹中的f8wConfig.cfg中的-DRFD_RCVC_ALWAYS_ON = FALSE,(这里本来是TURE),如果这里不改,就无法让接收器进入睡眠

2.在预编译中加入POWER_SAVING,这里是为了让协议栈中的节电选项预编译通过。

在完成这两项工作后,本以为已经可以了。上电试验,但是怎么才能看出来进入没进入节能模式呢?无从考证。所以我们就需要找到睡眠函数,看看它是怎样进入睡眠的,在里面加入个LED控制,进入睡觉状态前LED关闭,唤醒时LED亮起,这样我们便可以清楚的看到CPU到底有没有睡眠,睡眠了多久。

查阅资料,得知,睡眠函数是这个叫做hal_sleep(next)的函数。Halsleep(next),根据下一个要做的任务(包括用户任务和MAC任务)在多久以后需要去做(next就是表示多久以后要做),如果这个时间不为零,就说明时间未到,CPU是空闲的,所以就去睡眠。

具体代码分析:

注意,这里获取任务到期时间是要获取两个的,因为MAC任务和用户设定的周期任务是分开的。并且比较哪个比较小,就按哪个时间,举个例子,比如你再过5分钟要接个电话,再过10分钟要吃饭,你取10分钟作为任务到期时间,那么也就是说你认为可以睡10分钟,但是在你睡的这10分钟里,电话漏掉了。就是这个意思。

接下来halPwrMgtMode =(timeout == 0)? HAL_SLEEP_DEEP : HAL_SLEEP_TIMER;实际上是综合一下MAC到期时间和用户任务到期时间,把其中小的值给timeout 然后判断它是不是0.如果是说明有任务到期,不能进入深度睡眠,halPwrMgtMode=HAL_SLEEP_TIMER,如果timeout不等于0说明CPU空闲,可以深度睡眠。

上面这几行程序,实际上是判断timeout是不是大于系统设定的最小睡眠时间,你想,如果马上就到期了,系统才睡一小会,没有意义,所以这里做一个这样的判断。举个例子,比如你下一分钟就要去上班了,再睡1分钟也没什么意义,不如直接现在就去上班。就是这个意思。

继续往下

这里其实就是进入睡眠了,在进入睡眠前,先把LED1关掉睡眠过程就不多说了,就是关掉RF收发器,关掉一些没用的东西。当运行到

这里,会把POWERMODE设置成上面halPwrMgtMode =(timeout == 0)? HAL_SLEEP_DEEP : HAL_SLEEP_TIMER;也就是halPwrMgtMode的值,从而睡眠。

再到后面

这里可以看到

也就是睡眠结束,恢复工作。我们可以在这里再加上LED1 ON,使LED1点亮,标志着设备唤醒了。这样我们就可以知道设备何时睡眠的,何时唤醒了。然后烧录程序,继续试验。

结果发现LED灯闪的还是挺快的。这也就是说明有任务在不断的执行,那么是哪些任务呢,上面已经讲过了,任务无非就是用户任务和MAC任务。这样我们先从用户任务入手,一般需要不断执行的,无非就是按键扫描、传感器扫描等,我们就去修改他们的任务到期时间。这里可以推荐大家一种方法,用户任务,需要不断执行的,肯定是要用到osal_start_timerEx函数的,那么我们就可以找这些地方,然后看看是不是要修改的地方,这样定位会比较快一些,直接在edit选项卡中选择search all选项,在搜索关键词里写上这个函数名,便可以迅速定位要修改的地方。

在这里,我的任务只有两个需要不断执行的,一个是按键扫描,一个是传感器数据发送。因为子节点我可以不用按键,于是直接把按键初始化注释掉。至于传感器数据发送,暂时把时间间隔改成10秒。继续上电,结果闪动确实慢了,嗯!有效果,可是灯还是会按照一秒一次的频率闪动,因为用户任务已经修改好了,那么应该就是MAC任务在不断唤醒了。

回想一下学过的概念,节点加入网络以后,是要不断轮询数据,难道是这个东西?于是就在各大网站开始搜索关键词,最终发现果然不假。

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

f8wConfig.cfg里配置的:-DPOLL_RATE等这三个选项改为0即可实现关闭轮巡。当然这样子节点也就接收不到来自别人的无线信息了。

最终试验成功。达到节电目的。

个人工作总结,分享旨在希望能给予大家帮助与方便,如有错误,请多指教。分享请注明出处!谢谢!

2014/07/06 山东-岳峰

《低功耗设置工作总结.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
低功耗设置工作总结
点击下载文档
相关专题 公司机构设置工作总结 工作总结 低功耗 公司机构设置工作总结 工作总结 低功耗
[其他工作总结]相关推荐
    [其他工作总结]热门文章
      下载全文