CH592啟用LCD后電流過大,達到100多uA, 關(guān)掉LCD后,電流3uA多

以CH592EVT\EXAM\BLE\Peripheral例程修改:
? ?peripheral.c:
? ?? ?line 211:? ?uint8_t??initial_advertising_enable = FALSE;
? ?? ?line 517:? ?uint8_t advertising_enable = FALSE;

? ?這兩個修改禁止藍牙廣播,方便測試電流。此時電流大約在3~4uA.
? ??peripheral_main.c:?工程里面去掉DEBUG=1,?增加LCD初始化,電流變?yōu)?00多uA。? ?

? ??

int?main(void)
{
#if(defined(DCDC_ENABLE))?&&?(DCDC_ENABLE?==?TRUE)
????PWR_DCDCCfg(ENABLE);
#endif
????SetSysClock(CLK_SOURCE_PLL_60MHz);
#if(defined(HAL_SLEEP))?&&?(HAL_SLEEP?==?TRUE)
//????GPIOA_ModeCfg(GPIO_Pin_All,?GPIO_ModeIN_PU);
//????GPIOB_ModeCfg(GPIO_Pin_All,?GPIO_ModeIN_PU);
#endif
#ifdef?DEBUG
????GPIOA_SetBits(bTXD1);
????GPIOA_ModeCfg(bTXD1,?GPIO_ModeOut_PP_5mA);
????UART1_DefInit();
#endif
????PRINT("%s\n",?VER_LIB);
????CH59x_BLEInit();
????HAL_Init();
????GAPRole_PeripheralInit();
????Peripheral_Init();

????//PB7(seg0),PB4(seg1),PB23~PB22(seg2~seg3),PA4~PA5(seg4~seg5),PA15~PA12(seg6~seg9),PB11~PB10(seg14~seg15)
????//LCD_Init(LCD_1_4_Duty,?LCD_1_3_Bias);
????R32_PIN_CONFIG2?=?0xffbef03f;?//?關(guān)閉數(shù)字輸入
????R16_PIN_ALTERNATE?|=?RB_DEBUG_EN;?//?操作LCD時,需關(guān)閉debug
????R32_LCD_CMD?=?0x0c3ff?<<?8;
????R32_LCD_CMD?|=?RB_LCD_SYS_EN?|?RB_LCD_ON?|?(LCD_CLK_128?<<?5)?|?(LCD_1_4_Duty?<<?3)?|?(LCD_1_3_Bias?<<?2);
????GPIOA_ModeCfg(GPIO_Pin_6,?GPIO_ModeIN_PU);
????GPIOA_ModeCfg(GPIO_Pin_7,?GPIO_ModeIN_PU);
????GPIOA_ModeCfg(GPIO_Pin_8,?GPIO_ModeIN_PU);
????GPIOA_ModeCfg(GPIO_Pin_9,?GPIO_ModeIN_PU);
????GPIOB_ModeCfg(GPIO_Pin_0,?GPIO_ModeIN_PU);
????GPIOB_ModeCfg(GPIO_Pin_6,?GPIO_ModeIN_PU);


????Main_Circulation();
}


LCD電流開銷數(shù)個uA,不會到100uA。
如果是用帶LCD段碼屏的開發(fā)板,一方面是注意rst腳PB23要關(guān)掉、串口打印的PA9也要取消使能;另一方面要參考LCD例程,要添加專門的LCD相關(guān)的休眠處理。


?@TECH_JW? 可以幫忙修正嗎,附件是工程文件。RST(PB23)應(yīng)該是沒有打開的。PA9應(yīng)當(dāng)也是沒有使能。

icon_rar.gifPeripheralTest.zip



您是用的CH592帶LCD段碼屏的開發(fā)板嗎,有peripheral休眠+LCD的參考代碼,您可以留個郵箱獲取。

實際使用中驅(qū)動的IO,和代碼中休眠前固定電平的IO要確認好是匹配,避免休眠期間的IO漏電。


?@TECH_JW? ?郵箱是個人信息保護,已隱藏.? 我用的是不帶LCD的那款開發(fā)板,麻煩發(fā)代碼給我測試。


已發(fā)送至郵箱,請查收。多注意代碼IO與LCD段碼屏IO的匹配清空,100uA是常見的IO漏電功耗。


你好,已經(jīng)測試了,電流有486uA.我注意到,電流異常,主要是由:R32_PIN_CONFIG2 = 0xfffeff3f; // 關(guān)閉數(shù)字輸入


這個配置引起的,只把對于的segment, com口的對應(yīng)位置1,其它未用的segment, gpio,保留未用的bit都置0. 電流還是有100多uA. 如果屏蔽了這個R32_PIN_CONFIG2 寄存器的配置,電流恢復(fù)為5uA.

你是否可以用R0版本的開發(fā)板幫忙確認下問題?

bbb.jpg


? ?已經(jīng)搞定,修改SLEEP.c文件的睡眠函數(shù),睡眠前與喚醒后要修改輔助電源輸出電壓:

? ?在設(shè)定0.5秒喚醒一次更新LCD條件下,電流27uA。??

????//?LOW?POWER-sleep模式
????if(!RTCTigFlag)
????{
????????uint32_t?VER?=?(*((PUINT32)ROM_CFG_VERISON));

????????if((VER&0xFF000000)?==?0xFF000000)
????????{
????????????aux_power?=?R16_AUX_POWER_ADJ;
????????????sys_safe_access_enable();
????????????R16_AUX_POWER_ADJ?|=?(RB_ULPLDO_ADJ?-?1);??????//睡眠前必須加此代碼
????????????sys_safe_access_disable();
????????}

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

????????if((VER&0xFF000000)?==?0xFF000000)
????????{
????????????sys_safe_access_enable();
????????????R16_AUX_POWER_ADJ?=?aux_power;
????????????sys_safe_access_disable();
????????}

????????i?=?RTC_GetCycle32k();
????????while(i?==?RTC_GetCycle32k());
????????return?0;
????}

??

? ?再次把讀取RTC計數(shù)器的兩個調(diào)用去掉,電流變?yōu)?3uA。??

????????//i?=?RTC_GetCycle32k();
????????//while(i?==?RTC_GetCycle32k());

??? @TECH_JW? ? 請問,為何要增加這兩個調(diào)用?是否有其它更省電的方法代替這個?

? ? ?另外,在藍牙例程中,RTC已經(jīng)使用了觸發(fā)模式,用戶是否還可以啟用定時功能? 代替tmos_start_reload_task()函數(shù)來產(chǎn)生2hz功能?



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

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