ZigBee

※This article is based on ZigBee Stack 2.51.a

设置低功耗模式 [edit]

f8wConfig.cfg文件 [edit]

DRFD_RCVC_ALWAYS_ON定义为FALSE 这几个全部赋值0。

预编译 [edit]

 .Options->C/C++Compiler->Defined symbols中添加预编译“POWER_SAVING”;

PWRMGR_BATTERY [edit]

在你的任务初始化中增加这么一句osal_pwrmgr_device(PWRMGR_BATTERY);否则,OS不会进入省电模式。注意所有的用户任务都必须执行这么一句,否则无法进入省电模式。

睡眠方式 [edit]

找到void halSetSleepMode(void)函数,PCON = halSleepPconValue;这句决定你进入哪种省电模式,找到它定义的地方,我这边赋值是PCON_IDLE,将其改成HAL_SLEEP_TIMER或CC2530_PM2,即可进入PM2模式。想进入PM3同理。

省电的注意点 [edit]

以下做完了,才能实现了1.1uA的目标

作为第4点,即可进入PM2模式,但是并不以为则真的省电,可能几百个uA也可能若干个mA甚至几十个mA和没进入PM2一样。原因是,有其他任务在不停的唤醒CPU,导致电流下不来,需要注意哪几点?

键盘 [edit]

如果采用扫描模式则,则不停唤醒CPU,需设置成中断模式,或加大扫描周期。

LED [edit]

LED也有个任务,看看你的LED是不是频繁闪烁,如果是停掉。

ADC [edit]

我听别人说的,有个电池检测的任务不停进行电压采样,我这里没有。

协议栈 [edit]

加入网络 [edit]

终端上电后或者断网后,会主动查找网络,导致无法进入省电模式。 解决办法:http://blog.csdn.net/shjhuang/article/details/51171369,TI论坛也有,我忘记链接了。

[edit]

VV大侠的http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/75525.aspx 当中的第4点。

其他补充 [edit]

重要函数void halSleep( uint16 osal_timeout )

  1. 首先将osal_timeout转成以320US为单位
  2. 获取下一次MAC定时器到期时间
  3. halPwrMgtMode = (timeout == 0) ? HAL_SLEEP_DEEP : HAL_SLEEP_TIMER;
  4. 唤醒
POLL_RATE
QUEUED_POLL_RATE
RESPONSE_POLL_RATE

&ref(): File not found: "ZigBee_体系结构.png" at page "+ZigBee+定时唤醒";


コメント:



(画像の文字列を入力して下さい)

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS