※This article is based on ZigBee Stack 2.51.a
DRFD_RCVC_ALWAYS_ON定义为FALSE 这几个全部赋值0。
.Options->C/C++Compiler->Defined symbols中添加预编译“POWER_SAVING”;
在你的任务初始化中增加这么一句osal_pwrmgr_device(PWRMGR_BATTERY);否则,OS不会进入省电模式。注意所有的用户任务都必须执行这么一句,否则无法进入省电模式。
找到void halSetSleepMode(void)函数,PCON = halSleepPconValue;这句决定你进入哪种省电模式,找到它定义的地方,我这边赋值是PCON_IDLE,将其改成HAL_SLEEP_TIMER或CC2530_PM2,即可进入PM2模式。想进入PM3同理。
以下做完了,才能实现了1.1uA的目标
作为第4点,即可进入PM2模式,但是并不以为则真的省电,可能几百个uA也可能若干个mA甚至几十个mA和没进入PM2一样。原因是,有其他任务在不停的唤醒CPU,导致电流下不来,需要注意哪几点?
如果采用扫描模式则,则不停唤醒CPU,需设置成中断模式,或加大扫描周期。
LED也有个任务,看看你的LED是不是频繁闪烁,如果是停掉。
我听别人说的,有个电池检测的任务不停进行电压采样,我这里没有。
终端上电后或者断网后,会主动查找网络,导致无法进入省电模式。 解决办法:http://blog.csdn.net/shjhuang/article/details/51171369,TI论坛也有,我忘记链接了。
VV大侠的http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/75525.aspx 当中的第4点。
重要函数void halSleep( uint16 osal_timeout )
POLL_RATE QUEUED_POLL_RATE RESPONSE_POLL_RATE
&ref(): File not found: "ZigBee_体系结构.png" at page "+ZigBee+定时唤醒";
コメント: