CH579M低功耗喚醒問(wèn)題

改的PM里的例程

int main()

{

? ? DelayMs(2);?

? ? SetSysClock( CLK_SOURCE_HSE_32MHz );? ? ? ? ? ? // 設(shè)置外部32M做主頻

? ? GPIOA_ModeCfg( GPIO_Pin_All, GPIO_ModeIN_PU );

? ? GPIOB_ModeCfg( GPIO_Pin_All, GPIO_ModeIN_PU );

? ??

/* 配置串口調(diào)試 */? ?

//? ? DebugInit();

? ? PRINT( "Start @ChipID=%02x\n", R8_CHIP_ID );

? ? DelayMs(200);?


? ??

#if 1? ??

? ? /* 配置喚醒源為 GPIO - PA6&PA5 */

? ? GPIOA_ModeCfg( GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_4, GPIO_ModeIN_PU );

? ? GPIOA_ITModeCfg( GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_4, GPIO_ITMode_FallEdge );? ? ? ? // 下降沿喚醒

? ? NVIC_EnableIRQ( GPIO_IRQn );

? ? PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_GPIO_WAKE );

#endif? ??

? ? while(1){

#if 1

? ? PRINT( "IDLE mode sleep \n");? ?

? ? DelayMs(1);

? ? LowPower_Idle();

? ? PRINT( "wake.. \n");?

? ? DelayMs(500);

#endif? ??


#if 1

? ? PRINT( "sleep mode sleep \n");? ?

? ? DelayMs(5000);

? ? LowPower_Sleep( RB_PWR_RAM14K|RB_PWR_RAM2K );? ? ? ?//只保留14+2K SRAM 供電

/*

使用HSI/5=6.4M睡眠,喚醒時(shí)間大概需要 2048Tsys≈330us

HSE起振一般不超過(guò)1.2ms(500us-1200us),所以切換到外部HSE,需要 1.2ms-330us 這個(gè)時(shí)間可以保證HSE足夠穩(wěn)定,一般用于藍(lán)牙

DelayUs()函數(shù)時(shí)基于32M時(shí)鐘的書(shū)寫(xiě),此時(shí)主頻為6.4M,所以 DelayUs((1200-330)/5)? ??

*/

//? ? if(!(R8_HFCK_PWR_CTRL&RB_CLK_XT32M_PON)) {? ? ?// 是否HSE上電

//? ? ? ? PWR_UnitModCfg( ENABLE, UNIT_SYS_HSE );? ?// HSE上電

//? ? ? ? DelayUs((1200)/5);

//? ? }

//? ? else if(!(R16_CLK_SYS_CFG&RB_CLK_OSC32M_XT)){? ?// 是否選擇 HSI/5 做時(shí)鐘源

//? ? ? ? DelayUs((1200-330)/5);

//? ? }?

//? ? HSECFG_Current( HSE_RCur_100 );? ? ?// 降為額定電流(低功耗函數(shù)中提升了HSE偏置電流)

//? ? DelayUs(500/5);? ? ? ? ? ? ? ? ? ? ? ?// 等待穩(wěn)定 1-5us

? ? DelayMs(500);

//? ? GPIOA_ModeCfg( GPIO_Pin_All, GPIO_ModeIN_PU );

//? ? GPIOB_ModeCfg( GPIO_Pin_All, GPIO_ModeIN_PU );

? ? SetSysClock( CLK_SOURCE_HSE_32MHz );

//? ? PRINT( "wake.. \n");

? ? DelayMs(5000);

#endif

? ? }

}


理論驗(yàn)證流程是while(1) { 進(jìn)ldle -> IO喚醒 -> 進(jìn)sleep-> IO喚醒 }

理論電流讀表顯示是 1800μA (ldle) -> 1.3μA(sleep)

但是會(huì)很頻繁地出現(xiàn)在sleep模式喚醒后電流讀表變成450μA左右(程序跑飛?)

這里提供一個(gè)思路:先驗(yàn)證sleep模式是否正常,在官方例程中屏蔽另外三種睡眠模式,只打開(kāi)sleep模式,將程序中打印刪除,同時(shí)while循環(huán)確保睡眠。喚醒源是GPIO,所以在無(wú)操作時(shí),芯片都是處于sleep模式。去掉開(kāi)發(fā)板上的小燈等功耗器件,進(jìn)行功耗的測(cè)量。具體功耗可參考這個(gè)表格。

1.png

這里有一份帖子可以參考一下:

http://m.findthetime.net/bbs/thread-88893-1.html


沒(méi)有效果。在sleep模式下喚醒還是有概率不能一次喚醒成功,從sleep的1.3μA變成450μA,再觸發(fā)幾次IO喚醒有概率會(huì)從450μA回到正常的循環(huán)中。板子上只有芯片+4個(gè)電容+32M晶振了。


https://bbs.21ic.com/icview-2892728-1-1.html

這個(gè)帖子看一下,下面有相關(guān)程序可以燒錄驗(yàn)證。

如果還是有問(wèn)題,可發(fā)送郵件至郵箱lpc@wch.cn,我們這里幫忙看一下是什么問(wèn)題。


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

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