新聞中心

EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 為低功耗應(yīng)用選擇正確的 µC 外圍器件

為低功耗應(yīng)用選擇正確的 µC 外圍器件

——
作者: 時(shí)間:2005-10-11 來源:http://www.ieechina.com 收藏

在現(xiàn)實(shí)世界中,Power(權(quán)力)就意味著金錢-越大越好;而對于 &; 外圍器件來說則正好相反。隨著消費(fèi)市場的不斷發(fā)展,終端應(yīng)用產(chǎn)品的體積不斷縮小,Power(功率)越小越好。便攜性和低功耗成為最優(yōu)先考慮的事情,并促成處理器內(nèi)核電壓降至1.8 v 的行業(yè)動向,也就不足為奇了。盡管與 3.3 v 和 5 v 型號相比,這些低功耗器件消耗的能量確實(shí)要低得多,但是低功耗處理器并非都一樣。設(shè)計(jì)出色的低功耗應(yīng)用需要同時(shí)考慮終端應(yīng)用的需求和各種可用的 &; 特性。

設(shè)計(jì)人員可能會提出以下問題:是否能夠重新充電?尺寸能夠做到多???典型的工作時(shí)間是多少?速度必須多快?要連接哪種類型的外圍器件?這些答案將最終為確立設(shè)計(jì)標(biāo)準(zhǔn)和功率要求積累原始資料。

本文引用地址:http://butianyuan.cn/article/8982.htm

圖 1:典型 &; 環(huán)境中的器件

處理功率

首先應(yīng)該考慮 CPU 的處理功率,一般來說,CPU 是功耗最高的外圍器件。處理器全速運(yùn)行時(shí),耗電量非常大,因此 CPU 處于待機(jī)或關(guān)閉狀態(tài)的時(shí)間越多,電池壽命越長。例如,4 位處理器比 32 位處理器的功率消耗低;而處于休眠或停機(jī)狀態(tài)的任何位數(shù)的處理器均比工作中的處理器的功耗要低。因此,如果 32 位處理器執(zhí)行功能所耗的時(shí)間僅為 4 位處理器的1/10,那么,它在整個(gè)系統(tǒng)生命周期內(nèi)要少消耗 9/10 的功率。因此,大多數(shù)制造商建議以較高的頻率運(yùn)行 CPU,迅速完成任務(wù),并立即返回到功耗最低的休眠狀態(tài)??傊?,在選擇處理器速度時(shí),要考慮能夠迅速處理預(yù)期工作量并盡可能長時(shí)間地處于休眠狀態(tài)。

首先應(yīng)該考慮 CPU 的處理功率,一般來說,CPU 是功耗最高的外圍器件。處理器全速運(yùn)行時(shí),耗電量非常大,因此 CPU 處于待機(jī)或關(guān)閉狀態(tài)的時(shí)間越多,電池壽命越長。例如,4 位處理器比 32 位處理器的功率消耗低;而處于休眠或停機(jī)狀態(tài)的任何位數(shù)的處理器均比工作中的處理器的功耗要低。因此,如果 32 位處理器執(zhí)行功能所耗的時(shí)間僅為 4 位處理器的1/10,那么,它在整個(gè)系統(tǒng)生命周期內(nèi)要少消耗 9/10 的功率。因此,大多數(shù)制造商建議以較高的頻率運(yùn)行 CPU,迅速完成任務(wù),并立即返回到功耗最低的休眠狀態(tài)??傊?,在選擇處理器速度時(shí),要考慮能夠迅速處理預(yù)期工作量并盡可能長時(shí)間地處于休眠狀態(tài)。

其次應(yīng)考慮大多數(shù)便攜式應(yīng)用的中斷服務(wù)例程 (ISR)。ISR 會定期喚醒處理器執(zhí)行預(yù)排程序的或用戶啟動的任務(wù),然后讓處理器返回到休眠狀態(tài)。進(jìn)入和退出 ISR 所用的 CPU 時(shí)鐘周期越少越好。事實(shí)上,許多 ISR(例如端口 I/O)有多個(gè)標(biāo)志,這些標(biāo)志可能會觸發(fā)同一中斷。采用程序計(jì)數(shù)器相對尋址方式的處理器會大大縮短識別和處理適當(dāng)中斷源所需的必要周期-尤其是在鍵盤掃描應(yīng)用中。如果 ISR 編寫得好,通過限制喚醒 CPU、執(zhí)行任務(wù)和返回休眠狀態(tài)所需的程序分支,可以確保處理時(shí)間最短。采用中斷向量表的處理器中,程序計(jì)數(shù)器加載 ISR 地址,這種處理器有助于減少額外的程序分支,并降低功耗。自動上下文保存以及算術(shù)邏輯單元 (ALU) 標(biāo)志和功率模式的恢復(fù)功能也可以促進(jìn)節(jié)能。

此外,由于在低速或時(shí)鐘停止的環(huán)境中,動態(tài)內(nèi)核處理器不能保持?jǐn)?shù)據(jù)的完整性,因而應(yīng)盡可能使用靜態(tài)內(nèi)核處理器。

工作模式

休眠和“低功耗”模式也是必須考慮的重要問題。通過減慢喚醒時(shí)間實(shí)現(xiàn)低功耗狀態(tài)(或關(guān)閉對喚醒器件非常重要的功能)會增加功耗,而不是降低功耗。

休眠和“低功耗”模式也是必須考慮的重要問題。通過減慢喚醒時(shí)間實(shí)現(xiàn)低功耗狀態(tài)(或關(guān)閉對喚醒器件非常重要的功能)會增加功耗,而不是降低功耗。

大多數(shù)低功耗器件的休眠或空閑模式會關(guān)閉處理器和時(shí)鐘,通常流耗低于一微安。然后,需要 I/O 中斷把處理器從休眠模式喚醒。使用 32kHz 時(shí)鐘驅(qū)動定時(shí)器或?qū)崟r(shí)時(shí)鐘能以更靈活的方式喚醒處理器?;?2kHz 振蕩器的功耗不像“深度睡眠”模式那樣低,但它能以幾微安的電流提供時(shí)鐘功能。由于許多便攜式應(yīng)用需要實(shí)時(shí)時(shí)鐘功能,這種改進(jìn)可以讓系統(tǒng)選用多種不同的外圍器件。

