我們已經進入了這樣一個時代,即開始期望和要求電池供電設備實現更多的功能。我的臺PDA的電池僅工作了,而且如果還啟動了時間提示功能,那么電池能量將會很快耗盡。今天,在相同的條件下,我的PDA能夠工作一周。這兩款PDA用的都是相同容量的鋰離子電池,那么是什么使情況發生了改變呢?答案很簡單,電路硬件在改進,電源管理技術在提高。相比之下,電池技術的進步反而是次要的。
PDA是系統復雜性迅速增加的一個好例子,正如它們的命運顯示的那樣,盡管電池性能幾乎沒有什么進步,但對這類電池供應用的要求卻在不斷增加。而要成功應對這一功能不斷增加的挑戰,固件或軟件工程師必須完全理解目前市場上的商業MCU處理內核開發工具,同時硬件設計師理解今天市場上商用解決方案的效率。
模擬和數字部分要協同努力
如果你能夠很好地理解MCU的硬件配置和手頭上的開發工具,那么你就能夠降低功耗,從而能夠再添加一些應用功能。降低功耗的一個方向是控制嵌入式應用的電源電壓幅度。你可能需要在程序執行過程中的某些點上與真實模擬世界進行交互,如果的確有這個需要,你的設計中必須包含模擬電路。對模擬電源電壓的要求要高于對數字電源電壓的要求。要記住,模擬噪聲容限比數字的小得多,而且模擬噪聲水平不隨工作電壓的降低而減小。
例如,在5V工作電壓狀態,12位AD轉換器能進行優異可靠的轉換。同樣的12位AD轉換器,在2V工作電壓狀態下,不受噪聲影響位數的輸出會變少。這是因為,LSB(有效位)的位數變小了,而噪聲大小不變。這個問題的解決方案是,當僅進行模擬操作時,采用更高的電源電壓;而當僅進行數字操作時,切換為更低的電源電壓。
圖1展示了一個簡單的、基于MCU的電池供電系統,是圍繞Microchip的PIC18F1320閃存MCU而設計的。PIC18F1320具有多種空閑模式以及雙時鐘啟動功能等特性,對低功耗設計很有幫助。
在硬件方面,為了追求更低功耗表現,MCU的外部外設和內部外設都在不斷發展。MCU的外部外設可通過降低芯片工作電壓及優化電路設計來降低功耗。圖1所示的簡單例子,就整合了低功耗運放、AD轉換器以及可調穩壓電荷泵。
圖1中,MCP6041型運放采用CMOS工藝制造,這種運放可以將工作電壓降的很低。MCP6041運放由Microchip制造,帶寬為14 kHz,電流為600 nA,供電電壓在1.4V至5.5V之間。降低的工作電壓與降低的靜態電流結合,為電池供電設備的電源管理提供了良好的解決方案。
集成了內部或外部AD轉換器的MCU,轉換器的拓撲結構比IC設計創新對MCU功耗的影響更大。例如,同Δ-∑AD轉換器相比,SAR(逐次逼近寄存器)A/D轉換器的轉換時間和消耗電流之比就低得多。在電池供電應用中往往采用SAR模式的A/D轉換器,除非是需要分辨率和精度更高的應用。
圖1的電源是可調的。5V電壓用于模擬處理相得益彰,2V電壓用在數字電路恰倒好處。圖1的可調節電源轉換器在低輸出電流、鋰離子電池供電(4.2V到2.8 V)情況下,具有很高的效率。基于這些原因,該設計采用了一款穩壓可調的電荷泵式DC/DC轉換器(型號為MCP1252-ADJ)。
對不同的操作控制采用不同的工作電壓僅是低功耗設計工作的一半。如時刻將低功耗銘記于心,就會希望在維持MCU某些部分工作的同時,關斷其它部分。例如,你可以獨立運行MCU中的A/D、D/A轉換器或USART通信接口,這些部分僅需局部供電就可以正常工作。
對外接設備的能耗優化同樣重要。此外,將MCU內、外部的外設與MCU的編程能力結合考慮,會切實降低系統功耗。例如,在MCP1252-ADJ中,可以把一個新的電路切換到電阻反饋系統中,這樣MCU就能夠控制電壓。為了確保模擬電路的工作條件,需要電荷泵輸出高電壓。而MCU的數字電路部分在較低的電壓下就能工作。如,PIC18F1320的輸出電壓為2V至5.5V。通過直接對比電荷泵的兩種輸出電壓就可計算節省的功率。如果把MCU外部外設的供電切斷,加在I/O端口上的供電電壓又比較低,這樣就可以進一步降低功耗。
控制時鐘
當設計師試圖降低嵌入式系統電路的整體功耗時,常常忽略的一個問題就是:在MCU脫離睡眠模式時,如何對時鐘進行管理。
如圖2所示,一個MCU可以有多個時鐘源,明顯的是一個外部時鐘源。在此例中,可以將晶振、陶瓷諧振器、內部控制器時鐘或一個時鐘發生器連接到適當的器件管腳。除了這些生成時鐘信號的部件外,MCU可整合前后分頻FLL(鎖頻環)。前后分頻器對輸入時鐘進行分頻,FLL還可以倍頻輸入時鐘頻率。
在RTOS(實時操作系統)中,當系統短時喚醒后又進入長時間的睡眠狀態,配備時鐘管理機制就顯得至關重要。如在喚醒時間小于1秒的系統中采用晶振或壓電陶瓷諧振器,從睡眠模式喚醒到開始執行指令之間會有一段延時。MCU在此延時和啟動期間不會執行指令,而應用電路仍會消耗功率。
例如,圖3顯示了4 MHz晶振的典型啟動時間。在圖3中顯示該時間大約為450毫秒。假設該晶振是MCU連接的時鐘源,分配的程序執行時間是1秒,那么,實際的程序執行時間將比預計的長45%。在時鐘啟動期間,電路在消耗電能,但又不執行代碼。
在此類應用中,選用內時鐘來執行程序更為明智。內時鐘幾乎與電源同時啟動,對4MHz的內時鐘而言,幾微秒的啟動時間是很正常的。圖4顯示了內時鐘的啟動時間。
與圖3所示的4MHz晶振相比,圖4所示的內時鐘啟動速度約有5萬倍的提高。從這個數據人們或許可以得出結論,針對此類應用,內時鐘是恰當的選擇。其實,內時鐘的功耗與晶振功耗大體相當,只要不要求MCU運行諸如USART通信或定時一個脈沖這類對時間有苛刻要求的操作,選用外時鐘源也是可行的。
可進行評測的第3個時鐘是壓電陶瓷諧振器。圖5顯示了諧振器的啟動時間。
有一個可供使用的時鐘系統優于上述三種時鐘源的任一種,的做法是迅速確定電路是否需要時鐘。如果MCU需要時鐘,則啟動外接晶振或陶振;若非如此,則關斷。MCU從睡眠模式喚醒后,要迅速做出決定。如能將內時鐘與外接晶振或陶振結合在一起,就能迅速做出這樣的決定。用兩個時鐘源替代單一時鐘源,能夠顯著降低功耗。
該技術被稱為“雙時鐘啟動策略”,也就是說在硬件/固件配置中,MCU使用了2個時鐘。在睡眠模式,2個時鐘全部關斷。喚醒時,內時鐘啟動并迅速判定是否需要晶振。如需要晶振,內時鐘仍將持續執行程序直至晶振啟動。此時,MCU將時鐘源切換為晶振,并關斷內時鐘。
從數字角度處理睡眠模式
低功率設計成功的關鍵在于有一個具有多種睡眠模式和時鐘模式的MCU。用戶可以通過使MCU進入休眠或空閑模式來降低系統功耗。在空閑模式,MCU關斷CPU,但允許10位A/D轉換器這樣的功能繼續工作,而睡眠模式則徹底關斷MCU。
當MCU時鐘進行狀態切換時,MCU內的不同邏輯門都會吸取電流。檢查MCU耗電時,應首先檢查時鐘的功耗。通過對系統各種時鐘源進行比對,可以發現,與同頻率的晶振、振蕩器或陶振相比,內部振蕩器功耗。
某些MCU有3種基本的工作模式。種是完全工作模式,所有模塊都上電工作。第二種是空閑或等待模式,MCU外設工作,而MCU不工作。第三種,同時對低功耗的電池供電來說也是重要的一種,就是睡眠或停止模式。睡眠模式下設備完全停止功耗。睡眠模式通常關斷系統時鐘,如果也一同切斷外部時鐘源,系統功耗會進一步降低。
以下是完善低功耗設計的一些建議。將不用的I/O管腳拉高或拉低;只要可能,盡量采用內振蕩器,它們是低功耗的選擇;切斷所有不用的外設,例如PWM(脈寬調制器)、ADC、USART等;在程序中盡量用查詢表代替CPU運算;檢查所有外圍器件的功耗,例如,計算電路全部外圍電阻的壓降;降低驅動串行EEPROM或外圍模擬器件等外設的I/O管腳驅動電平。點亮的LED功耗可能出乎你的意料,一只小小的LED能使你的低功耗設計努力前功盡棄。總之,一定要注意電流消耗。
本文小結
低功耗設計對電池供電的應用來說至關重要。MCU的可編程性能對降低功耗大有裨益,通過調節電荷泵穩壓源的輸出電壓可做到這點。其次關斷不使用的非關鍵外設。還有就是對時鐘系統進行控制,以得到的性能/功耗比。集成電路制造商在不斷降低器件靜態電流和供電電源的同時,一直在努力改進這些外設器件的動態性能。而MCU制造商則通過為MCU增加諸如空閑和睡眠等模式來降低長時間工作時的平均功耗。將低功耗外設與MCU的各種降耗模式結合在一起,將為低功耗的電池供電設備提供更多的選擇。