作者:?ivind Loe,Silicon Labs微控制器產品高級營銷經理
即使是在諸如物聯網應用的無線連接這種主導功耗的事件中,讓盡可能多的進程自主運行,也可大大提高電池壽命。降低功耗一直是微控器(MCU)市場的一個主要關注點。超低功耗MCU現在可以大大降低工作模式和深度睡眠模式下的功耗。這種變化的效果是顯而易見的,它大大提高了我們日常嵌入式應用中的電池壽命,并且提供了在未來使用能量收集的可能性。
然而,要基于新型MCU降低功耗,開發人員必須考慮到許多因素,對此Silicon Labs特別撰寫一篇技術文章:“以0 MIPS運行你的嵌入式系統”,幫助開發人員了解如何利用新型MCU中外設的自主運行,通過更接近以“0”MIPS運行,來實現數據手冊中所承諾的低功耗。
低功耗為嵌入式系統研發關鍵
對于在功耗敏感型物聯網(IoT)應用中所使用的新型MCU和無線MCU(WMCU)來說,執行代碼時的功耗已經明顯下降,甚至達到40μA/ MHz以下。使用這些低功耗規格,您可能會想知道為什么我們需要睡眠模式,為什么不以500 kHz運行您的代碼來實現20μA的電流消耗,并且允許您的應用使用電池運行10年?其實事情并不是這么簡單的。
睡眠模式下的功耗在過去幾年中也有顯著的改善。我們現在可以看到深度睡眠模式下的功耗低于2μA,而一些睡眠模式下的功耗甚至低于50 nA。您可能會覺得擁有這些模式設計出來的系統功耗自然很低,然而事實并非如此,應用能否利用睡眠模式才是關鍵。
為什么工作模式是好的...也是壞的
使用MCU或WMCU的最直接的方法是讓CPU管理一切。例如,您可以啟動模數轉換(ADC),將一些數據放入通信接口(如USART傳輸)中,讀取ADC數據,并對數據做出一些處理,所有一切都由CPU直接控制。直接的CPU控制簡化了開發,但其成本是:每當外設或外部事件需要處理時,MCU都將處于工作模式,從而使功耗大增。
近期,一些數據手冊顯示工作模式的電流是40μA/MHz甚至更低,它們通常是高時鐘頻率下的參數,低頻下會變大,進而導致絕對功耗變大。這是因為工作模式下頻率和功耗不是線性關系。功耗由如下兩部分組成,其中第二部分和頻率聯系不緊密:
1.處理器本身,它是和頻率按比例變化的。
2.有基礎工作電流的模塊,比如低壓差線性穩壓器(LDO),欠壓檢測器(BOD)等。
要想降低功耗,應盡可能地減少MCU在高功耗的工作模式下運行,盡可能地關閉外設,讓CPU盡可能多地睡眠。
功耗預算
對于受限于能源的電池供電型應用來說,要知道能源消耗在哪里才能進行優化。表1顯示了一個傳感器檢測無線應用的功耗預算,它的功耗優化不太好。
通過平均計算每個組件的功耗來測量或估計功耗。如果CPU占空比為兩個百分點,并且在60μA/ MHz時工作在20 MHz,則CPU的消耗為24μA。
請注意,表1所示的功耗預算是根據功能劃分的。例如,基礎睡眠電流包括一個低頻振蕩器和一個實時時鐘(RTC)來對系統事件進行定時從而允許深度睡眠。
傳感器測量部分是由一個0.5kHz的中斷觸發,中斷之間深度睡眠。低功耗藍牙每秒鐘都要把數據發出去,這是個很普遍的低功耗應用。最后,還有一些非MCU部分的功耗。MCU可能無法直接控制這些模塊中的一部分,包括電源管理外設,在這個例子中,MCU是直接控制ADC對傳感器進行采樣,如果不是的話,傳感器電流將完全是圖片中的數據。
對于這個例子,傳感器的持續電流大約是390μA,但是通過調整占空比,每個ADC采樣僅僅使用了10 μs的時間,從而可以大大降低功耗。
表1 目標應用的功耗預算
如果該無線應用由具有225 mAh容量的CR2032電池供電,則在61.6μA功耗下操作時其壽命約為0.4年。事實上,我們可以做得更好。
改善現狀
我們來看看降低MCU傳感器測量電流的方法。雖然此示例涉及ADC測量外部傳感器,但相關示例可能集中在一系列不同類型的測量以及與外部環境的交互上。在這兩種情況下,MCU和外部環境之間都會發生頻繁的交互。
實現低功耗傳感的最簡單的方法是讓CPU盡可能多地處于睡眠模式,只在采樣時喚醒,并盡可能快地重回睡眠模式。對于非常低的采樣率來說,這種方法很好,但是從圖1可以看出,當每秒采樣次數增加時,系統的功耗也會顯著增加:
圖1 采用中斷進行ADC采樣,顯示出隨著每秒采樣次數的增加,功耗也在增加
許多類型的應用必須具有頻繁的活動,同時還需要保持電池壽命。超過1kHz的活動率并不是聞所未聞,這時候就需要采取措施來保持低功耗。
圖2顯示了傳感器管理的兩種附加方法。外設反射系統/直接存儲器訪問(PRS / DMA)方法使CPU在完全不參與的情況下在深度睡眠模式進行ADC采樣。而不是RTC喚醒CPU,然后CPU啟動ADC進行采樣。RTC通過事件系統(如Silicon Labs的PRS)將事件直接發送到ADC。ADC在接收到此事件時自動啟動ADC轉換。轉換完成后,DMA在這種情況下也能夠從深度睡眠模式下運行,從ADC獲取數據并將其存儲在RAM中。 PRS / DMA方法的好處是顯著降低了電流消耗。在1 kHz時,系統電流從58μA降低到25μA。
圖2 該ADC采樣圖顯示了各種工作方式下的功耗
驅動ADC的更有效的方法是PRS /比較器(CMP)方法,其中RTC仍然通過PRS系統觸發ADC,但在這種情況下,ADC立即使用比較功能對樣本進行評估,除非發現有需要的數據,否則不使用DMA或CPU。這種方法能夠實現1 kHz采樣率時系統電流只有3.5μA。
動態ADC比較器
使用PRS/CMP方法,大部分采樣數據都被丟棄,CPU只關注需要處理的數據。當信號變化緩慢時,或者需要特定的信號時,這種方法很有效。
當使用比較功能監視信號時,一種方法是測量信號,然后根據這個信號設置閾值,只要信號在閾值范圍內,那么當ADC測量信號時,系統可以保持在深度睡眠模式,當然CPU也保持在睡眠模式。
然而,如果信號發生變化,并且超過閾值,系統將知道該信號,并采取適當的措施。在回到睡眠模式之前,ADC閾值將重新配置以適應新的信號值,因此系統可以再次進入睡眠模式,直到下一次信號發生變化。圖3顯示了這種技術的示例。圓點表示ADC樣本,箭頭表示每當CPU被喚醒時,它將記錄本次變化并重新配置閾值。
圖3 當信號超過閾值時,CPU中斷動態修改ADC的閾值
使用這種方法,系統實際上將丟失一些信號準確性,因為信號可以在觸發器之間的閾值范圍內任意移動。然而,益處是功耗顯著降低。
如果系統的目標是測量信號的動態值,則PRS / DMA驅動方法是理想的,因為它使所有數據可用,同時仍然可以提供非常有益的節能特性。
自主工作子系統
ADC示例只是眾多通過睡眠模式降低應用功耗的方法之一。專注于低功耗應用的新型MCU(如Silicon Labs的EFM32 Gecko MCU)擁有大量功能,可在深度睡眠模式下運行,從而實現高水平的自主行為。
例如,Gecko MCU的LESENSE(低功耗傳感)模塊可以自動地、周期性地采樣多達16個通道,完全不需要CPU參與。它可以實現高頻率檢測且充電1次就能工作10年。
在許多情況下,單個外設可以自主地履行其職責,但也有許多需要交互的情況。在這種情況下,我們可以利用諸如在當前一些新型MCU中存在的PRS系統這樣的外設互連。這些外設互連允許多個外設連接以自主執行更復雜的任務。
圖4顯示了這樣的自主系統示例,其使用事件鏈來執行其功能:
1.RTC以給定的時間周期性地發送PRS信號至ADC以啟動轉換。
2.RTC同時啟動外部傳感器,這樣在測量時信號就已經準備好了。
3.ADC完成采樣并通知DMA,DMA把數據傳送到RAM。
4.來自ADC的完成PRS信號關閉外部傳感器。
5.當緩沖器滿時中斷喚醒CPU,或者超過ADC閾值時中斷喚醒CPU。
6.可選項:PRS看門狗監視事件循環,確保它保持運行。
DMA可以從圖4所示系統中拿走,通過設置ADC的比較功能來做到更省電。
圖4 該自主ADC系統包含周期工作的傳感器和看門狗
這些自主子系統具有以下幾個主要優點:
1.顯著節能。
2.即使CPU負載很重時傳感器依舊可以穩定工作。
缺點是,并不是所有的MCU都支持這種類型的操作,并且在設置交互時,您會希望像硬件設計人員一樣思考。總之,對于許多電池供電型應用來說,其優點明顯多于缺點。
結論
通過利用各種節能技術,當傳感器測量時,CPU幾乎完全脫離工作。對于表1所示的無線應用,這將使總平均功耗從61.6μA降低到37.6μA,降低了39%,從而使電池壽命從大約5個月延長到8個月,增加了64%,或者可以允許電池尺寸減小以改善系統外形。
對于非無線應用,節能將更加顯著。表1中的示例,能耗將從29.6μA降低到5.6μA,由CR2032電池供電,理論上壽命將從10個月延長到4.6年。
想學更多嵌入式課程,請掃描下圖二維碼,馬上學習!
-
mcu
+關注
關注
146文章
16667瀏覽量
347783 -
嵌入式系統
+關注
關注
40文章
3520瀏覽量
128805 -
mips
+關注
關注
1文章
237瀏覽量
47581 -
SiliconLabs
+關注
關注
2文章
50瀏覽量
24453
原文標題:【干貨】以0 MIPS運行你的嵌入式系統
文章出處:【微信號:SiliconLabs,微信公眾號:Silicon Labs】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論