需要注意的一點(diǎn)是,如果處理器必須使用 RESET 信號從停機(jī)狀態(tài)喚醒,它必須運(yùn)行所有硬件初始化程序。事實(shí)上,即使處理器SRAM 中的內(nèi)容沒有改變且仍然能夠?qū)ぶ分袛?,它也將不得不重新初始化處理器外圍器件,這將消耗能量。

振蕩器

在通過復(fù)位喚醒時(shí),由于穩(wěn)定振蕩器晶體所花費(fèi)的時(shí)間不同,內(nèi)部振蕩器能比外部振蕩器多執(zhí)行將近 1,000 條指令。例如,使用外部振蕩器的100 MIP 機(jī)器啟動、穩(wěn)定和處理指令需要的時(shí)間為1 毫秒。與此相比,同一臺機(jī)器僅需要1 微秒時(shí)間就可以使內(nèi)部振蕩器全速工作。讓外部振蕩器穩(wěn)定的時(shí)間里,內(nèi)部振蕩器可以完成加電,執(zhí)行 1000 條指令,然后恢復(fù)斷電狀態(tài)。這一時(shí)間通常已足夠找到中斷地址,并恢復(fù)斷電狀態(tài)。那么,為什么要考慮使用外部振蕩器呢?外部振蕩器通常在整個(gè)工作溫度范圍內(nèi)更準(zhǔn)確。事實(shí)上,在低功耗應(yīng)用中,嵌入式程序裝置經(jīng)常習(xí)慣對照外部振蕩器校準(zhǔn)內(nèi)部振蕩器。這是因?yàn)轵?qū)動外部振蕩器并使其達(dá)到速度所需的電路比內(nèi)部振蕩器消耗的功率更大。

在通過復(fù)位喚醒時(shí),由于穩(wěn)定振蕩器晶體所花費(fèi)的時(shí)間不同,內(nèi)部振蕩器能比外部振蕩器多執(zhí)行將近 1,000 條指令。例如,使用外部振蕩器的100 MIP 機(jī)器啟動、穩(wěn)定和處理指令需要的時(shí)間為1 毫秒。與此相比,同一臺機(jī)器僅需要1 微秒時(shí)間就可以使內(nèi)部振蕩器全速工作。讓外部振蕩器穩(wěn)定的時(shí)間里,內(nèi)部振蕩器可以完成加電,執(zhí)行 1000 條指令,然后恢復(fù)斷電狀態(tài)。這一時(shí)間通常已足夠找到中斷地址,并恢復(fù)斷電狀態(tài)。那么,為什么要考慮使用外部振蕩器呢?外部振蕩器通常在整個(gè)工作溫度范圍內(nèi)更準(zhǔn)確。事實(shí)上,在低功耗應(yīng)用中,嵌入式程序裝置經(jīng)常習(xí)慣對照外部振蕩器校準(zhǔn)內(nèi)部振蕩器。這是因?yàn)轵?qū)動外部振蕩器并使其達(dá)到速度所需的電路比內(nèi)部振蕩器消耗的功率更大。

選擇內(nèi)部振蕩器時(shí)應(yīng)慎重。雖然某些內(nèi)部振蕩器可以在數(shù)微秒內(nèi)喚醒處理器,但是,必須在經(jīng)過數(shù)毫秒,當(dāng)外部晶體達(dá)到穩(wěn)定之后,才能以更高的速度運(yùn)行,然后 CPU 時(shí)鐘才能切換到更高的頻率。例如,如果一個(gè) 100 MIP 的處理器有一個(gè) 20kHz 的內(nèi)部時(shí)鐘,該時(shí)鐘與外部振蕩器的 1 MHz 時(shí)鐘同時(shí)啟動,內(nèi)部振蕩器將仍然能夠執(zhí)行 999 條指令,而更高速度的處理器用同樣的時(shí)間只能執(zhí)行 20 條指令。

定時(shí)器

利用好定時(shí)器有助于在處理器保持待機(jī)狀態(tài)的情況下實(shí)現(xiàn)系統(tǒng)處理功能。由于定時(shí)器功耗非常小,因此這有助于大大降低功耗。應(yīng)該使用實(shí)時(shí)時(shí)鐘模塊接受 32kHz 計(jì)時(shí)器定時(shí)器輸入和設(shè)置不同時(shí)間間隔的“警報(bào)”或中斷,在無需處理器干預(yù)的情況下,使計(jì)時(shí)器計(jì)數(shù)增加。同樣,應(yīng)該使用影子寄存器更新和比較來自 ISR 的值。一旦寄存器讀到有效的預(yù)編程值,即觸發(fā) ISR,使處理器脫離休眠或待機(jī)狀態(tài),而不需要 CPU 尋找 ISR 地址、更新周期或比較值。

利用好定時(shí)器有助于在處理器保持待機(jī)狀態(tài)的情況下實(shí)現(xiàn)系統(tǒng)處理功能。由于定時(shí)器功耗非常小,因此這有助于大大降低功耗。應(yīng)該使用實(shí)時(shí)時(shí)鐘模塊接受 32kHz 計(jì)時(shí)器定時(shí)器輸入和設(shè)置不同時(shí)間間隔的“警報(bào)”或中斷,在無需處理器干預(yù)的情況下,使計(jì)時(shí)器計(jì)數(shù)增加。同樣,應(yīng)該使用影子寄存器更新和比較來自 ISR 的值。一旦寄存器讀到有效的預(yù)編程值,即觸發(fā) ISR,使處理器脫離休眠或待機(jī)狀態(tài),而不需要 CPU 尋找 ISR 地址、更新周期或比較值。

管理開銷

