Z-STACK低功耗设置.docxVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Z-STACK低功耗设置

Zigbee低功耗设置??1.在预编译选项中使能POWER_SAVING??2.设置?:RFD_RCVC_ALWAYS_ON?=?FALSE;?//(in?f8wConfig.cfg(默认情况下就是FALSE))?并执行:?else?if?(?ZSTACK_END_DEVICE_BUILD?)???{?????ZDO_Config_Node_Descriptor.CapabilityFlags?=?(CAPINFO_DEVICETYPE_RFD???#if?(?RFD_RCVC_ALWAYS_ON?==?TRUE)?????????????|?CAPINFO_RCVR_ON_IDLE???#endif?????????);???}?实现功能:?End-Device?默认的只有CAPINFO_DEVICETYPE_RFD,?这样就设置了电池供电模式,并且在节点空闲的时候关闭射频接收器。???3.在进入sleep?mode之前,2项重要的检查需要执行:??????First:?pwrmgr_device必须为?PWRMGR_BATTERY!???????????说明:{系统初始化时,调用osal_pwrmgr_init(),pwrmgr_device初始化为PWRMGR_ALWAYS_ON}???????????该项的正确设置是在节点加入网络之后。在ZDApp.c文件中,若POWER_SAVING选项已使能,?则调用会?osal_pwrmgr_device(PWRMGR_BATTERY),设置为允许节电;?当器件为路由或协调器时,调用osal_pwrmgr_device(?PWRMGR_ALWAYS_ON?),不允许节电(睡眠)!???????Second:pwrmgr_task_state?必须为no?task,这项机制有利于节点在执行重要操作时,禁止sleep?mode。?说明:{系统初始化时,调用osal_pwrmgr_init(),pwrmgr_attribute.pwrmgr_task_state初始化为0,no?task,允许节电}???????????协议栈并没有调用osal_pwrmgr_task_state()函数,即各项任务一直允许节电。???????????原文如下:If?the?task?always?wants?to?converse?power,?it?doesnt?need?to?call?this?function?at?all.(见OSAL_PwrMgr.h文件)4.两种睡眠模式的选择???????当步骤4中的两项都满足后,定时睡眠的时间决定于系统定时器(OSAL?timers)的下一个终了时间,如果该时间大于0而且小于最小睡眠时间(MIN_SLEEP_TIME),则会选择定时器睡眠模式,在定时器睡眠模式下,系统定时器产生事件的唤醒中断!????????最小睡眠时间定义在hal_sleep.c文件中,用来防止过短的睡眠抖动。????????当协议栈没有任务和定时事件,终了时间为0(?next??expiration??is??zero),深睡眠将会被选择,这样可获得最大的节电效果。???5.?OSAL_SET_CPU_INTO_SLEEP是一个用于睡眠的宏,在开始进入睡眠时被halSleep()函数调用,该函数周期性的关断MAC、外设,进入睡眠模式,睡眠后唤醒MCU,开启外设,最终重启MAC。由于协议栈操作系统的轮询与MAC时间(事件)表相独立,因此协议栈并不知道MAC的运行状态。?MAC_PwrOffReq()函数的调用会请求关闭MAC。必须注意的一点是,当空闲时若射频接收器处于使能状态,MAC将不会被关闭,这样将阻止了节点?进入睡眠。????????对于CC2530,深睡眠只会被外部中断或MCU复位唤醒。这种模式适用于远程控制类器件(用外部中断的方式唤醒,比如按键);?定时睡眠会被任何中断事件终结,包括外部中断事件,定时器事件。假如MCU被外部中断唤醒,而时间并未到唤醒时间值(timer?not?expired),?协议栈时间系统将会自动调节(?Z-Stack?timing?system?adjusts?for?the?elapsed?fraction?of?the?scheduled?wake-up?time?delay)???6.?协议栈的案例程序中默认设定的是禁止节电并且使能自动巡检已获取信息。共有3个不同的巡检选项,每一个都由时间延时参数控制。?当POWER_SAVING被使能,任何一个巡检选项,都会对睡眠模式产生影响。????????特别地,巡检会阻止进入进入深睡眠模式。(在工程中,我们将zgPollRate、zgQueuedPollRate、zgResponsePollRate的值

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档