|
|
Information
| 说明: |
建议参照本版块置顶帖内容输入必要信息 |
| 芯片型号: |
TLSR8251 |
| SDK及版本: |
Telink_825X_SDK |
I tested sleep mode and scan in adv mode. After sleep scan in adv mode does not work, what has to be initialized on wakeup?
call for sleep:
bls_pm_setSuspendMask (SUSPEND_ADV | DEEPSLEEP_RETENTION_ADV | SUSPEND_CONN | DEEPSLEEP_RETENTION_CONN);
Main:
_attribute_ram_code_ int main (void) //must run in ramcode
{
blc_pm_select_internal_32k_crystal();
cpu_wakeup_init();
int deepRetWakeUp = pm_is_MCU_deepRetentionWakeup(); //MCU deep retention wakeUp
rf_drv_init(RF_MODE_BLE_1M);
gpio_init( !deepRetWakeUp ); //analog resistance will keep available in deepSleep mode, so no need initialize again
#if (CLOCK_SYS_CLOCK_HZ == 16000000)
clock_init(SYS_CLK_16M_Crystal);
#elif (CLOCK_SYS_CLOCK_HZ == 24000000)
clock_init(SYS_CLK_24M_Crystal);
#endif
blc_app_loadCustomizedParameters();
init_i2c();
if( deepRetWakeUp ){
user_init_deepRetn ();
}
else{
user_init_normal ();
}
irq_enable();
while (1) {
main_loop ();
}
}
Function called on wakeup:
_attribute_ram_code_ void user_init_deepRetn(void){//after sleep this will get executed
init_lcd_deepsleep();
blc_ll_initBasicMCU();
rf_set_power_level_index (RF_POWER_P3p01dBm);
blc_ll_recoverDeepRetention();
}
|
|