管理開銷系統(tǒng)監(jiān)視程序、監(jiān)管工作有助于防范不安全的狀況,有關(guān)器件包括電壓監(jiān)控器和看門狗定時(shí)器。由于數(shù)字電路依賴觸發(fā)器或從負(fù)到正(或相反亦然)狀態(tài)的轉(zhuǎn)換,因此,即使工作電壓有稍小的下降,也可能會意外觸發(fā) RESET 條件,從而造成系統(tǒng)無法工作。電力

管理開銷系統(tǒng)監(jiān)視程序、監(jiān)管工作有助于防范不安全的狀況,有關(guān)器件包括電壓監(jiān)控器和看門狗定時(shí)器。由于數(shù)字電路依賴觸發(fā)器或從負(fù)到正(或相反亦然)狀態(tài)的轉(zhuǎn)換,因此,即使工作電壓有稍小的下降,也可能會意外觸發(fā) RESET 條件,從而造成系統(tǒng)無法工作。電力

減弱保護(hù)作為電壓監(jiān)控的一部分,一般用于確保電壓瞬變不會強(qiáng)制處理器進(jìn)入和退出RESET 狀態(tài)。

只要有可能,在電壓監(jiān)控解決方案中應(yīng)采用不可屏蔽的中斷 (NMI) 來識別電壓瞬變。這種方法讓用戶能隨心所欲地設(shè)定電壓觸發(fā)的門限電平,無需系統(tǒng)復(fù)位條件,其功耗一般比模擬-數(shù)字轉(zhuǎn)換器 (ADC) 通道更低。

看門狗定時(shí)器監(jiān)視故障情況。雖然在典型的嵌入式應(yīng)用中,內(nèi)嵌的系統(tǒng)程序器往往禁用看門狗定時(shí)器,但是在低功耗系統(tǒng)中,在電源電壓不穩(wěn)定的情況下,看門狗定時(shí)器是一種有用的工具??撮T狗定時(shí)器會執(zhí)行預(yù)先設(shè)定功能,例如在符合某些條件時(shí),比如電壓過低或有內(nèi)存問題時(shí),向處理器發(fā)出 RESET 指令。所選擇的處理器應(yīng)該能夠生成已知的 ISR,使處理器無需執(zhí)行 RESET 而恢復(fù)聯(lián)機(jī)狀態(tài);因?yàn)閳?zhí)行 RESET,必須啟動外圍設(shè)備,因而會消耗更多的處理器功率。

UART 通信

將一個(gè)數(shù)字時(shí)鐘與另一個(gè)數(shù)字時(shí)鐘精確到秒地同步是不可能的,因?yàn)槊總€(gè)時(shí)鐘均與其內(nèi)部晶體同步。在 MCU 驅(qū)動的系統(tǒng)中,低功耗模式下使用的 32kHz 實(shí)時(shí)時(shí)鐘晶體與用于生成UART 波特率的普通 38.4kHz 頻率之間會出現(xiàn)類似的同步問題。因?yàn)閷?shí)時(shí)時(shí)鐘的 32,768 頻率使 15 位寄存器每秒溢出一次,所以非常適合時(shí)間保持(time-keeping) 應(yīng)用。比較而言,在UART 中使用相同的頻率,則在典型的 10 位(起始位、8 位數(shù)據(jù)和 1 個(gè)奇偶校驗(yàn)位)傳輸中保證至少有一位讀取不正確。這是由于 32,768Hz 時(shí)鐘必須除以 3.4,才能得到 9,600 波特率。由于沒有 3.4 這一選擇,因此必須選擇除以 3 或除以 4(參見圖2)。

將一個(gè)數(shù)字時(shí)鐘與另一個(gè)數(shù)字時(shí)鐘精確到秒地同步是不可能的,因?yàn)槊總€(gè)時(shí)鐘均與其內(nèi)部晶體同步。在 MCU 驅(qū)動的系統(tǒng)中,低功耗模式下使用的 32kHz 實(shí)時(shí)時(shí)鐘晶體與用于生成UART 波特率的普通 38.4kHz 頻率之間會出現(xiàn)類似的同步問題。因?yàn)閷?shí)時(shí)時(shí)鐘的 32,768 頻率使 15 位寄存器每秒溢出一次,所以非常適合時(shí)間保持(time-keeping) 應(yīng)用。比較而言,在UART 中使用相同的頻率,則在典型的 10 位(起始位、8 位數(shù)據(jù)和 1 個(gè)奇偶校驗(yàn)位)傳輸中保證至少有一位讀取不正確。這是由于 32,768Hz 時(shí)鐘必須除以 3.4,才能得到 9,600 波特率。由于沒有 3.4 這一選擇,因此必須選擇除以 3 或除以 4(參見圖2)。

圖 2:9600 波特傳輸時(shí) 32Khz 驅(qū)動 UART Rx 錯誤

UART 數(shù)據(jù)用 10,922 波特或 8,192 波特的 UART 接收。由于 UART 在傳輸中間點(diǎn)對數(shù)據(jù)進(jìn)行采樣以補(bǔ)償抖動,因此該點(diǎn)已經(jīng)被選擇為接收 UART 的采樣點(diǎn)。在沒有行抖動的理想情況下,10,922 波特 UART 對第三數(shù)據(jù)位的開始兩次讀數(shù)都會是錯誤的而8,192 波特的UART 由于會完全遺漏第三位,很快就將出錯。由于低功耗應(yīng)用的理想時(shí)鐘是低功耗實(shí)時(shí)時(shí)鐘模式,這使得在低功耗環(huán)境中處理很困難。解決這一問題的最好辦法就是將 µC 與調(diào)制技術(shù)結(jié)合使用,用 32kHz 振蕩器提供非常精確的 2,400 波特,并完全能支持9,600 波特(參見圖 3)。

圖 3:在 9600 波特傳輸時(shí)采用時(shí)鐘調(diào)制的 32Khz 驅(qū)動 UART

