TI 工程师:
硬件是自制的板子,最小系统,只有一个24M晶体,无32k晶体,芯片2640,软件版本BLE STACK 2.2.2和 IAR8.10,计划使用片内32K RC,参考了TI的文档Running Bluetooth® low energy on CC2640 Without 32 kHz Crystal,进行了一系列设置,使用C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em中的simple peripheral例程,编译设置了power saving,可是上电后功耗是1.6ma,请问是什么原因?
1. Include rcosc_calibration.c, rcosc_calibration.h and ccfg_app_ble_rcosc.c files that are located at
<SDK_INSTALL_DIR>\examples\rtos\CC2640R2_LAUNCHXL\ble\common\cc26xx\rcosc or
<SDK_INSTALL_DIR>\src\common\cc26xx\rcosc.
2. Exclude ccfg_app_ble.c from build.
3. Add USE_RCOSC to Defined symbols.
4. Add the following code to your peripheralproject.c
#ifdef USE_RCOSC
#include "rcosc_calibration.h"
#endif //USE_RCOSC
5. Add the following code to your peripheralproject_init function in peripheralproject.c
#ifdef USE_RCOSC
RCOSC_enableCalibration();
#endif // USE_RCOSC
Configuration www.ti.com
4 SWRA499B–June 2016–Revised April 2017
Submit Documentation Feedback
Copyright © 2016–2017, Texas Instruments Incorporated
Running Bluetooth® low energy on CC2640 Without 32 kHz Crystal
6. If using a custom board file, enable the RCOSC in the power policy. The board files included with the
BLE-Stack:
PowerCC26XX_Config PowerCC26XX_config = {
.policyInitFxn = NULL,
.policyFxn = &PowerCC26XX_standbyPolicy,
.calibrateFxn = &PowerCC26XX_calibrate,
.enablePolicy = TRUE,
.calibrateRCOSC_LF = TRUE,
.calibrateRCOSC_HF = TRUE,
}
7. Constrain the temperature variation to be less than 1°C/sec. If the temperature is to change faster than
1°C/sec, then a short calibration interval must be used. Calibration interval can be tuned in
rcosc_calibration.h
// 1000 ms
#define RCOSC_CALIBRATION_PERIOD 1000
其中第6项结构体 PowerCC26XX_config是RTOS自动调用的吗?
Viki Shi:
1、修改步骤需完全按照Running Bluetooth® low energy on CC2640 Without 32 kHz Crystal
2、功耗测量请按照手册所示www.ti.com/lit/an/swra478c/swra478c.pdf
Albin Zhang:
"可是上电后功耗是1.6ma"
HaoQ,
这个的测试方法是什么呢?
芯片没有一个特定状态是这个,应该是表现出来的一个平均电流。
你需要拆分一下的。
最好能测试具体的current profile。
BR. AZ
hao Q:
回复 Albin Zhang:
您好!测试方法是用万用表的ma档或者ua档位,串联在电源负极。状态是使用了 uint32_t standbyDurationUs = 4000000;
Task_sleep(standbyDurationUs / Clock_tickPeriod);进入了standby。谢谢解答!
hao Q:
回复 Viki Shi:
第一步 中ccfg_app_ble_rcosc.c这个文件是系统自己调用的吗?
YiKai Chen:
回复 hao Q:
量測功耗時有在發BLE advertising 嗎?
hao Q:
回复 YiKai Chen:
是的,广播间隔是4s
Albin Zhang:
回复 hao Q:
hao Q您好!测试方法是用万用表的ma档或者ua档位,串联在电源负极。状态是使用了 uint32_t standbyDurationUs = 4000000;Task_sleep(standbyDurationUs / Clock_tickPeriod);进入了standby。谢谢解答!
Butterfly:
连接间隔设置的多少?太小也会影响功耗