在提高計算性能和集成更多功能的市場需求驅(qū)動下,16位和32位微控制器(MCU)的應(yīng)用領(lǐng)域在不斷擴(kuò)大,。電源電壓降低,采用先進(jìn)的CMOS制造工藝的32位微控制器實(shí)現(xiàn)了高性能,縮小了芯片尺寸,,這些因素使電池供電的設(shè)備也在不斷擴(kuò)大應(yīng)用范圍,。
不過深亞微米技術(shù)存在一個重大缺陷,就是泄漏電流非常高,。這是一個嚴(yán)重的問題,,對電量有限的電池供電應(yīng)用影響特別大。為了克服這個缺陷,,新的32位微控制器(包括通用微控制器)必須具有能效非常高的超低功耗模式,以延長待機(jī)使用時間,。
靜態(tài)電流可能是產(chǎn)生電池供電應(yīng)用功耗的主要原因,,本文主要介紹創(chuàng)新的STM32 ARM Cortex-M3內(nèi)核微控制器如何實(shí)現(xiàn)低功耗模式以及最大限度降低泄漏電流對電池供電應(yīng)用的影響。
泄漏電流
泄漏電流是CMOS晶體管柵極在靜態(tài)(無開關(guān)操作)下存在的連續(xù)電流,,產(chǎn)生泄漏電流的原因有多個,,每個縮減芯片尺寸的新技術(shù)都會提高泄漏電流。泄漏電流主要是由柵極,、亞閾壓和結(jié)隧道三種泄漏電流組成,,參見圖1。
亞閾壓泄漏電流是由亞閾壓降低引起的,,每一代新技術(shù)降低電壓時都需要降低閾壓,;柵極泄漏電流是由柵極氧化層厚度降低造成的,降低柵極氧
化層厚度是降低“短溝道”效應(yīng),;結(jié)隧道泄漏電流是由反向偏置P-N結(jié)(電子隧道)上的電場引起的,。
因?yàn)閬嗛搲盒孤╇娏麟S溫度升高而以冪數(shù)形式升高,所以泄漏電流隨溫度升高而增加,,溫度與泄漏電流的關(guān)系曲線如圖2所示,。在沒有開關(guān)操作的狀態(tài)下,采用先進(jìn)制造工藝的32位微控制器在通常的環(huán)境溫度下能夠把靜態(tài)電流限制到幾微安,。然而這種強(qiáng)度的靜態(tài)電流還會隨溫度升高而增加,,在125℃時甚至?xí)^1mA,基于這個原因,,考慮到最高應(yīng)用溫度下的泄漏電流是非常重要的,。
雖然目前存在幾種技術(shù)能夠限制一個數(shù)字單元的泄漏電流(延長多晶硅的長度,超過技術(shù)準(zhǔn)許的最短長度,;提高晶體管上的氧化層厚度),,但是這些技術(shù)會影響數(shù)字單元的時間延遲。如果在一個完整的核心邏輯內(nèi)使用這樣的單元,,會影響芯片的性能,。
從結(jié)構(gòu)的角度看,數(shù)字邏輯電路和存儲器是導(dǎo)致泄漏電流增加的主要原因。除了因?yàn)槌叽缈s小而引起泄漏電流提高的原因外,,新一代8位,、16位和32位微控制器還大幅度提高了數(shù)字邏輯門的數(shù)量和存儲器的容量,所以,,泄漏電流是采用最新半導(dǎo)體工藝的通用微控制器亟待解決的一個主要問題,,因?yàn)殡姵仉娏坑邢蓿姵毓╇姂?yīng)用需要對這個問題給予特殊考慮,。
泄漏電流對電池使用時間的影響
當(dāng)平均運(yùn)行電流相對于待機(jī)電流變得很小時,,靜態(tài)電流消耗是引起平均電流功耗的一個主要原因。
如果電池提供的電量已確定,,我們就可以快速估算出設(shè)備的電池使用時間(不考慮Peukert法則中的電池電容的非線性),,見下式。
其中,,Irun是運(yùn)行電流,,單位是mA;Istdby是待機(jī)電流,,單位是mA,;Eb是電池容量,單位是mAH,;Trs是待機(jī)模式下的相對使用時間,,取值范圍是0~1。
以STM32 128kB閃存微控制器為例,,在所有外設(shè)開啟的條件下,,72MHz的運(yùn)行電流的典型值僅為36mA(0.5mA/MHz),這要?dú)w功于ARM Cortex-M3架構(gòu)和低功耗設(shè)計方法,。不過,,因?yàn)椴捎昧讼冗M(jìn)的制造工藝,泄漏電流到了55℃時會明顯增加,。但是,,靜態(tài)電流在55℃時仍然能夠限制到50mA,這歸功于一個超低功耗的電壓監(jiān)控器及穩(wěn)壓器,。與運(yùn)行功耗相比,,這個數(shù)值非常小,可以忽視不計,。但是,,如果應(yīng)用系統(tǒng)每天只運(yùn)行一分鐘,則靜態(tài)電流功耗則在總功耗中占很大比例(64%),。為了解決這個問題,,STM32的設(shè)計工程師們在架構(gòu)層上實(shí)現(xiàn)了一個內(nèi)置穩(wěn)壓器、幾個獨(dú)立的電壓區(qū)和集成電源開關(guān),由此實(shí)現(xiàn)的低功耗模式可以根據(jù)應(yīng)用優(yōu)化電池使用時間,。
實(shí)現(xiàn)超低功耗待機(jī)
一個微控制器的總功耗是動態(tài)功耗(CMOS柵極的開關(guān)操作)與靜態(tài)電流功耗(泄漏電流和靜態(tài)模擬電流功耗)的總合,。靜態(tài)電流是引起功耗的一個主要原因,停止時鐘運(yùn)行,,消除所有動態(tài)功耗,,對于電池供電應(yīng)用顯然不是一個有效的待機(jī)狀態(tài)。即便在停止時鐘時降低內(nèi)核電壓,,對實(shí)現(xiàn)有效的待機(jī)模式也沒有太大的幫助,。為實(shí)現(xiàn)超低功耗待機(jī)模式,必須關(guān)閉大部分的內(nèi)核邏輯器件(和存儲器)的電源,。
為了做到這一點(diǎn),,可以在器件上做出兩個由內(nèi)部穩(wěn)壓器供電的電壓區(qū),一個是供給低功率控制器的始終導(dǎo)通的小面積電壓區(qū),,另外一個是為了在待機(jī)模式下關(guān)閉而通過一個開關(guān)驅(qū)動所有其它功能的“主內(nèi)核”電壓區(qū)。因此,,在主內(nèi)核電壓區(qū)可以專注于處理性能,,而在“始終導(dǎo)通”電壓區(qū)內(nèi)限制泄漏電流(靜態(tài)電流)卻十分重要。
不過,,在這兩個電壓區(qū)內(nèi),,內(nèi)部穩(wěn)壓器在待機(jī)模式下必須始終保持通態(tài),這預(yù)示會產(chǎn)生一股巨大的靜態(tài)電流,。因此,,最好停止嵌入式穩(wěn)壓器的運(yùn)行,以便達(dá)到一個超低的待機(jī)電源電流,。
STM32按以下方式實(shí)現(xiàn)這兩個電壓區(qū),,其框架如圖3所示。
● VDD后備主電壓
區(qū)基于靜態(tài)電流非常低的厚氧化層高壓晶體管技術(shù),。因?yàn)橛辛烁邏壕w管,,這個電壓區(qū)可以直接由主VDD電壓供電。該電壓區(qū)包括低功率模式控制器和功率極低的看門狗,,以及相關(guān)的低功率RC振蕩器和一個門數(shù)量優(yōu)化的邏輯電路;
● 主內(nèi)核從電壓區(qū)包括限制在低壓下的所有其它功能(CPU內(nèi)核,、大多數(shù)外設(shè)和存儲器),主要用于提高性能,,降低動態(tài)功耗,。
有了這兩個電壓區(qū),STM32F103能夠提供一個功耗極低的安全待機(jī)模式,,在3.3V電壓下典型電流為2mA,,這是電壓監(jiān)控器所消耗的電流,這個監(jiān)控器是為確保待機(jī)模式與運(yùn)行模式一樣可靠而監(jiān)控主電源電壓的。因?yàn)樾孤╇娏骺梢韵拗圃诤艿退?,所以?5℃和3.3V條件下,,器件隨溫度升高而增加的待機(jī)電流被限制在2.4mA。
我們也可以在主電壓域內(nèi)實(shí)現(xiàn)動態(tài)降低功耗的功能,,例如,,STM32包括一個獨(dú)立的超低功耗的看門狗,該看門狗在待機(jī)模式下工作,,總增加功耗(專用RC振蕩器和看門狗的數(shù)字功耗)在3.3V電壓下僅1mA,。如果在待機(jī)模式下出現(xiàn)一個意外輸入,這個功能則可以防止應(yīng)用失效,。
在微控制器芯片上分離電壓區(qū)會遇到很多設(shè)計限制因素,,例如:
● 必須在后備電
壓區(qū)實(shí)現(xiàn)完整的喚醒和模擬電路,結(jié)果很難提供大量的喚醒信號源,;
● 必須在斷電期間分離兩個電壓區(qū)(內(nèi)核電壓傳出的所有信號都是浮空的) ,;
● 需要以特殊的順序停止時鐘源,電源斷電/上電必須可靠,。例如,,主內(nèi)核電壓邏輯電路需要一個專用復(fù)位;
● 因?yàn)閮蓚€電壓區(qū)在電壓和工藝方面幾乎是相互獨(dú)立的,,而在溫度方面卻是相互關(guān)聯(lián)的,,所以必須考慮到兩個電壓區(qū)的時序限制。這意味著在時序分析過程中必須兼顧更多的情況(例如,,電壓和工藝最差的備用電壓區(qū),,以及工藝和電壓最好的主內(nèi)核電壓區(qū)) ;
● 為防止程序意外地進(jìn)入待機(jī)模式輸入,,必須在備用電壓區(qū)內(nèi)實(shí)現(xiàn)某些安全功能,,如看門狗;
● 為了保證產(chǎn)品在小封裝內(nèi)擁有32位的性能,,還必須保持可用I/O與I/O總個數(shù)的比例,。在STM32上,主內(nèi)核穩(wěn)壓器無需外部去耦合電容器,,所以這個產(chǎn)品并沒有因?yàn)槭请p電壓區(qū)而損失封裝上的引腳,,即沒有采用額外的電源輸入。
不過,,作為復(fù)雜設(shè)計的回報,,STM32獲得了真正的超低功耗待機(jī),有助于應(yīng)用開發(fā)人員優(yōu)化電池使用時間,。
STM32的功率模式及優(yōu)化的電池使用時間
因?yàn)閷?shí)現(xiàn)了雙電壓區(qū),,STM32提供了兩個不同的低功耗模式:停止模式和待機(jī)模式,。兩個功能中電壓監(jiān)控器都是導(dǎo)通的,以便在出現(xiàn)電壓下降時保護(hù)應(yīng)用,。
在停止模式下,,低功耗穩(wěn)壓器保持通態(tài),但是時鐘停止運(yùn)行,。通過內(nèi)部阻容振蕩器,,穩(wěn)壓器提供極短的重啟時間(<10mS),并保留軟件環(huán)境,。在環(huán)境溫度下的典型電流為15mA(3.3V),,但是這個模式無法減輕泄漏電流問題,因?yàn)樾孤╇娏鲿S著溫度以冪數(shù)形式升高,。
在待機(jī)模式下,,穩(wěn)壓器是斷態(tài),在環(huán)境溫度下電流消耗為2mA(3.3V),,電流幾乎不會隨溫度升高(在85℃下,,一個典型器件的電流為2.4mA)。不過,,待機(jī)模式重啟意味著軟件內(nèi)容丟失,,RAM、內(nèi)核和大多數(shù)外設(shè)寄存器都會丟失數(shù)據(jù),。
為具體應(yīng)用選擇最佳的模式能夠極大地影響電池的使用壽命,下面是在選擇省電方式時應(yīng)考慮的基本要求,。
● 檢查微控制器的待機(jī)狀態(tài)是否符合應(yīng)用要求(例如,,I/O待機(jī)狀態(tài)、喚醒信號源),;
● 考慮最惡劣的但是能夠保證應(yīng)用功能正常運(yùn)行的溫度條件對電池使用壽命的影響,;
● 檢查從待機(jī)時間開始的重啟時間是多少,是否達(dá)到應(yīng)用對重啟時間的要求,;
● 檢查待機(jī)模式是否比停止模式省電,,在兩個事件之間,待機(jī)功耗與待機(jī)重啟功耗之和是否小于停止模式的功耗,。
這些問題與應(yīng)用有關(guān),,待機(jī)模式重啟時間包括從喚醒到讀取復(fù)位向量這個過程所用的時間,待機(jī)模式重啟時間取決于硬件(穩(wěn)壓器啟動時間,,STM32的時鐘源啟動時間大約為40ms)和軟件恢復(fù)應(yīng)用環(huán)境所需的時間,。軟件通常必須檢查喚醒信號源,從備份寄存器恢復(fù)環(huán)境信息,,并重新配置應(yīng)用系統(tǒng)使用的微控制器功能。
因?yàn)榇龣C(jī)軟啟動與軟件有關(guān),,所以在喚醒階段消耗的能量也與應(yīng)用有關(guān),。一個實(shí)用的估計能量損耗的方法是,在一個時限內(nèi)(從喚醒后到軟件立即回到待機(jī)模式)生成數(shù)個給定的喚醒信號,,然后比較在喚醒信號沒有生成時的平均電流消耗。為了優(yōu)化待機(jī)模式啟動時間,,開發(fā)人員不得忘記優(yōu)化編譯器增加的初始化階段,,并盡可能減少初始化階段(例如,應(yīng)該去除RAM初始化過程),。
含有自動電源開關(guān)的實(shí)時時鐘及數(shù)據(jù)備份專用電壓區(qū)
電池供電應(yīng)用都需要一個實(shí)時時鐘,,不過,內(nèi)核電壓關(guān)閉必然導(dǎo)致整個程序環(huán)境丟失,,這相當(dāng)于一個產(chǎn)品的復(fù)位重啟,。給程序?qū)崿F(xiàn)一個備份寄存器庫,有助于恢復(fù)程序執(zhí)行所需的最小環(huán)境,。
可以在一個備用電壓區(qū)內(nèi),,把所有這些功能都直
接集成在微控制器上。不過,,實(shí)時時鐘功能通常應(yīng)在很長時期(數(shù)年)內(nèi)有效,,即便電池供電的主應(yīng)用也是以充電電池為電源的。為實(shí)時時鐘設(shè)計第三個電壓區(qū),,并設(shè)置一個實(shí)時時鐘電源專用引腳,,就可以使用一個很小的專用鈕扣電池給實(shí)時時鐘供電,同時主應(yīng)用由另一個主要電源供電,,這樣鈕扣電池只給實(shí)時時鐘和相關(guān)的振蕩器供電,,而不給其它功能供電,例如,,在待機(jī)模式下才可用的電壓監(jiān)控器,。
不過,實(shí)現(xiàn)第三電壓區(qū)也不是最完美的,,因?yàn)楫?dāng)主電源可用時,,鈕扣電池仍然給實(shí)時時鐘和備份寄存器供電。為此,,STM32采用了一個聰明的延長實(shí)時時鐘電池使用時間的方法,,具體做法是給實(shí)時時鐘和備份寄存器增加一個電源開關(guān),當(dāng)主電源可用時,,從主電源給實(shí)時時鐘和備份寄存器供電,;當(dāng)主電源不可用時,從電池給實(shí)時時鐘和備份寄存器供電,。STM32電壓區(qū)電路如圖4所示,。
主電壓監(jiān)控制器通過一個閂鎖機(jī)制向電源開關(guān)發(fā)布命令,,當(dāng)發(fā)現(xiàn)VDD電壓低于VDD的下限時,開關(guān)把實(shí)時時鐘和備份寄存器的電源轉(zhuǎn)接到外部Vbat電源,。如果VDD電壓高于VDD上限時,,開關(guān)自動選擇VDD給這個特殊的電壓區(qū)供電。
采用電源開關(guān)設(shè)計還有另外一個優(yōu)點(diǎn),,軟件對這個特殊的電壓區(qū)讀寫操作(通
過電平轉(zhuǎn)換器)產(chǎn)生的額外動態(tài)功耗決不會增加對鈕扣電池的功耗,,這是因?yàn)樵谶\(yùn)行模式下,電池始終是由主電源提供的,。因此,,根據(jù)實(shí)時時鐘的功耗和鈕扣電池的電量,可以直接計算鈕扣電池最短使用時間,。
STM32的實(shí)時時鐘典型電流消耗為1.4mA(環(huán)境溫度,,3.3V),當(dāng)使用一枚CR2032電池時,,電池最短使用時間近20年,。然而,如果應(yīng)用在大多數(shù)時間都連接著主電源,,電池的使用時間可以更長,,即便電池電量非常低,還能照常使用,。
STM32實(shí)現(xiàn)的實(shí)時時鐘和備份寄存器在待機(jī)模式下仍正常工作,,因此,實(shí)時時鐘可以作為待機(jī)喚醒的信號源,,而且在系統(tǒng)進(jìn)入待機(jī)模式前,,備份寄存器還可以保存一些重要的參數(shù)值。
增添電源開關(guān)的方法大幅度提高了微控制器設(shè)計的復(fù)雜性,,因?yàn)樗螅?br />
● 電壓區(qū)之間的隔離變得更加復(fù)雜,;
● 可靠的電源開關(guān)設(shè)計,,經(jīng)過正確調(diào)整后,,功耗可達(dá)到預(yù)期的水平(為避免小封裝上可用的GPIO數(shù)量減少,內(nèi)部實(shí)時時鐘電壓區(qū)沒有外部引腳,,因此無需增添去耦合電容器),;
● 考慮到了不增加Vbat靜態(tài)功耗的各種啟動情況,例如,,當(dāng)VDD不存在時Vbat電壓的升高不應(yīng)產(chǎn)生意外狀態(tài)(鈕扣電池可能在生產(chǎn)線上被焊接到產(chǎn)品內(nèi),,這時不應(yīng)有額外的功率消耗,否則電池的電量會被白白地消耗掉),;
● 實(shí)時時鐘電壓區(qū)在轉(zhuǎn)接VbatV電壓前必須能承受VDD最低閾壓以下的大電壓降,。
支持電池供電應(yīng)用
盡管在應(yīng)用層面考慮了在待機(jī)狀態(tài)下允許內(nèi)容丟失的情況,,像STM32這樣的超低功耗待機(jī)和多電壓電源架構(gòu)仍不失為一個有效的解決方案,它允許應(yīng)用系統(tǒng)在運(yùn)行模式下實(shí)現(xiàn)優(yōu)異的性能,,同時降低靜態(tài)功耗對待機(jī)狀態(tài)的影響,。此外,在STM32內(nèi)集成獨(dú)立的功能(如實(shí)時時鐘),,使設(shè)計工程師能夠快速高效地開發(fā)電池供電的應(yīng)用設(shè)備,,并充分利用產(chǎn)品的電源能效。