通過混合兩個(gè)時(shí)鐘除數(shù)解決錯誤,總體積累的錯誤消失,數(shù)據(jù)接收正確。這種方法對于9,600 波特或以下的 UART 通信很有效。對于高速通信,幾個(gè) µC 監(jiān)視 UART Rx 行的邊緣躍遷并觸發(fā) ISR 啟動內(nèi)部高速振蕩器,驅(qū)動 CPU 并處理中斷。這使 µC UART 能夠接收高速數(shù)據(jù),而不必在 UART 空閑期間保持一個(gè)啟動的高速時(shí)鐘。如果使用外部振蕩器或內(nèi)部振蕩器頻率太低,則由于啟動高速振蕩器需要一定的時(shí)間,第一次傳輸將失效。為克服這一限制和效率損失,設(shè)計(jì)人員應(yīng)該考慮使用能夠喚醒并及時(shí)從 32kHz 或停機(jī)模式激活的處理器,從正在傳輸?shù)?UART 恢復(fù)首次傳輸?shù)臄?shù)據(jù)。例如,系統(tǒng)時(shí)鐘需要在 25µs 內(nèi)啟動,才能拾取起始位的中間點(diǎn),從而正確接收 19,200 位的傳輸。

許多低功耗應(yīng)用通過 UART 將 µC 連接到 RS-485 傳感器網(wǎng)絡(luò)。支持尋址和多處理器(9 位)模式的 UART 非常適合于這種網(wǎng)絡(luò)。當(dāng)?shù)?9 位為 1(代表是一個(gè)地址)時(shí),這些 UART 會生成一個(gè) ISR,讓處理器能夠在其它傳感器通過系統(tǒng)發(fā)送數(shù)據(jù)時(shí)保持休眠狀態(tài)。某些 µC 會更進(jìn)一步,在 UART 中加入地址匹配,僅在第 9 位是 1 且地址與在剩余 8 位中收到的數(shù)據(jù)匹配時(shí)才喚醒系統(tǒng)。

模擬器件

模擬器件模擬器件是最早的操作器件。模擬器件已經(jīng)發(fā)展數(shù)十年,它是穩(wěn)定電源、為高速晶體電路提供過濾和穩(wěn)定性的必要器件,對監(jiān)控來自自然界的輸入信號也必不可少。

模擬器件模擬器件是最早的操作器件。模擬器件已經(jīng)發(fā)展數(shù)十年,它是穩(wěn)定電源、為高速晶體電路提供過濾和穩(wěn)定性的必要器件,對監(jiān)控來自自然界的輸入信號也必不可少。

在待機(jī)模式下,模擬器件實(shí)際上不消耗功率。模擬-數(shù)字轉(zhuǎn)換器 (ADC) 斷電快,在待機(jī)模式下,甚至可以被視為一種低功耗應(yīng)用。

一旦加電,缺點(diǎn)即暴露無遺。一般來說,模擬器件在工作時(shí)需要的電流很大。例如,ADC 工作時(shí)需要的電流達(dá)數(shù)百微安。另外,模擬器件(例如內(nèi)部基準(zhǔn)時(shí)鐘)會使啟動時(shí)間增加幾毫秒,因?yàn)榉€(wěn)定模擬器件需要相對較大的外部電容。另一種經(jīng)常被集成的器件-集成溫度傳感器-通常是隨溫度改變的二極管電路,也需要相當(dāng)大的電流。

在低功耗應(yīng)用中有幾個(gè)需要考慮的標(biāo)準(zhǔn)。如果 ADC 有內(nèi)部振蕩器,就沒有必要對其它系統(tǒng)振蕩器加電來進(jìn)行轉(zhuǎn)換。在這種情況下,處理器保持?jǐn)嚯姞顟B(tài),只有轉(zhuǎn)換完成時(shí)起,才需要開始工作。像 CPU 一樣,我們可以通過縮短執(zhí)行時(shí)間來降低功耗。ADC 轉(zhuǎn)換的速度越快,器件進(jìn)入待機(jī)模式的速度越快。對于內(nèi)部基準(zhǔn)時(shí)鐘也是這樣?;鶞?zhǔn)時(shí)鐘啟動和穩(wěn)定得越快,轉(zhuǎn)換完成和模擬系統(tǒng)斷電的速度也越快。如果只是偶爾使用 ADC,某些處理器允許采樣時(shí)鐘斷電,讓跟蹤電路保持加電。這樣 ADC 就能夠進(jìn)入較淺的休眠模式。這種功能的負(fù)面影響是,在進(jìn)行轉(zhuǎn)換前,需要花較長時(shí)間來讓采樣和保持電路達(dá)到穩(wěn)定。

轉(zhuǎn)換完成之后,有幾個(gè) µC 集成了直接內(nèi)存訪問 (DMA) 或先入先出 (FIFO) 緩沖存儲器,能夠?qū)⒍鄠€(gè)轉(zhuǎn)換存儲在RAM 中,而無需喚醒處理器。在一定數(shù)量的轉(zhuǎn)換到達(dá)之前,處理器會保持待機(jī)狀態(tài),而不是在每個(gè)轉(zhuǎn)換后喚醒處理器來將數(shù)據(jù)移入 RAM,這樣就可以降低功耗。

許多低功耗 µC 內(nèi)置內(nèi)部模擬比較器,可以執(zhí)行簡單的模擬任務(wù)。有些制造商的比較器允許編程,可以通過延長響應(yīng)時(shí)間降低功耗。

起始點(diǎn)

總之,µC 外圍設(shè)備的選擇是由終端應(yīng)用最終決定的,因此我們應(yīng)從全面評估系統(tǒng)功能及其功率要求著手。許多處理器制造商宣稱其器件具備低功耗工作能力,但是不同的應(yīng)用對“低功耗”一詞有不同的定義。是需要大量集成的速度更高的處理器,還是需要具有極深度睡眠模式的速度更低的處理器,更多地取決于內(nèi)嵌系統(tǒng)的要求,而不是內(nèi)嵌處理器所謂的“低功耗”工作能力。

