消除現(xiàn)實(shí)世界中超低功耗嵌入式設(shè)計(jì)的隱患
目前,工程師的任務(wù)之一是開(kāi)發(fā)基于低成本微控制器 (MCU) 的超低功耗嵌入式應(yīng)用,此類(lèi)應(yīng)用通常要求用一顆電池維持?jǐn)?shù)年的工作。在從家用自動(dòng)調(diào)溫器到個(gè)人醫(yī)療設(shè)備等此類(lèi)超低功耗應(yīng)用中,設(shè)計(jì)人員必須仔細(xì)考慮每一微安電流。本文主要探究功耗去向以及如何消除往往在項(xiàng)目的最后時(shí)刻才會(huì)顯露的隱患。 在典型的基于超低功耗 MCU 的應(yīng)用中,有效占空比極低。在下,絕大多數(shù)時(shí)間處于待機(jī)模式下,只保持實(shí)時(shí)時(shí)鐘功能。此類(lèi)例子包括數(shù)秒鐘才測(cè)一次溫度的電子自動(dòng)調(diào)溫器以及一天只啟動(dòng)幾次且每次運(yùn)行不超過(guò) 1 分鐘的便攜式血糖監(jiān)測(cè)儀。但是一旦有需求,系統(tǒng)必須即時(shí)進(jìn)行處理。 應(yīng)當(dāng)牢記的是,基于 MCU 的超低功耗應(yīng)用必須提供如下性能:
本文引用地址:http://m.butianyuan.cn/article/91625.htm- 盡可能低的待機(jī)功耗;
- 必要的卓越性能;
- 在工作模式間能夠快速切換。
理想的電池 便攜式儀器使用的電池對(duì)系統(tǒng)的工作壽命有很大的影響。最常見(jiàn)的方法是使用一對(duì)標(biāo)準(zhǔn)的 1.5V‘AAA’堿性電池。另一種既能使成本最小化又無(wú)需更換電池的解決方案是永久安裝的單體鈕扣鋰電池。永久電池概念是一個(gè)重要的市場(chǎng)賣(mài)點(diǎn),這種電池能夠避免客戶服務(wù)及因更換電池時(shí)安裝不當(dāng)所引起的相關(guān)責(zé)任。 假設(shè)有一個(gè)最小供電電壓為 2.7V 的電池供電儀器,它的待機(jī)模式?jīng)Q定了平均電流,其值通常在 2μA 以內(nèi)。在使用一對(duì)‘AAA’電池供電時(shí),則需要一個(gè) 20uA 以內(nèi)的穩(wěn)壓器對(duì)此類(lèi)電池的線性放電進(jìn)行補(bǔ)充。因而,系統(tǒng)的總電流消耗為 22μA 即 MCU 與穩(wěn)壓器之和。串聯(lián)的 2 節(jié)堿性電池放電至 2.7V 電壓時(shí),只有 40% 的電池容量能被利用,產(chǎn)生大約 400mAh 的電量。在除以 22μA 的平均電流消耗之后,我們就可以計(jì)算出采用這種堿性電池供電,系統(tǒng)可以運(yùn)行 2 年。 與之相反,鋰電池具有平坦的放電特性,使得其電池容量幾乎可以得到完全利用,而無(wú)需進(jìn)行漏電流調(diào)節(jié)。例如,一顆普通的 220mAh鈕扣鋰電池 CR2032,其放電量可以達(dá)到 90%,輸出電壓幾乎恒定為 2.8V??偟南到y(tǒng)電流消耗為 2μA(即只有 MCU 的電流消耗)。采用這種解決方案,一顆電池就可以使系統(tǒng)運(yùn)行 10 年以上。由于具有超長(zhǎng)的工作壽命,此類(lèi)儀器往往可以設(shè)計(jì)成一次性設(shè)備,10 年后,該儀器完成了它的使命,同時(shí)也變得陳舊或過(guò)時(shí)。時(shí)鐘控制是關(guān)鍵 超低功耗應(yīng)用中經(jīng)常采用雙振蕩器方案。一個(gè)總是保持開(kāi)放狀態(tài)的 32kHz 的鐘表晶振用于低頻輔助時(shí)鐘 (ACLK),通常只為定時(shí)器與實(shí)時(shí)中斷功能提供時(shí)鐘源。一個(gè)能夠‘快速啟動(dòng)’的高頻主時(shí)鐘 (MCLK) 振蕩器只有在 CPU 與系統(tǒng)需要時(shí)才啟動(dòng),且其喚醒時(shí)間一般小于 10 微秒。不過(guò),了解哪些時(shí)鐘需要快速啟動(dòng),哪些時(shí)鐘不需要快速啟動(dòng)是很重要的。 常見(jiàn)的陷阱是二級(jí)系統(tǒng)時(shí)鐘喚醒,其最初僅向 CPU 與系統(tǒng)提供 ACLK,而 MCLK 則保持穩(wěn)定(1 毫秒即可啟動(dòng))。有時(shí)為系統(tǒng)提供快速啟動(dòng)的 MCLK(但不穩(wěn)定),但其不穩(wěn)定性會(huì)給可用性造成不利影響。例如,如果要求采用 19200 波特 UART 協(xié)議下載數(shù)據(jù)(這種操作可以隨時(shí)進(jìn)行),這就要求每隔 52μs 準(zhǔn)確接受一個(gè)比特。但 ACLK 的頻率不足以為 UART 提供足夠的波特率調(diào)制。如果將二級(jí)啟動(dòng)的高速 MCLK 用于 UART,結(jié)果將會(huì)造成無(wú)法預(yù)測(cè)的波特率并會(huì)丟失字符。在此情況下,MCLK 穩(wěn)定下來(lái)之前 MCU 必須使系統(tǒng)處于等待狀態(tài)。 進(jìn)入與退出低功率模式并快速處理數(shù)據(jù)的能力至關(guān)重要,否則 CPU 就會(huì)在等待時(shí)鐘穩(wěn)定過(guò)程中浪費(fèi)功率。高速系統(tǒng)時(shí)鐘可能能夠快速啟動(dòng)并立即穩(wěn)定下來(lái)。 外設(shè)功耗 在設(shè)計(jì)基于 MCU 的超低功耗應(yīng)用時(shí)還必須考慮到外設(shè)的功耗。大部分 MCU 都具有啟動(dòng)單個(gè)外設(shè)與時(shí)鐘源的能力,以節(jié)省功耗。僅在需要時(shí)啟動(dòng)某個(gè)外設(shè)與時(shí)鐘是降低功耗的基礎(chǔ)。
但是我們需要細(xì)心檢查兩個(gè)與外設(shè)控制相關(guān)的領(lǐng)域,即欠壓保護(hù)和端口引腳漏電流。 大部分 MCU 都集成了欠壓保護(hù)功能,其可在電源電壓降低到安全工作范圍之外時(shí)重啟系統(tǒng),以避免無(wú)法預(yù)料的事件發(fā)生。MCU 通常還能啟用或禁用欠壓保護(hù)功能以節(jié)省功耗,但是欠壓保護(hù)必須始終處于開(kāi)啟狀態(tài),這是因?yàn)榍穳菏菬o(wú)法預(yù)測(cè)的。 端口引腳漏電流有時(shí)會(huì)被忽視,但這個(gè)問(wèn)題必須考慮。許多老式的 MCU 的限定輸入引腳漏電流為 1 µA。而這對(duì)于一個(gè)具有 20 個(gè)輸入端口的器件來(lái)說(shuō)會(huì)消耗 20µA 的電流!但專為低功耗設(shè)計(jì)的 MCU 允許最大不超過(guò) 50nA的漏電流。 架構(gòu)影響 在項(xiàng)目開(kāi)始之前,我們通常需要執(zhí)行一系列專用基準(zhǔn),以分析指定架構(gòu)在代碼密度與周期數(shù)量方面的整體效率。通過(guò)這個(gè)步驟,設(shè)計(jì)人員應(yīng)當(dāng)檢驗(yàn)關(guān)鍵的可重入代碼路徑,以便深入了解可能架構(gòu)對(duì)具體應(yīng)用產(chǎn)生的影響。 處理集成 A/D 轉(zhuǎn)換器外設(shè)的中斷服務(wù)程序是可重入代碼的一個(gè)好例子。圖 1 說(shuō)明了可同時(shí)在工作文件型 8 位 RISC CPU 與基于寄存器的 16 位 RISC CUP 架構(gòu)中傳輸 10 位 A/D 數(shù)據(jù)所需的指令。8 位架構(gòu)采用單個(gè)工作文件累加器,數(shù)據(jù)必須通過(guò)該工作文件累加器進(jìn)行傳輸。此類(lèi)架構(gòu)與基于 16 位寄存器的 CPU 相比需要更多的 CPU 開(kāi)銷(xiāo),因?yàn)楹笳咴试S直接存儲(chǔ)器對(duì)傳輸進(jìn)行存儲(chǔ)。從此例可以看出,16 位架構(gòu)所需代碼更少,功能執(zhí)行速度快 4 倍,從而縮短了運(yùn)行時(shí)間,降低了功耗。 上述 A/D 轉(zhuǎn)換器實(shí)例僅對(duì) CPU 處理數(shù)據(jù)能力的差異進(jìn)行了對(duì)比。而同樣重要的是 A/D 轉(zhuǎn)換器外設(shè)具備可以降低服務(wù)需求的特性。如自動(dòng)通道掃描、基于定時(shí)器的SOC 觸發(fā)器以及轉(zhuǎn)換輸出的直接傳輸?shù)忍匦钥梢詫?CPU 開(kāi)銷(xiāo)基本上降低至零,從而有效地將功耗降低至僅為 A/D 轉(zhuǎn)換器自身的功耗。 最終清單 針對(duì)具體應(yīng)用選擇超低功耗 MCU 將是一件耗時(shí)而又困難的工作。花些時(shí)間來(lái)了解各種 MCU 的架構(gòu)特性,可以使設(shè)計(jì)滿足苛刻的功率預(yù)算要求。
以下清單為實(shí)現(xiàn)基于超低功耗 MCU 的設(shè)計(jì)提供了部分指導(dǎo)原則。 考慮采用永久鋰電池;
- 采用多種工作模式;
- 盡可能降低待機(jī)功耗;
- 采用即時(shí)啟動(dòng)且穩(wěn)定的高速振蕩器;
- 在功率預(yù)算中考慮欠壓保護(hù)功能;
- 兼顧端口引腳泄漏;
- 采用可最小化每項(xiàng)任務(wù)周期數(shù) (cycles per task) 的 CPU;
- 提供可以降低開(kāi)銷(xiāo)的智能外設(shè)。
評(píng)論