编辑: 南门路口 2015-05-20
HTTP://WWW.

FEIBIT.COM 深圳市飞比电子科技有限公司 SHENZHEN FEIBIT ELECTRONIC TECHNOLOGY CO., LTD 地址:深圳市福田区梅华路深华科技园

1 栋西座

5 楼5A6-5A10 室

电话:0755-83287930 传真:0755-83159815

第五章 Z-STACK 的低功耗电源管理

第一节 Z-STACK 协议栈下的电源管理机制 5.1.1 电源管理的概念 电源管理是指设备(一般是采用电池供电的终端节点)通过软件设置在设备空闲时自动进入多 种睡眠模式,从而延长电池的使用寿命. Zigbee 的低功耗特性即通过恰当的电源管理实现,即需要尽量减少短暂无线电通信之间的功 耗.通常有以下两种途径: 禁用外设以降低设备功耗. 空闲期间进入睡眠模式. Z-STACK 提供了两种睡眠模式:轻度定时器休眠和深度休眠.轻 度定时器睡眠在系统需要周期性被唤醒去执行预定时间延迟的任务时被使用.深睡眠通常在没有明 确时间延迟,需要外部中断刺激(如按一个按钮)唤醒设备才开始任务的情况下使用. 轻度定时器 睡眠可以降低功耗到几毫安,而深度睡眠可以减少到几个微安. 睡眠的终端设备的例子产品包括:传感器――它被周期性的唤醒汇报它们采集的传感器数据;

还有遥控设备――它被用户按键唤醒并发送数据.在这些类型的设备共同特点是它们可以在大部分 时间里处于睡眠模式,最大限度地减少系统功耗. 5.1.2 Z-Stack 协议栈下的系统电源管理机制 Z-SATCK 协议栈下的系统电源管理通过 OSAL 实现.OSAL 主循环监控每个任务完成后的系统状 态.如果系统当前没有任务有预定的事件发生,同时电源管理功能启用,系统将判断是否进入睡眠 模式.系统进入睡眠模式必须同时满足如下条件: - 睡眠 POWER_SAVING 编译选项启用. - ZDO 节点状态描述显示 RX 在系统空闲时关闭 :设置 RFD_RCVC_ALWAYS_ON 在f8wConfig.cfg 为FALSE. - 所有的 Z-Stack 的任务 同意 睡眠. C 所有的 Z-Stack 的任务没有预定的事件安排. HTTP://WWW.FEIBIT.COM 深圳市飞比电子科技有限公司 SHENZHEN FEIBIT ELECTRONIC TECHNOLOGY CO., LTD 地址:深圳市福田区梅华路深华科技园

1 栋西座

5 楼5A6-5A10 室

电话:0755-83287930 传真:0755-83159815 - MAC 没有预定的事件安排. Z-Stack 中终端设备的工程项目在默认情况下没有电源管理功能.要启用此功能,在建立工程 时需要将 POWER_SAVING 编译选项设置为使能.如下图所示,该编译选项位于 C/C++ Compiler 下Preprocessor 里的 Defined symbols:(one per line)下: 为了将系统功耗降到最低, 终端设备在进入睡眠模式之前需要尽可能多地把不必要的电路关闭. 这包括外围设备、无线接收器和发射器以及 MCU 本身的一些重要部分.为了避免在睡觉模式下丢失 信息,终端设备的父设备需要保存子节点的信息直至终端设备查询到这些信息为止(终端设备功能 设置中需将 CAPINFO_RCVR_ON_IDLE 设置项设置关闭) .在Z-Stack 的工程中,设备功能的默认设置 在ZDO_Config_Node_Descriptor 结构中描述,保存在 ZDConfig.c 文件中.终端设备的默认设置只 设置了 CAPINFO_DEVICETYPE_RFD 项,表明它是电池供电并可在设备空闲时关闭其无线接收器. HTTP://WWW.FEIBIT.COM 深圳市飞比电子科技有限公司 SHENZHEN FEIBIT ELECTRONIC TECHNOLOGY CO., LTD 地址:深圳市福田区梅华路深华科技园

1 栋西座

5 楼5A6-5A10 室

电话:0755-83287930 传真:0755-83159815 在OSAL 主循环结束时,系统会作一个是否进入睡眠模式的判断.如果所有的 Z-Stack 的任务 被检查且都没有任何事件需要处理,那么编译选项 POWER_SAVING 设置与否将决定是否调用函数 osal_pwrmgr_powerconserve() : 同时,在系统决定进入睡眠模式之前,需要再做两个额外的检查:首先,检查 pwrmgr_device 变量是否被设置为电池设备.这项检查在设备加入网络时执行,见例程中的 ZDApp.c.第二,对pwrmgr_task_state 变量进行检查,以确保没有任务需要 put a hold 即要求进行工作状态保持. 这种机制使每个 Z-Stack 的任务在进行关键操作时禁止进入睡眠模式. 当这些条件都符合,系统睡眠时间将取决于 OSAL 系统定时器的下次溢出时间,如果这个下次 溢出时间大于零且小于 MIN_SLEEP_TIME(变量值在 hal_sleep.c 定义,主要用于防止睡眠时间过短 造成系统硬件冲击) ,系统将选择进入 TIMER_SLEEP 模式.在TIMER_SLEEP 模式下, OSAL 系统定时 计数器将在每次溢出时产生一个定时器中断来唤醒系统.如果没有任何 Z-Stack 的事件或睡眠定时 器计划,系统将选择进入深度睡眠模式 SLEEP_DEEP,此时睡眠定时器的溢出时间将为零(即关闭) , 可以最大限度的降低设备功耗: HTTP://WWW.FEIBIT.COM 深圳市飞比电子科技有限公司 SHENZHEN FEIBIT ELECTRONIC TECHNOLOGY CO., LTD 地址:深圳市福田区梅华路深华科技园

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题