總之,µC 外圍設(shè)備的選擇是由終端應(yīng)用最終決定的,因此我們應(yīng)從全面評估系統(tǒng)功能及其功率要求著手。許多處理器制造商宣稱其器件具備低功耗工作能力,但是不同的應(yīng)用對“低功耗”一詞有不同的定義。是需要大量集成的速度更高的處理器,還是需要具有極深度睡眠模式的速度更低的處理器,更多地取決于內(nèi)嵌系統(tǒng)的要求,而不是內(nèi)嵌處理器所謂的“低功耗”工作能力。

設(shè)計(jì)人員可能會提出以下問題:是否能夠重新充電?尺寸能夠做到多???典型的工作時(shí)間是多少?速度必須多快?要連接哪種類型的外圍器件?這些答案將最終為確立設(shè)計(jì)標(biāo)準(zhǔn)和功率要求積累原始資料。

圖 1:典型 µC 環(huán)境中的器件

處理功率

首先應(yīng)該考慮 CPU 的處理功率,一般來說,CPU 是功耗最高的外圍器件。處理器全速運(yùn)行時(shí),耗電量非常大,因此 CPU 處于待機(jī)或關(guān)閉狀態(tài)的時(shí)間越多,電池壽命越長。例如,4 位處理器比 32 位處理器的功率消耗低;而處于休眠或停機(jī)狀態(tài)的任何位數(shù)的處理器均比工作中的處理器的功耗要低。因此,如果 32 位處理器執(zhí)行功能所耗的時(shí)間僅為 4 位處理器的1/10,那么,它在整個(gè)系統(tǒng)生命周期內(nèi)要少消耗 9/10 的功率。因此,大多數(shù)制造商建議以較高的頻率運(yùn)行 CPU,迅速完成任務(wù),并立即返回到功耗最低的休眠狀態(tài)??傊?,在選擇處理器速度時(shí),要考慮能夠迅速處理預(yù)期工作量并盡可能長時(shí)間地處于休眠狀態(tài)。

首先應(yīng)該考慮 CPU 的處理功率,一般來說,CPU 是功耗最高的外圍器件。處理器全速運(yùn)行時(shí),耗電量非常大,因此 CPU 處于待機(jī)或關(guān)閉狀態(tài)的時(shí)間越多,電池壽命越長。例如,4 位處理器比 32 位處理器的功率消耗低;而處于休眠或停機(jī)狀態(tài)的任何位數(shù)的處理器均比工作中的處理器的功耗要低。因此,如果 32 位處理器執(zhí)行功能所耗的時(shí)間僅為 4 位處理器的1/10,那么,它在整個(gè)系統(tǒng)生命周期內(nèi)要少消耗 9/10 的功率。因此,大多數(shù)制造商建議以較高的頻率運(yùn)行 CPU,迅速完成任務(wù),并立即返回到功耗最低的休眠狀態(tài)。總之,在選擇處理器速度時(shí),要考慮能夠迅速處理預(yù)期工作量并盡可能長時(shí)間地處于休眠狀態(tài)。

其次應(yīng)考慮大多數(shù)便攜式應(yīng)用的中斷服務(wù)例程 (ISR)。ISR 會定期喚醒處理器執(zhí)行預(yù)排程序的或用戶啟動的任務(wù),然后讓處理器返回到休眠狀態(tài)。進(jìn)入和退出 ISR 所用的 CPU 時(shí)鐘周期越少越好。事實(shí)上,許多 ISR(例如端口 I/O)有多個(gè)標(biāo)志,這些標(biāo)志可能會觸發(fā)同一中斷。采用程序計(jì)數(shù)器相對尋址方式的處理器會大大縮短識別和處理適當(dāng)中斷源所需的必要周期-尤其是在鍵盤掃描應(yīng)用中。如果 ISR 編寫得好,通過限制喚醒 CPU、執(zhí)行任務(wù)和返回休眠狀態(tài)所需的程序分支,可以確保處理時(shí)間最短。采用中斷向量表的處理器中,程序計(jì)數(shù)器加載 ISR 地址,這種處理器有助于減少額外的程序分支,并降低功耗。自動上下文保存以及算術(shù)邏輯單元 (ALU) 標(biāo)志和功率模式的恢復(fù)功能也可以促進(jìn)節(jié)能。

此外,由于在低速或時(shí)鐘停止的環(huán)境中,動態(tài)內(nèi)核處理器不能保持?jǐn)?shù)據(jù)的完整性,因而應(yīng)盡可能使用靜態(tài)內(nèi)核處理器。

工作模式

休眠和“低功耗”模式也是必須考慮的重要問題。通過減慢喚醒時(shí)間實(shí)現(xiàn)低功耗狀態(tài)(或關(guān)閉對喚醒器件非常重要的功能)會增加功耗,而不是降低功耗。

休眠和“低功耗”模式也是必須考慮的重要問題。通過減慢喚醒時(shí)間實(shí)現(xiàn)低功耗狀態(tài)(或關(guān)閉對喚醒器件非常重要的功能)會增加功耗,而不是降低功耗。

大多數(shù)低功耗器件的休眠或空閑模式會關(guān)閉處理器和時(shí)鐘,通常流耗低于一微安。然后,需要 I/O 中斷把處理器從休眠模式喚醒。使用 32kHz 時(shí)鐘驅(qū)動定時(shí)器或?qū)崟r(shí)時(shí)鐘能以更靈活的方式喚醒處理器。基于32kHz 振蕩器的功耗不像“深度睡眠”模式那樣低,但它能以幾微安的電流提供時(shí)鐘功能。由于許多便攜式應(yīng)用需要實(shí)時(shí)時(shí)鐘功能,這種改進(jìn)可以讓系統(tǒng)選用多種不同的外圍器件。

需要注意的一點(diǎn)是,如果處理器必須使用 RESET 信號從停機(jī)狀態(tài)喚醒,它必須運(yùn)行所有硬件初始化程序。事實(shí)上,即使處理器SRAM 中的內(nèi)容沒有改變且仍然能夠?qū)ぶ分袛?,它也將不得不重新初始化處理器外圍器件,這將消耗能量。

