logo资料库

如何实现ZigBee休眠与唤醒.ppt

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
如何实现ZigBee休眠与唤醒 报告人:XXX 时 间:2013-3-28
发射功率仅为1mW,仅靠两节5 号电池就可维持长达6个月到2 年的工作时间。 在实际的开发应用中,产品是否具有低功耗这一特性 将在很大程度上决定其整体性能。 目标 通过休眠定时器,实现传感器节点的休眠 /唤醒调度,使其低功耗运行,减少节 点能耗。
如何去实现ZigBee休眠与唤醒? CC2530有3种睡眠模式,pm2模式比较省功耗而且 可以被定时唤醒;pm3模式最省电但是只能被外部中断唤 醒 。
1、sensordemo的sensor在入网以后,为什么灯在不断地闪? 其实,闪一次就是睡眠了一次:亮的时候睡过来,灭的时候睡 下去。具体代码在halSleep函数里。要做的,就是读懂这个机 制是怎么运作的。 2、为什么闪的频率那么高? zstack的睡眠机制就是在操作系统没事干的时候才睡眠,频 率高说明应用程序让操作系统不断做事。你想让它长时间睡 眠,那要做的就是不要不断地给操作系统事情做,找到分配 系统任务的地方。
要设置低功耗模式,先确认: 1.f8wConfig.cfg文件中DRFD_RCVC_ALWAYS_ON定义为FALSE 2.Options->C/C++Compiler->Defined symbols中添加预编译“POW ER_SAVING”; 重要函数void halSleep( uint16 osal_timeout ) 1.首先将osal_timeout转成以320US为单位 2.获取下一次MAC定时器到期时间 3.  halPwrMgtMode = (timeout == 0) ? HAL_SLEEP_DEEP : HAL_SL EEP_TIMER;   //为PM2,PM3模式。 没有任务要执行就进入PM3深度睡眠,否则进入P M2睡眠,可以定时器唤醒。 4.唤醒
OSAL机制的ZigBee低功耗管理(CC2530) 涉及文件 OSAL_PwrMgr.h       OSAL电源管理的API头文件 OSAL_PwrMgr.C      OSAL电源管理的API C文件 hal_sleep.c                底层的电源管理文件
电源管理结构体 typedef struct {   uint16 pwrmgr_task_state;                  //任务状态   uint16 pwrmgr_next_timeout;             //下一次超时   uint16 accumulated_sleep_time;        //睡眠时间   uint8  pwrmgr_device;     //电源管理设备属性,有PW RMGR_ALWAYS_ON 和 PWRMGR_BATTERY两种 } pwrmgr_attribute_t;
#define PWRMGR_ALWAYS_ON    0 #define PWRMGR_BATTERY          1 选择PWRMGR_ALWAYS_ON的话将不会进入睡眠模式,选择PWRMGR_BATTERY 将允许HAL管理CPU进入SLEEP LITE或者SLEEP DEEP状态。   #define PWRMGR_CONSERVE 0 #define PWRMGR_HOLD     1 低功耗标志,主要用于osal_pwrmgr_task_state()这个函数中,用于标志每一任务 是否需要低功耗。   extern pwrmgr_attribute_t    pwrmgr_attribute; 定义一个电源管理的全局变量。
分享到:
收藏