大部分MCU供電只有VDD,但是有些MCU除了正常供電的VDD引腳,還有另外一路獨立的供電引腳VBAT,比如STM32F103 64pin 的Pin1就是VBAT
VBAT中的BAT是 Battery簡寫,這個引腳一般接紐扣電池,正常情況下它是不耗電的,只有當VDD掉電,它才會工作。VBAT的主要用途有兩個:
1)給RTC獨立供電,保障RTC能夠一直計時
2)給備份寄存器區(qū)供電,保存敏感數(shù)據(jù)
對于第一點,有些用到RTC功能的產(chǎn)品比如燃氣表,正常情況下干電池組供電,當干電池電量耗盡時,VBAT可以保障RTC持續(xù)走時,并且VBAT工作下的耗電量很低,可以工作很長時間,當新?lián)Q了電池之后,就不再使用VBAT電池了。此外還有一些用到RTC功能但是供電是220V的產(chǎn)品,比如樓宇中的溫控器,當主電斷開時,VBAT可保障RTC繼續(xù)走時。對于在正式使用前還沒有正常供電的設(shè)備,VBAT可以實現(xiàn)出廠時就設(shè)置好RTC時間,在用戶真正使用時不需要再重新設(shè)定時間。
說到這里,你可能會有疑問:是不是只要用到了RTC就需要VBAT功能?并不是這樣,一是因為有的產(chǎn)品出廠時就帶著電池并且整個生命周期內(nèi)一直不掉電,所以就不需要了。還有一些產(chǎn)品即使主電沒了,RTC時間沒了也沒有關(guān)系,大不了下次上電時重新配置和同步下時間(可以通過聯(lián)網(wǎng)的方式或者手動設(shè)置),具體要看使用場景。
你可能還有個疑問:如果我就是需要在主電沒了RTC得繼續(xù)計時、但是MCU就是沒有VBAT引腳該怎么辦?這也是有解決方法的,就是在MCU的外圍搭建一個電源切換電路實現(xiàn)VBAT的功能,當主電斷開時,切換到備用電池給MCU供電,MCU工作在低功耗狀態(tài)、RTC繼續(xù)工作,不過這種方法不如用帶自帶VBAT管腳的MCU來的方便,且相比有VBAT功能MCU會增加功耗。
對于第二點,有一些敏感數(shù)據(jù),比如產(chǎn)品的重要運行參數(shù)或者加密的秘鑰,不希望能夠被輕易的獲取到,通常不存放在MCU的Flash區(qū)域,因為放在Flash里畢竟不太安全,所以存放在RAM區(qū)域中,而RAM有一個特征是掉電后數(shù)據(jù)丟失,所以實際使用的是一塊特殊的RAM區(qū)域即備份寄存器中,系統(tǒng)掉電時只要VBAT有電,該區(qū)域數(shù)據(jù)就可以保持,且不受系統(tǒng)復(fù)位的影響,只有VBAT也掉電該區(qū)域數(shù)據(jù)才會丟失。這塊區(qū)域通常還會有自毀功能,配合Tamper功能可實現(xiàn)防拆自毀功能,保障該區(qū)域數(shù)據(jù)的安全性。
Tamper功能是指MCU在Tamper管腳檢測到信號異常時,會主動清除所有備份寄存器數(shù)據(jù)的功能,這是MCU硬件上實現(xiàn)的。