振蕩器

在通過復(fù)位喚醒時(shí),由于穩(wěn)定振蕩器晶體所花費(fèi)的時(shí)間不同,內(nèi)部振蕩器能比外部振蕩器多執(zhí)行將近 1,000 條指令。例如,使用外部振蕩器的100 MIP 機(jī)器啟動、穩(wěn)定和處理指令需要的時(shí)間為1 毫秒。與此相比,同一臺機(jī)器僅需要1 微秒時(shí)間就可以使內(nèi)部振蕩器全速工作。讓外部振蕩器穩(wěn)定的時(shí)間里,內(nèi)部振蕩器可以完成加電,執(zhí)行 1000 條指令,然后恢復(fù)斷電狀態(tài)。這一時(shí)間通常已足夠找到中斷地址,并恢復(fù)斷電狀態(tài)。那么,為什么要考慮使用外部振蕩器呢?外部振蕩器通常在整個(gè)工作溫度范圍內(nèi)更準(zhǔn)確。事實(shí)上,在低功耗應(yīng)用中,嵌入式程序裝置經(jīng)常習(xí)慣對照外部振蕩器校準(zhǔn)內(nèi)部振蕩器。這是因?yàn)轵?qū)動外部振蕩器并使其達(dá)到速度所需的電路比內(nèi)部振蕩器消耗的功率更大。

在通過復(fù)位喚醒時(shí),由于穩(wěn)定振蕩器晶體所花費(fèi)的時(shí)間不同,內(nèi)部振蕩器能比外部振蕩器多執(zhí)行將近 1,000 條指令。例如,使用外部振蕩器的100 MIP 機(jī)器啟動、穩(wěn)定和處理指令需要的時(shí)間為1 毫秒。與此相比,同一臺機(jī)器僅需要1 微秒時(shí)間就可以使內(nèi)部振蕩器全速工作。讓外部振蕩器穩(wěn)定的時(shí)間里,內(nèi)部振蕩器可以完成加電,執(zhí)行 1000 條指令,然后恢復(fù)斷電狀態(tài)。這一時(shí)間通常已足夠找到中斷地址,并恢復(fù)斷電狀態(tài)。那么,為什么要考慮使用外部振蕩器呢?外部振蕩器通常在整個(gè)工作溫度范圍內(nèi)更準(zhǔn)確。事實(shí)上,在低功耗應(yīng)用中,嵌入式程序裝置經(jīng)常習(xí)慣對照外部振蕩器校準(zhǔn)內(nèi)部振蕩器。這是因?yàn)轵?qū)動外部振蕩器并使其達(dá)到速度所需的電路比內(nèi)部振蕩器消耗的功率更大。

選擇內(nèi)部振蕩器時(shí)應(yīng)慎重。雖然某些內(nèi)部振蕩器可以在數(shù)微秒內(nèi)喚醒處理器,但是,必須在經(jīng)過數(shù)毫秒,當(dāng)外部晶體達(dá)到穩(wěn)定之后,才能以更高的速度運(yùn)行,然后 CPU 時(shí)鐘才能切換到更高的頻率。例如,如果一個(gè) 100 MIP 的處理器有一個(gè) 20kHz 的內(nèi)部時(shí)鐘,該時(shí)鐘與外部振蕩器的 1 MHz 時(shí)鐘同時(shí)啟動,內(nèi)部振蕩器將仍然能夠執(zhí)行 999 條指令,而更高速度的處理器用同樣的時(shí)間只能執(zhí)行 20 條指令。

定時(shí)器

利用好定時(shí)器有助于在處理器保持待機(jī)狀態(tài)的情況下實(shí)現(xiàn)系統(tǒng)處理功能。由于定時(shí)器功耗非常小,因此這有助于大大降低功耗。應(yīng)該使用實(shí)時(shí)時(shí)鐘模塊接受 32kHz 計(jì)時(shí)器定時(shí)器輸入和設(shè)置不同時(shí)間間隔的“警報(bào)”或中斷,在無需處理器干預(yù)的情況下,使計(jì)時(shí)器計(jì)數(shù)增加。同樣,應(yīng)該使用影子寄存器更新和比較來自 ISR 的值。一旦寄存器讀到有效的預(yù)編程值,即觸發(fā) ISR,使處理器脫離休眠或待機(jī)狀態(tài),而不需要 CPU 尋找 ISR 地址、更新周期或比較值。

利用好定時(shí)器有助于在處理器保持待機(jī)狀態(tài)的情況下實(shí)現(xiàn)系統(tǒng)處理功能。由于定時(shí)器功耗非常小,因此這有助于大大降低功耗。應(yīng)該使用實(shí)時(shí)時(shí)鐘模塊接受 32kHz 計(jì)時(shí)器定時(shí)器輸入和設(shè)置不同時(shí)間間隔的“警報(bào)”或中斷,在無需處理器干預(yù)的情況下,使計(jì)時(shí)器計(jì)數(shù)增加。同樣,應(yīng)該使用影子寄存器更新和比較來自 ISR 的值。一旦寄存器讀到有效的預(yù)編程值,即觸發(fā) ISR,使處理器脫離休眠或待機(jī)狀態(tài),而不需要 CPU 尋找 ISR 地址、更新周期或比較值。

管理開銷

管理開銷系統(tǒng)監(jiān)視程序、監(jiān)管工作有助于防范不安全的狀況,有關(guān)器件包括電壓監(jiān)控器和看門狗定時(shí)器。由于數(shù)字電路依賴觸發(fā)器或從負(fù)到正(或相反亦然)狀態(tài)的轉(zhuǎn)換,因此,即使工作電壓有稍小的下降,也可能會意外觸發(fā) RESET 條件,從而造成系統(tǒng)無法工作。電力

