前言
電池備份(VBAT)功能的實(shí)現(xiàn)方法,一般是使用 MCU 自帶的 VBAT 引腳,通過(guò)在該引腳連接鈕扣電池,當(dāng)系統(tǒng)電源因故掉電時(shí),保持 MCU 內(nèi)部備份寄存器內(nèi)容和 RTC 時(shí)間信息不會(huì)丟失。
本文檔介紹了如何基于 CW32 系列 MCU,通過(guò)增加簡(jiǎn)單的外部電路配合軟件實(shí)現(xiàn) VBAT 功能,在系統(tǒng)電源掉電后仍能保持 RTC 時(shí)鐘正常計(jì)時(shí),以及如何降低系統(tǒng)功耗,從而延長(zhǎng)后備電池的使用壽命。
對(duì)于自帶 VBAT 引腳的 MCU,MCU 內(nèi)部有對(duì) VBAT 電源和系統(tǒng)電源的管理單元,保證在系統(tǒng)電源掉電后,及時(shí)切換 VBAT 引腳電源給備份域供電,保證 RTC 正常工作。
對(duì)于沒(méi)有 VBAT引腳的 CW32,要實(shí)現(xiàn)類似的功能,可以在外部進(jìn)行后備帶電池和系統(tǒng)電源的切換,如下圖所示:
后備電池(B1)提供的備用電源 VBAT 和系統(tǒng)電源 VDDIN 通過(guò) 2 個(gè)肖特基二極管(D1)合路,合路后的電源 VDD 給 MCU 的數(shù)字域 DVCC 和模擬域 AVCC 進(jìn)行供電。系統(tǒng)電源 VDDIN 通過(guò) R3、R4 電阻分壓得到WAKEIO 信號(hào),連接到 MCU 的 IO 引腳。注意遵循如下規(guī)則:
1. Vwakeio 要大于 MCU IO 口的 Vih;
2. VDDIN 必須高于 Vb1 在 0.4V 以上,否則如果 VDDIN 和 Vb1 相等,在系統(tǒng)電源正常時(shí),后備電池也會(huì)有一定的泄放電流,不利于節(jié)省后備電池電量。
2 程序設(shè)計(jì)
程序啟動(dòng)后正常初始化時(shí)鐘、IO、RTC 以及 OELD,循環(huán)中檢測(cè)系統(tǒng)電源是否存在,如存在則讀取 RTC 時(shí)間并顯示。
當(dāng)系統(tǒng)電源 VDDIN 因故掉電,則關(guān)閉 OLED 電源,并進(jìn)入 DeepSleep 低功耗睡眠模式。
當(dāng)系統(tǒng)電源 VDDIN 恢復(fù)供電時(shí),產(chǎn)生高電平中斷,喚醒 MCU,退出 DeepSleep 低功耗睡眠模式。
3 參考代碼
int32_t main(void)
{
RCC_Configuration();?????// 時(shí)鐘配置
GPIO_Configuration();????//GPIO配置
OLED_Init();?????????//OLED顯示屏初始化配置
dis_err("RTC_TestBoard");?? // 顯示
FirmwareDelay(5000000);??// 增加延時(shí)防止過(guò)早休眠影響程序燒寫
RTC_init();??????????//RTC時(shí)鐘初始化
//DeepSleep 喚醒時(shí),保持原系統(tǒng)時(shí)鐘來(lái)源
RCC_WAKEUPCLK_Config(RCC_SYSCTRL_WAKEUPCLKDIS);
ShowTime();???????// 獲取時(shí)間數(shù)據(jù)
displaydatetime();????// 顯示當(dāng)前時(shí)間
while(1)
{
if( 0==PB05_GETVALUE() )? // 循環(huán)檢測(cè)是否掉電
{
PA05_SETHIGH();???// 關(guān) OLED 電源
SCB->SCR = 0X04;??//DeepSleep
__WFI();???????//MCU 進(jìn)入DeepSleep模式以節(jié)省功耗
OLED_Init();?????// 外部電源接入后喚醒,重新初始化 OLED
}
else
{
ShowTime();??????// 獲取時(shí)間數(shù)據(jù)
displaydatetime();???// 顯示當(dāng)前時(shí)間
}
}
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStruct= {0};
__RCC_GPIOB_CLK_ENABLE();???????? // 開 GPIOB 時(shí)鐘
GPIO_InitStruct.IT = GPIO_IT_RISING;????// 使能上升沿中斷
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;??// 輸入模式
GPIO_InitStruct.Pins = GPIO_PIN_5 ;????//PB05,連接 WAKEIO 網(wǎng)絡(luò)
GPIO_Init(CW_GPIOB, &GPIO_InitStruct);??// 初始化 IO
GPIOB_INTFLAG_CLR(bv5);????????// 清除 PB05 中斷標(biāo)志
NVIC_EnableIRQ(GPIOB_IRQn);??????// 使能 PB05 中斷
}
4 實(shí)際測(cè)試
使用 CW32L031C8T6 設(shè)計(jì)了用于測(cè)試后備電池功能的評(píng)估板,實(shí)物如下圖所示:
使用 3V 的 CR2032 鈕扣電池,實(shí)測(cè)電池電壓為 3.14V;VDDIN 使用可調(diào)節(jié)數(shù)字電源,設(shè)置為 3.54V,保證VDDIN >= Vb1 + 0.4V;D1 實(shí)測(cè)合路后的電源電壓為 3.21V。
4.1 測(cè)試數(shù)據(jù)
實(shí)際測(cè)試時(shí),斷開 J4 跳線接入萬(wàn)用表,設(shè)置萬(wàn)用表為電流測(cè)試檔位。
1. 關(guān)閉 VDDIN 電源輸入,MCU 檢測(cè)到無(wú)外電輸入,關(guān)閉 OLED 顯示,進(jìn)入 DeepSleep 模式,實(shí)測(cè)此時(shí)B1 電流為 +0.95μA。
2. 打開 VDDIN電源輸入,MCU被高電平中斷從 DeepSleep狀態(tài)喚醒到正常狀態(tài),OLED正常顯示當(dāng)前時(shí)間,實(shí)測(cè)此時(shí) B1 電流為 -75nA(負(fù)電流是因?yàn)?D1 處于反向偏置狀態(tài),有小的反向漏電流)。
測(cè)試結(jié)果符合電路設(shè)計(jì)預(yù)期,以 CR2032 電池容量為 200mAH 計(jì)算,則電池可用時(shí)間為 210526 小時(shí),合計(jì)24 年(不考慮電池和產(chǎn)品壽命),可實(shí)現(xiàn)超長(zhǎng)待機(jī)時(shí)間,完全滿足各種低功耗產(chǎn)品對(duì) RTC 后備電池容量需求。
5 附件
5.1 RTC_TestBoard 單板原理圖
關(guān)于武漢芯源半導(dǎo)體
武漢芯源半導(dǎo)體有限公司,于2018年8月28日成立,是上市公司武漢力源信息技術(shù)股份有限公司全資子公司,專注芯片的設(shè)計(jì)、研發(fā)、銷售及技術(shù)服務(wù)。武漢芯源半導(dǎo)體CW品牌源于Creative Wisdom首字母CW,傳遞“創(chuàng)芯源于智慧”的品牌理念。
武漢芯源半導(dǎo)體為電子行業(yè)用戶提供微處理器MCU、小容量存儲(chǔ)芯片EEPROM、功率器件SJ-MOSFET等系列產(chǎn)品,具有產(chǎn)品質(zhì)量保證、技術(shù)性能可靠、供貨能力穩(wěn)定三大競(jìng)爭(zhēng)優(yōu)勢(shì)。
在MCU領(lǐng)域目前已推出通用高性能CW32F003/030系列、安全低功耗CW32L083/031/052系列、無(wú)線射頻CW32W031系列產(chǎn)品,廣泛應(yīng)用于消費(fèi)電子、智能家居、物聯(lián)網(wǎng)、工業(yè)控制、醫(yī)療電子以及汽車電子行業(yè),未來(lái)將能夠滿足更多的市場(chǎng)需求。
武漢芯源半導(dǎo)體持續(xù)進(jìn)行技術(shù)革新,確保穩(wěn)定可靠的供應(yīng)鏈能力,致力于成為***產(chǎn)業(yè)的領(lǐng)航者!
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
17019瀏覽量
350373 -
引腳
+關(guān)注
關(guān)注
16文章
1184瀏覽量
50293 -
RTC
+關(guān)注
關(guān)注
2文章
530瀏覽量
66332 -
電池備份
+關(guān)注
關(guān)注
0文章
4瀏覽量
5648 -
CW32
+關(guān)注
關(guān)注
1文章
196瀏覽量
592
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論