關(guān)于571/573休眠死機與功耗

反復(fù)測試了很多次,使用TMOS與不使用TMOS,喚醒休眠喚醒休眠不斷循環(huán),shutdown+RTC4秒或多秒喚醒,必然死機。deepsleep電源全關(guān)只開核心也必然死機。只有deepsleep至少開啟RAM16K電源,測試了N天不會死機。

也就是說手冊上的shutdow+RTC 0.6UA的功耗是做不到的,因為會死機。deepsleep+RAM16K電源至少5UA,也就是這個芯片用來說標簽類產(chǎn)品至少要5UA電流(外擴主控用復(fù)位按鈕喚醒除外)。

不知道這樣理解是否有錯誤,只是想盡量降低功耗。開啟RAM16K電源不知道是否是因為中斷向量在RAM16K的開頭,喚醒需要用到,但是不開啟這個電源也能喚醒,只是運行一段時間后死機。

不知道能否做到周期喚醒藍牙發(fā)送,而休眠又能在1.4UA以下。

嘗試在執(zhí)行shutdown 前做以下處理:

1,//R8_SLP_WAKE_CTRL 寄存器中的RB_WAKE_DELAY 設(shè)置位長延時:

PWR_PeriphWakeUpCfg(?ENABLE,?RB_SLP_GPIO_WAKE,?Edge_LongDelay?)

2,? 降頻:

SetSysClock(?CLK_SOURCE_HSE_6_4MHz?);


example code:

????????PWR_PeriphWakeUpCfg(?ENABLE,?RB_SLP_GPIO_WAKE,?Edge_LongDelay?);

????????uint32_t?rtc_cnt?=?RTC_GetCycle32k();
????????rtc_cnt?=?3276+current_rtc_cnt;
????????if(?rtc_cnt?>?0xA8C00000?)?{
????????????rtc_cnt?-=?0xA8C00000;
????????}
????????RTC_SetTignTime(current_rtc_cnt);
????????SetSysClock(?CLK_SOURCE_HSE_6_4MHz?);
????????LowPower_Shutdown(?0?);



原來還有秘密操作,周末掛起來試一下


#if(?DEBUG?==?Debug_UART1?)??//?使用其他串口輸出打印信息需要修改這行代碼
??while(?(?R8_UART1_LSR?&?RB_LSR_TX_ALL_EMP?)?==?0?)
????__nop();
#endif
????GPIOA_ModeCfg(GPIO_Pin_All,GPIO_ModeIN_Floating);

????//清除RTC中斷
????R8_RTC_FLAG_CTRL?=?(?RB_RTC_TMR_CLR?|?RB_RTC_TRIG_CLR?);
#ifndef?RTC_TIME_TRIG
????{
????????u32?tmp,?irq_status;
????????SYS_DisableAllIrq(?&irq_status?);
????????tmp?=?RTC_GetCycle32k();
????????SYS_RecoverIrq(?irq_status?);
????????tmp?+=?SEND_PERIOD*32768;
????????if(?tmp?>?0xA8C00000?)
????????????tmp?-=?0xA8C00000;
????????RTC_SetTignTime(?tmp?);

????????R8_SAFE_ACCESS_SIG?=?SAFE_ACCESS_SIG1;
????????R8_SAFE_ACCESS_SIG?=?SAFE_ACCESS_SIG2;
????????R8_RTC_MODE_CTRL?|=?RB_RTC_TRIG_EN;????//?觸發(fā)模式
????????R8_SAFE_ACCESS_SIG?=?0;????//
????????PFIC_EnableIRQ(?RTC_IRQn?);
????}
#else
????{
???????RTC_TMRFunCfg(SEND_PERIOD);
???????PFIC_EnableIRQ(?RTC_IRQn?);
????}
#endif
????//PWR_UnitModCfg(DISABLE,0x1);
????PWR_PeriphWakeUpCfg(?ENABLE,?RB_SLP_RTC_WAKE,?Edge_LongDelay?);
????SetSysClock(?CLK_SOURCE_HSE_6_4MHz?);
????LowPower_Shutdown(?0?);


PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_RTC_WAKE, Edge_LongDelay );

Edge_LongDelay 直接無法喚醒,short可以


測試了2天多,沒死機。SetSysClock(?CLK_SOURCE_HSE_6_4MHz?);加了這句,就沒死機,不知道為什么,手冊要更新下。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频