如何為低功耗應用選擇正確的μC外圍器件
設計人員可能會(huì )提出以下問(wèn)題:是否能夠重新充電?尺寸能夠做到多???典型的工作時(shí)間是多少?速度必須多快?要連接哪種類(lèi)型的外圍器件?這些答案將最終為確立設計標準和功率要求積累原始資料。

圖1:典型μC環(huán)境中的器件處理功率
首先應該考慮CPU的處理功率,一般來(lái)說(shuō),CPU是功耗最高的外圍器件。處理器全速運行時(shí),耗電量非常大,因此CPU處于待機或關(guān)閉狀態(tài)的時(shí)間越多,電池壽命越長(cháng)。例如,4位處理器比32位處理器的功率消耗低;而處于休眠或停機狀態(tài)的任何位數的處理器均比工作中的處理器的功耗要低。因此,如果32位處理器執行功能所耗的時(shí)間僅為4位處理器的1/10,那么,它在整個(gè)系統生命周期內要少消耗9/10的功率。因此,大多數制造商建議以較高的頻率運行CPU,迅速完成任務(wù),并立即返回到功耗最低的休眠狀態(tài)??傊?在選擇處理器速度時(shí),要考慮能夠迅速處理預期工作量并盡可能長(cháng)時(shí)間地處于休眠狀態(tài)。
其次應考慮大多數便攜式應用的中斷服務(wù)例程(ISR)。ISR會(huì )定期喚醒處理器執行預排程序的或用戶(hù)啟動(dòng)的任務(wù),然后讓處理器返回到休眠狀態(tài)。進(jìn)入和退出ISR所用的CPU時(shí)鐘周期越少越好。事實(shí)上,許多ISR(例如端口I/O)有多個(gè)標志,這些標志可能會(huì )觸發(fā)同一中斷。采用程序計數器相對尋址方式的處理器會(huì )大大縮短識別和處理適當中斷源所需的必要周期-尤其是在鍵盤(pán)掃描應用中。如果ISR編寫(xiě)得好,通過(guò)限制喚醒CPU、執行任務(wù)和返回休眠狀態(tài)所需的程序分支,可以確保處理時(shí)間最短。采用中斷向量表的處理器中,程序計數器加載ISR地址,這種處理器有助于減少額外的程序分支,并降低功耗。自動(dòng)上下文保存以及算術(shù)邏輯單元(ALU)標志和功率模式的恢復功能也可以促進(jìn)節能。
此外,由于在低速或時(shí)鐘停止的環(huán)境中,動(dòng)態(tài)內核處理器不能保持數據的完整性,因而應盡可能使用靜態(tài)內核處理器。
工作模式
休眠和“低功耗”模式也是必須考慮的重要問(wèn)題。通過(guò)減慢喚醒時(shí)間實(shí)現低功耗狀態(tài)(或關(guān)閉對喚醒器件非常重要的功能)會(huì )增加功耗,而不是降低功耗。
大多數低功耗器件的休眠或空閑模式會(huì )關(guān)閉處理器和時(shí)鐘,通常流耗低于一微安。然后,需要I/O中斷把處理器從休眠模式喚醒。使用32kHz時(shí)鐘驅動(dòng)定時(shí)器或實(shí)時(shí)時(shí)鐘能以更靈活的方式喚醒處理器?;?2kHz振蕩器的功耗不像“深度睡眠”模式那樣低,但它能以幾微安的電流提供時(shí)鐘功能。由于許多便攜式應用需要實(shí)時(shí)時(shí)鐘功能,這種改進(jìn)可以讓系統選用多種不同的外圍器件。
需要注意的一點(diǎn)是,如果處理器必須使用RESET信號從停機狀態(tài)喚醒,它必須運行所有硬件初始化程序。事實(shí)上,即使處理器SRAM中的內容沒(méi)有改變且仍然能夠尋址中斷,它也將不得不重新初始化處理器外圍器件,這將消耗能量。
振蕩器
在通過(guò)復位喚醒時(shí),由于穩定振蕩器晶體所花費的時(shí)間不同,內部振蕩器能比外部振蕩器多執行將近1,000條指令。例如,使用外部振蕩器的100MIP機器啟動(dòng)、穩定和處理指令需要的時(shí)間為1毫秒。與此相比,同一臺機器僅需要1微秒時(shí)間就可以使內部振蕩器全速工作。讓外部振蕩器穩定的時(shí)間里,內部振蕩器可以完成加電,執行1000條指令,然后恢復斷電狀態(tài)。這一時(shí)間通常已足夠找到中斷地址,并恢復斷電狀態(tài)。那么,為什么要考慮使用外部振蕩器呢?外部振蕩器通常在整個(gè)工作溫度范圍內更準確。事實(shí)上,在低功耗應用中,嵌入式程序裝置經(jīng)常習慣對照外部振蕩器校準內部振蕩器。這是因為驅動(dòng)外部振蕩器并使其達到速度所需的電路比內部振蕩器消耗的功率更大。
選擇內部振蕩器時(shí)應慎重。雖然某些內部振蕩器可以在數微秒內喚醒處理器,但是,必須在經(jīng)過(guò)數毫秒,當外部晶體達到穩定之后,才能以更高的速度運行,然后CPU時(shí)鐘才能切換到更高的頻率。例如,如果一個(gè)100MIP的處理器有一個(gè)20kHz的內部時(shí)鐘,該時(shí)鐘與外部振蕩器的1MHz時(shí)鐘同時(shí)啟動(dòng),內部振蕩器將仍然能夠執行999條指令,而更高速度的處理器用同樣的時(shí)間只能執行20條指令。
定時(shí)器
利用好定時(shí)器有助于在處理器保持待機狀態(tài)的情況下實(shí)現系統處理功能。由于定時(shí)器功耗非常小,因此這有助于大大降低功耗。應該使用實(shí)時(shí)時(shí)鐘模塊接受32kHz計時(shí)器定時(shí)器輸入和設置不同時(shí)間間隔的“警報”或中斷,在無(wú)需處理器干預的情況下,使計時(shí)器計數增加。同樣,應該使用影子寄存器更新和比較來(lái)自ISR的值。一旦寄存器讀到有效的預編程值,即觸發(fā)ISR,使處理器脫離休眠或待機狀態(tài),而不需要CPU尋找ISR地址、更新周期或比較值。
管理開(kāi)銷(xiāo)
管理開(kāi)銷(xiāo)系統監視程序、監管工作有助于防范不安全的狀況,有關(guān)器件包括電壓監控器和看門(mén)狗定時(shí)器。由于數字電路依賴(lài)觸發(fā)器或從負到正(或相反亦然)狀態(tài)的轉換,因此,即使工作電壓有稍小的下降,也可能會(huì )意外觸發(fā)RESET條件,從而造成系統無(wú)法工作。電力減弱保護作為電壓監控的一部分,一般用于確保電壓瞬變不會(huì )強制處理器進(jìn)入和退出RESET狀態(tài)。
只要有可能,在電壓監控解決方案中應采用不可屏蔽的中斷(NMI)來(lái)識別電壓瞬變。這種方法讓用戶(hù)能隨心所欲地設定電壓觸發(fā)的門(mén)限電平,無(wú)需系統復位條件,其功耗一般比模擬-數字轉換器(ADC)通道更低。
看門(mén)狗定時(shí)器監視故障情況。雖然在典型的嵌入式應用中,內嵌的系統程序器往往禁用看門(mén)狗定時(shí)器,但是在低功耗系統中,在電源電壓不穩定的情況下,看門(mén)狗定時(shí)器是一種有用的工具??撮T(mén)狗定時(shí)器會(huì )執行預先設定功能,例如在符合某些條件時(shí),比如電壓過(guò)低或有內存問(wèn)題時(shí),向處理器發(fā)出RESET指令。所選擇的處理器應該能夠生成已知的ISR,使處理器無(wú)需執行RESET而恢復聯(lián)機狀態(tài);因為執行RESET,必須啟動(dòng)外圍設備,因而會(huì )消耗更多的處理器功率。
UART通信
將一個(gè)數字時(shí)鐘與另一個(gè)數字時(shí)鐘精確到秒地同步是不可能的,因為每個(gè)時(shí)鐘均與其內部晶體同步。在MCU驅動(dòng)的系統中,低功耗模式下使用的32kHz實(shí)時(shí)時(shí)鐘晶體與用于生成UART波特率的普通38.4kHz頻率之間會(huì )出現類(lèi)似的同步問(wèn)題。因為實(shí)時(shí)時(shí)鐘的32,768頻率使15位寄存器每秒溢出一次,所以非常適合時(shí)間保持(time-keeping)應用。比較而言,在UART中使用相同的頻率,則在典型的10位(起始位、8位數據和1個(gè)奇偶校驗位)傳輸中保證至少有一位讀取不正確。這是由于32,768Hz時(shí)鐘必須除以3.4,才能得到9,600波特率。由于沒(méi)有3.4這一選擇,因此必須選擇除以3或除以4(參見(jiàn)圖2)。
將一個(gè)數字時(shí)鐘與另一個(gè)數字時(shí)鐘精確到秒地同步是不可能的,因為每個(gè)時(shí)鐘均與其內部晶體同步。在MCU驅動(dòng)的系統中,低功耗模式下使用的32kHz實(shí)時(shí)時(shí)鐘晶體與用于生成UART波特率的普通38.4kHz頻率之間會(huì )出現類(lèi)似的同步問(wèn)題。因為實(shí)時(shí)時(shí)鐘的32,768頻率使15位寄存器每秒溢出一次,所以非常適合時(shí)間保持(time-keeping)應用。比較而言,在UART中使用相同的頻率,則在典型的10位(起始位、8位數據和1個(gè)奇偶校驗位)傳輸中保證至少有一位讀取不正確。這是由于32,768Hz時(shí)鐘必須除以3.4,才能得到9,600波特率。由于沒(méi)有3.4這一選擇,因此必須選擇除以3或除以4(參見(jiàn)圖2)。

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

