记录下自己的调试,很久没用低功耗有点遗忘了。
ZigBee模块采用亿佰特的E18带PA的CC2530模块,休眠电流为0.5uA。
/----------------------------------------------------------------------------------------------------------------------------\
1.打开POWER_SAVING
2.修改f8wConfig.cfg文件 最主要的是修改-DRFD_RCVC_ALWAYS_ON=FALSE
其余可以在运行需要休眠时通过程序配置,分别是
NLME_SetPollRate(0);
NLME_SetQueuedPollRate( 0);
NLME_SetResponseRate( 0);
3.修改Onboard.C中InitBoard函数的打开按键中断唤醒
HalKeyConfig(HAL_KEY_INTERRUPT_ENABLE, OnBoard_KeyCallback);
4.接着在需要进入休眠的程序段放如下函数以进入休眠。
osal_pwrmgr_device( PWRMGR_BATTERY );
此时设备为电池供电设备,将会在osal_run_system()中所有任务执行完后通过osal_pwrmgr_powerconserve();
进入休眠,测试电流为0.5uA,有定时唤醒任务会高一些。
5.此处针对有PA的单独配置。
对于CC2530加PA的模块需要将,PA引脚分别配置好之后才能进入休眠。我用的模块为CC2530+CC2592,于是在hal_board_cfg.h 将#define xHAL_PA_LNA
去掉x
;mac_radio_defs.c中将macRadioTurnOnPower()
的引脚对应上PA引脚,如图所示,
于是有:
/* P1_1 -> PAEN */
RFC_OBS_CTRL0 = RFC_OBS_CTRL_PA_PD_INV;
OBSSEL1 = OBSSEL_OBS_CTRL0;
/* P1_0 -> EN (LNA control) */
RFC_OBS_CTRL1 = RFC_OBS_CTRL_LNAMIX_PD_INV;
OBSSEL0 = OBSSEL_OBS_CTRL1;
配置完成后,带PA的模块也将正常进入休眠,测试0.5uA,所有测试都在其底板上,未接任何外设,因为接了需要对引脚电平单独处理。