管理開銷系統(tǒng)監(jiān)視程序、監(jiān)管工作有助于防范不安全的狀況,有關(guān)器件包括電壓監(jiān)控器和看門狗定時(shí)器。由于數(shù)字電路依賴觸發(fā)器或從負(fù)到正(或相反亦然)狀態(tài)的轉(zhuǎn)換,因此,即使工作電壓有稍小的下降,也可能會意外觸發(fā) RESET 條件,從而造成系統(tǒng)無法工作。電力

減弱保護(hù)作為電壓監(jiān)控的一部分,一般用于確保電壓瞬變不會強(qiáng)制處理器進(jìn)入和退出RESET 狀態(tài)。

只要有可能,在電壓監(jiān)控解決方案中應(yīng)采用不可屏蔽的中斷 (NMI) 來識別電壓瞬變。這種方法讓用戶能隨心所欲地設(shè)定電壓觸發(fā)的門限電平,無需系統(tǒng)復(fù)位條件,其功耗一般比模擬-數(shù)字轉(zhuǎn)換器 (ADC) 通道更低。

看門狗定時(shí)器監(jiān)視故障情況。雖然在典型的嵌入式應(yīng)用中,內(nèi)嵌的系統(tǒng)程序器往往禁用看門狗定時(shí)器,但是在低功耗系統(tǒng)中,在電源電壓不穩(wěn)定的情況下,看門狗定時(shí)器是一種有用的工具??撮T狗定時(shí)器會執(zhí)行預(yù)先設(shè)定功能,例如在符合某些條件時(shí),比如電壓過低或有內(nèi)存問題時(shí),向處理器發(fā)出 RESET 指令。所選擇的處理器應(yīng)該能夠生成已知的 ISR,使處理器無需執(zhí)行 RESET 而恢復(fù)聯(lián)機(jī)狀態(tài);因?yàn)閳?zhí)行 RESET,必須啟動外圍設(shè)備,因而會消耗更多的處理器功率。

UART 通信

將一個(gè)數(shù)字時(shí)鐘與另一個(gè)數(shù)字時(shí)鐘精確到秒地同步是不可能的,因?yàn)槊總€(gè)時(shí)鐘均與其內(nèi)部晶體同步。在 MCU 驅(qū)動的系統(tǒng)中,低功耗模式下使用的 32kHz 實(shí)時(shí)時(shí)鐘晶體與用于生成UART 波特率的普通 38.4kHz 頻率之間會出現(xiàn)類似的同步問題。因?yàn)閷?shí)時(shí)時(shí)鐘的 32,768 頻率使 15 位寄存器每秒溢出一次,所以非常適合時(shí)間保持(time-keeping) 應(yīng)用。比較而言,在UART 中使用相同的頻率,則在典型的 10 位(起始位、8 位數(shù)據(jù)和 1 個(gè)奇偶校驗(yàn)位)傳輸中保證至少有一位讀取不正確。這是由于 32,768Hz 時(shí)鐘必須除以 3.4,才能得到 9,600 波特率。由于沒有 3.4 這一選擇,因此必須選擇除以 3 或除以 4(參見圖2)。

將一個(gè)數(shù)字時(shí)鐘與另一個(gè)數(shù)字時(shí)鐘精確到秒地同步是不可能的,因?yàn)槊總€(gè)時(shí)鐘均與其內(nèi)部晶體同步。在 MCU 驅(qū)動的系統(tǒng)中,低功耗模式下使用的 32kHz 實(shí)時(shí)時(shí)鐘晶體與用于生成UART 波特率的普通 38.4kHz 頻率之間會出現(xiàn)類似的同步問題。因?yàn)閷?shí)時(shí)時(shí)鐘的 32,768 頻率使 15 位寄存器每秒溢出一次,所以非常適合時(shí)間保持(time-keeping) 應(yīng)用。比較而言,在UART 中使用相同的頻率,則在典型的 10 位(起始位、8 位數(shù)據(jù)和 1 個(gè)奇偶校驗(yàn)位)傳輸中保證至少有一位讀取不正確。這是由于 32,768Hz 時(shí)鐘必須除以 3.4,才能得到 9,600 波特率。由于沒有 3.4 這一選擇,因此必須選擇除以 3 或除以 4(參見圖2)。

圖 2:9600 波特傳輸時(shí) 32Khz 驅(qū)動 UART Rx 錯誤

UART 數(shù)據(jù)用 10,922 波特或 8,192 波特的 UART 接收。由于 UART 在傳輸中間點(diǎn)對數(shù)據(jù)進(jìn)行采樣以補(bǔ)償抖動,因此該點(diǎn)已經(jīng)被選擇為接收 UART 的采樣點(diǎn)。在沒有行抖動的理想情況下,10,922 波特 UART 對第三數(shù)據(jù)位的開始兩次讀數(shù)都會是錯誤的而8,192 波特的UART 由于會完全遺漏第三位,很快就將出錯。由于低功耗應(yīng)用的理想時(shí)鐘是低功耗實(shí)時(shí)時(shí)鐘模式,這使得在低功耗環(huán)境中處理很困難。解決這一問題的最好辦法就是將 µC 與調(diào)制技術(shù)結(jié)合使用,用 32kHz 振蕩器提供非常精確的 2,400 波特,并完全能支持9,600 波特(參見圖 3)。

圖 3:在 9600 波特傳輸時(shí)采用時(shí)鐘調(diào)制的 32Khz 驅(qū)動 UART

通過混合兩個(gè)時(shí)鐘除數(shù)解決錯誤,總體積累的錯誤消失,數(shù)據(jù)接收正確。這種方法對于9,600 波特或以下的 UART 通信很有效。對于高速通信,幾個(gè) µC 監(jiān)視 UART Rx 行的邊緣躍遷并觸發(fā) ISR 啟動內(nèi)部高速振蕩器,驅(qū)動 CPU 并處理中斷。這使 µC UART 能夠接收高速數(shù)據(jù),而不必在 UART 空閑期間保持一個(gè)啟動的高速時(shí)鐘。如果使用外部振蕩器或內(nèi)部振蕩器頻率太低,則由于啟動高速振蕩器需要一定的時(shí)間,第一次傳輸將失效。為克服這一限制和效率損失,設(shè)計(jì)人員應(yīng)該考慮使用能夠喚醒并及時(shí)從 32kHz 或停機(jī)模式激活的處理器,從正在傳輸?shù)?UART 恢復(fù)首次傳輸?shù)臄?shù)據(jù)。例如,系統(tǒng)時(shí)鐘需要在 25µs 內(nèi)啟動,才能拾取起始位的中間點(diǎn),從而正確接收 19,200 位的傳輸。

