您好,
SDK version: simplelink_cc2640r2_sdk_4_10_00_10
使用範例:ti\simplelink_cc2640r2_sdk_4_10_00_10\examples\rtos\CC2640R2_LAUNCHXL\blestack\simple_peripheral_oad_offchip
用simple_peripheral_oad_offchip這範例來做 Advertising enable 5秒 再Advertising disable 10秒的廣播循環控制.
用電流儀器抓出來的電流圖發現, Advertising disable 時, 會有不間斷的pulse出現, 如下:
為了釐清不是我加的程式造成, 所以接著做另一實驗, 將simple_peripheral_oad_offchip 的原始code, 在static void SimplePeripheral_init(void) API裡 把initialAdvertEnable設為false不讓它上電就廣播:
initialAdvertEnable = false;
GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &initialAdvertEnable);
之後再測量電流, 發現沒廣播時本來就會有這些不間斷的pulse產生, 如下:
除非我不去執行此行程式, 把它tag:
// VOID GAPRole_StartDevice(&SimplePeripheral_gapRoleCBs);
等於不去執行BLE device, 才不會有這些pulse產生.
請問一下, 該如何在Advertising disable 時, 不要有這些不間斷的pulse產生呢? 這些pulse是從何而來,讓如何關閉它來達到省電的效率, 謝謝.
Erin Chen:
補充: 當關閉Advertising時, pulse的間隔時間不是固定的, 間隔的時間會從短變長, 剛關閉時的pulse間隔時間較短, 過幾秒pulse時間又較長, 這現象蠻奇怪的.
Kevin Qiu1:
回复 Erin Chen:
这些recharge是给VDDR充电的,www.ti.com.cn/…/swra640e.pdf
Erin Chen:
回复 Kevin Qiu1:
Hi Kevin,
謝謝您的回覆, 我們這專案不需要充電功能, 這可以關閉嗎?
目前ccfg的power setting如下:
#ifndef SET_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_DELTA
#define SET_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_DELTA0xF// Signed delta value +1 to apply to the VDDR_TRIM_SLEEP target (0xF=-1=default=no compensation)
#endif#ifndef SET_CCFG_MODE_CONF_DCDC_RECHARGE
#define SET_CCFG_MODE_CONF_DCDC_RECHARGE0x0// Use the DC/DC during recharge in powerdown
// #define SET_CCFG_MODE_CONF_DCDC_RECHARGE0x1// Do not use the DC/DC during recharge in powerdown
#endif#ifndef SET_CCFG_MODE_CONF_DCDC_ACTIVE
#define SET_CCFG_MODE_CONF_DCDC_ACTIVE0x0// Use the DC/DC during active mode
// #define SET_CCFG_MODE_CONF_DCDC_ACTIVE0x1// Do not use the DC/DC during active mode
#endif#ifndef SET_CCFG_MODE_CONF_VDDS_BOD_LEVEL
// #define SET_CCFG_MODE_CONF_VDDS_BOD_LEVEL0x0// VDDS BOD level is 2.0V
#define SET_CCFG_MODE_CONF_VDDS_BOD_LEVEL0x1// VDDS BOD level is 1.8V (or 1.65V for external regulator mode)
#endif#ifndef SET_CCFG_MODE_CONF_VDDR_CAP
#define SET_CCFG_MODE_CONF_VDDR_CAP0x3A// Unsigned 8-bit integer representing the min. decoupling capacitance on VDDR in units of 100nF
#endif#ifndef SET_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_TC
//#define SET_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_TC0x1// Temperature compensation on VDDR sleep trim disabled (default)#define SET_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_TC0x0// Temperature compensation on VDDR sleep trim enabled
#endif是否需要改變上方哪一個define才可以關閉VDDR充電, 避免這些pulse產生 ? 謝謝
Kevin Qiu1:
回复 Erin Chen:
这个没有办法关闭,不会影响BLE通信
Erin Chen:
回复 Kevin Qiu1:
您好,
謝謝您的回覆.但我們想做到更省電, 所以在想是否可以把這pulse消除? 謝謝.
Kevin Qiu1:
回复 Erin Chen:
VDDR 再充电是standby期间强制执行的功能,用于维持 RAM 并确保为时钟供电,这些recharge之间的功耗大约为 70nA,很小基本可以忽略
Erin Chen:
回复 Kevin Qiu1:
Hi Kevin,但我量standby這區間的pulse, 平均耗電流落在35~37μA 區間, 並無你說的功耗約為70nA那麼小, 是否有哪些地方需調整? recharge的電流才會變小? 謝謝.
Kevin Qiu1:
回复 Erin Chen:
看下这里的测量方式www.ti.com.cn/…/swra478d.pdf
Erin Chen:
回复 Kevin Qiu1:
Hi Kevin, 我是在我們自己的PCBA上驗的耗電流, 不是由 EVB上測量. 請問是否要呼叫類似sleep mode的API 在ADV on及ADV off之間控制? 謝謝
Kevin Qiu1:
回复 Erin Chen:
自己制作的板子功耗可能有所差别,测试方法是类似的 例程中已经打开了POWER_SAVING,没有广播时会自动进入低功耗模式
可以先用例程测试对比下功耗