圖3:在9600波特傳輸時(shí)采用時(shí)鐘調制的32Khz驅動(dòng)UART
通過(guò)混合兩個(gè)時(shí)鐘除數解決錯誤,總體積累的錯誤消失,數據接收正確。這種方法對于9,600波特或以下的UART通信很有效。對于高速通信,幾個(gè)μC監視UARTRx行的邊緣躍遷并觸發(fā)ISR啟動(dòng)內部高速振蕩器,驅動(dòng)CPU并處理中斷。這使μCUART能夠接收高速數據,而不必在UART空閑期間保持一個(gè)啟動(dòng)的高速時(shí)鐘。如果使用外部振蕩器或內部振蕩器頻率太低,則由于啟動(dòng)高速振蕩器需要一定的時(shí)間,第一次傳輸將失效。為克服這一限制和效率損失,設計人員應該考慮使用能夠喚醒并及時(shí)從32kHz或停機模式激活的處理器,從正在傳輸的UART恢復首次傳輸的數據。例如,系統時(shí)鐘需要在25μs內啟動(dòng),才能拾取起始位的中間點(diǎn),從而正確接收19,200位的傳輸。
許多低功耗應用通過(guò)UART將μC連接到RS-485傳感器網(wǎng)絡(luò )。支持尋址和多處理器(9位)模式的UART非常適合于這種網(wǎng)絡(luò )。當第9位為1(代表是一個(gè)地址)時(shí),這些UART會(huì )生成一個(gè)ISR,讓處理器能夠在其它傳感器通過(guò)系統發(fā)送數據時(shí)保持休眠狀態(tài)。某些μC會(huì )更進(jìn)一步,在UART中加入地址匹配,僅在第9位是1且地址與在剩余8位中收到的數據匹配時(shí)才喚醒系統。
模擬器件
模擬器件模擬器件是最早的操作器件。模擬器件已經(jīng)發(fā)展數十年,它是穩定電源、為高速晶體電路提供過(guò)濾和穩定性的必要器件,對監控來(lái)自自然界的輸入信號也必不可少。
模擬器件模擬器件是最早的操作器件。模擬器件已經(jīng)發(fā)展數十年,它是穩定電源、為高速晶體電路提供過(guò)濾和穩定性的必要器件,對監控來(lái)自自然界的輸入信號也必不可少。
在待機模式下,模擬器件實(shí)際上不消耗功率。模擬-數字轉換器(ADC)斷電快,在待機模式下,甚至可以被視為一種低功耗應用。
一旦加電,缺點(diǎn)即暴露無(wú)遺。一般來(lái)說(shuō),模擬器件在工作時(shí)需要的電流很大。例如,ADC工作時(shí)需要的電流達數百微安。另外,模擬器件(例如內部基準時(shí)鐘)會(huì )使啟動(dòng)時(shí)間增加幾毫秒,因為穩定模擬器件需要相對較大的外部電容。另一種經(jīng)常被集成的器件-集成溫度傳感器-通常是隨溫度改變的二極管電路,也需要相當大的電流。
在低功耗應用中有幾個(gè)需要考慮的標準。如果ADC有內部振蕩器,就沒(méi)有必要對其它系統振蕩器加電來(lái)進(jìn)行轉換。在這種情況下,處理器保持斷電狀態(tài),只有轉換完成時(shí)起,才需要開(kāi)始工作。像CPU一樣,我們可以通過(guò)縮短執行時(shí)間來(lái)降低功耗。ADC轉換的速度越快,器件進(jìn)入待機模式的速度越快。對于內部基準時(shí)鐘也是這樣?;鶞蕰r(shí)鐘啟動(dòng)和穩定得越快,轉換完成和模擬系統斷電的速度也越快。如果只是偶爾使用ADC,某些處理器允許采樣時(shí)鐘斷電,讓跟蹤電路保持加電。這樣ADC就能夠進(jìn)入較淺的休眠模式。這種功能的負面影響是,在進(jìn)行轉換前,需要花較長(cháng)時(shí)間來(lái)讓采樣和保持電路達到穩定。
轉換完成之后,有幾個(gè)μC集成了直接內存訪(fǎng)問(wèn)(DMA)或先入先出(FIFO)緩沖存儲器,能夠將多個(gè)轉換存儲在RAM中,而無(wú)需喚醒處理器。在一定數量的轉換到達之前,處理器會(huì )保持待機狀態(tài),而不是在每個(gè)轉換后喚醒處理器來(lái)將數據移入RAM,這樣就可以降低功耗。
許多低功耗μC內置內部模擬比較器,可以執行簡(jiǎn)單的模擬任務(wù)。有些制造商的比較器允許編程,可以通過(guò)延長(cháng)響應時(shí)間降低功耗。
起始點(diǎn)
總之,μC外圍設備的選擇是由終端應用最終決定的,因此我們應從全面評估系統功能及其功率要求著(zhù)手。許多處理器制造商宣稱(chēng)其器件具備低功耗工作能力,但是不同的應用對“低功耗”一詞有不同的定義。是需要大量集成的速度更高的處理器,還是需要具有極深度睡眠模式的速度更低的處理器,更多地取決于內嵌系統的要求,而不是內嵌處理器所謂的“低功耗”工作能力。
電度表相關(guān)文章:電度表原理
評論