許多低功耗應(yīng)用通過 UART 將 µC 連接到 RS-485 傳感器網(wǎng)絡(luò)。支持尋址和多處理器(9 位)模式的 UART 非常適合于這種網(wǎng)絡(luò)。當(dāng)?shù)?9 位為 1(代表是一個(gè)地址)時(shí),這些 UART 會生成一個(gè) ISR,讓處理器能夠在其它傳感器通過系統(tǒng)發(fā)送數(shù)據(jù)時(shí)保持休眠狀態(tài)。某些 µC 會更進(jìn)一步,在 UART 中加入地址匹配,僅在第 9 位是 1 且地址與在剩余 8 位中收到的數(shù)據(jù)匹配時(shí)才喚醒系統(tǒng)。

模擬器件

模擬器件模擬器件是最早的操作器件。模擬器件已經(jīng)發(fā)展數(shù)十年,它是穩(wěn)定電源、為高速晶體電路提供過濾和穩(wěn)定性的必要器件,對監(jiān)控來自自然界的輸入信號也必不可少。

模擬器件模擬器件是最早的操作器件。模擬器件已經(jīng)發(fā)展數(shù)十年,它是穩(wěn)定電源、為高速晶體電路提供過濾和穩(wěn)定性的必要器件,對監(jiān)控來自自然界的輸入信號也必不可少。

在待機(jī)模式下,模擬器件實(shí)際上不消耗功率。模擬-數(shù)字轉(zhuǎn)換器 (ADC) 斷電快,在待機(jī)模式下,甚至可以被視為一種低功耗應(yīng)用。

一旦加電,缺點(diǎn)即暴露無遺。一般來說,模擬器件在工作時(shí)需要的電流很大。例如,ADC 工作時(shí)需要的電流達(dá)數(shù)百微安。另外,模擬器件(例如內(nèi)部基準(zhǔn)時(shí)鐘)會使啟動時(shí)間增加幾毫秒,因?yàn)榉€(wěn)定模擬器件需要相對較大的外部電容。另一種經(jīng)常被集成的器件-集成溫度傳感器-通常是隨溫度改變的二極管電路,也需要相當(dāng)大的電流。

在低功耗應(yīng)用中有幾個(gè)需要考慮的標(biāo)準(zhǔn)。如果 ADC 有內(nèi)部振蕩器,就沒有必要對其它系統(tǒng)振蕩器加電來進(jìn)行轉(zhuǎn)換。在這種情況下,處理器保持?jǐn)嚯姞顟B(tài),只有轉(zhuǎn)換完成時(shí)起,才需要開始工作。像 CPU 一樣,我們可以通過縮短執(zhí)行時(shí)間來降低功耗。ADC 轉(zhuǎn)換的速度越快,器件進(jìn)入待機(jī)模式的速度越快。對于內(nèi)部基準(zhǔn)時(shí)鐘也是這樣?;鶞?zhǔn)時(shí)鐘啟動和穩(wěn)定得越快,轉(zhuǎn)換完成和模擬系統(tǒng)斷電的速度也越快。如果只是偶爾使用 ADC,某些處理器允許采樣時(shí)鐘斷電,讓跟蹤電路保持加電。這樣 ADC 就能夠進(jìn)入較淺的休眠模式。這種功能的負(fù)面影響是,在進(jìn)行轉(zhuǎn)換前,需要花較長時(shí)間來讓采樣和保持電路達(dá)到穩(wěn)定。

轉(zhuǎn)換完成之后,有幾個(gè) µC 集成了直接內(nèi)存訪問 (DMA) 或先入先出 (FIFO) 緩沖存儲器,能夠?qū)⒍鄠€(gè)轉(zhuǎn)換存儲在RAM 中,而無需喚醒處理器。在一定數(shù)量的轉(zhuǎn)換到達(dá)之前,處理器會保持待機(jī)狀態(tài),而不是在每個(gè)轉(zhuǎn)換后喚醒處理器來將數(shù)據(jù)移入 RAM,這樣就可以降低功耗。

許多低功耗 µC 內(nèi)置內(nèi)部模擬比較器,可以執(zhí)行簡單的模擬任務(wù)。有些制造商的比較器允許編程,可以通過延長響應(yīng)時(shí)間降低功耗。

起始點(diǎn)

總之,µC 外圍設(shè)備的選擇是由終端應(yīng)用最終決定的,因此我們應(yīng)從全面評估系統(tǒng)功能及其功率要求著手。許多處理器制造商宣稱其器件具備低功耗工作能力,但是不同的應(yīng)用對“低功耗”一詞有不同的定義。是需要大量集成的速度更高的處理器,還是需要具有極深度睡眠模式的速度更低的處理器,更多地取決于內(nèi)嵌系統(tǒng)的要求,而不是內(nèi)嵌處理器所謂的“低功耗”工作能力。

總之,µC 外圍設(shè)備的選擇是由終端應(yīng)用最終決定的,因此我們應(yīng)從全面評估系統(tǒng)功能及其功率要求著手。許多處理器制造商宣稱其器件具備低功耗工作能力,但是不同的應(yīng)用對“低功耗”一詞有不同的定義。是需要大量集成的速度更高的處理器,還是需要具有極深度睡眠模式的速度更低的處理器,更多地取決于內(nèi)嵌系統(tǒng)的要求,而不是內(nèi)嵌處理器所謂的“低功耗”工作能力。



關(guān)鍵詞: & C micro

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