如何降低需要監(jiān)視外部輸入的MCU系統(tǒng)功耗
目前幾乎沒(méi)有應(yīng)用不需要降低能耗。對(duì)于便攜設(shè)備和電池供電設(shè)備的設(shè)計(jì)師來(lái)說(shuō),這是影響所設(shè)計(jì)產(chǎn)品的最佳性能與可用性的一個(gè)約束條件。在美國(guó)國(guó)內(nèi),諸如能源之星(EnergyStar)等計(jì)劃使得消費(fèi)者能夠更好地理解這個(gè)問(wèn)題,即不僅要降低設(shè)備正常使用時(shí)的功耗,而且要降低待機(jī)模式下的功耗。越來(lái)越多的人認(rèn)識(shí)到能源是一種寶貴且有限的資源。
影響系統(tǒng)總體能耗的主要因素之一是位于系統(tǒng)核心的微控制器(MCU)的性能。因此,設(shè)計(jì)師一直致力于盡最大可能地減小MCU功耗,他們主要關(guān)注三個(gè)關(guān)鍵領(lǐng)域。
首先是工作能耗,即在給定能量輸入條件下MCU能夠提供的有用處理工作量,顯然這是非常重要的??梢杂妹空缀掌?MHz)的電流消耗來(lái)衡量MCU的這個(gè)指標(biāo),32位Cortex M3處理器的基準(zhǔn)數(shù)是150μA/MHz,Energy Micro公司的EFM32 Tiny Gecko MCU就能達(dá)到這個(gè)指標(biāo)。
此外,處理器也需要各種消耗電流盡可能少的睡眠和深度睡眠模式。同樣舉Gecko系列處理器的例子,停止模式下的電流約為20nA。
然而在實(shí)際應(yīng)用中,影響功耗的第三個(gè)因素也許是最重要的。如果處理器在睡眠狀態(tài)沒(méi)法監(jiān)視外部事件以便知道何時(shí)蘇醒,那么睡眠模式幾乎毫無(wú)用處。因此在實(shí)際使用中,大多數(shù)MCU的大部分時(shí)間處于中間的“等待輸入”模式。
這種情形的例子有很多。智能手機(jī)只有在來(lái)電或有短信時(shí)、或者用戶(hù)通過(guò)人機(jī)界面(HMI)傳感器做一些操作時(shí)才需要被喚醒。智能水表的“正常”狀態(tài)則是等待水開(kāi)始流動(dòng)。
所有這些情況下的常規(guī)解決方案是,MCU定期蘇醒過(guò)來(lái)‘檢查’其傳感輸入并進(jìn)行一些運(yùn)算,以便發(fā)現(xiàn)是否有任務(wù)要做。這種方法面臨許多挑戰(zhàn)。傳感器測(cè)量一般要求系統(tǒng)產(chǎn)生專(zhuān)門(mén)的激勵(lì)和采樣圖案,例如,電容傳感器需要用正弦波輸入進(jìn)行激勵(lì)。在功耗和系統(tǒng)響應(yīng)度之間最好有個(gè)權(quán)衡:手機(jī)“輪詢(xún)”觸摸屏界面次數(shù)太少的話(huà)(比如每隔幾秒)就會(huì)給人反應(yīng)遲鈍的感覺(jué)而難以使用。而喚醒過(guò)程本身的代價(jià)就可能比較高,使得從睡眠模式到工作模式的轉(zhuǎn)換簡(jiǎn)直就是無(wú)用功。設(shè)計(jì)師可能會(huì)發(fā)現(xiàn),讓MCU處于較高程度的喚醒狀態(tài)比費(fèi)力管理這些轉(zhuǎn)換要高效得多。
一種更好更高效的方法是選擇擁有更加自治的外設(shè)與傳感器輸入系統(tǒng)的MCU:這樣,CPU不必醒過(guò)來(lái)做每次測(cè)量。Energy Micro公司的EFM32 Gecko系列MCU就可以提供這樣的系統(tǒng),它整合了低能耗傳感器接口(LESENSE)和外設(shè)反射系統(tǒng)(PRS),不需要CPU干預(yù)就能實(shí)現(xiàn)與I/O元件的交互。因此EFM32系列MCU可以在睡眠模式下實(shí)現(xiàn)許多功能,比如容性觸摸喚醒、金屬物體檢測(cè)或阻性傳感器監(jiān)視等功能,消耗電流不到1.2μA。
外設(shè)反射系統(tǒng)(PRS)(圖1)允許片載“產(chǎn)生器”外設(shè)產(chǎn)生的信號(hào)被路由到其它“消費(fèi)”外設(shè),然后再由那些消費(fèi)外設(shè)根據(jù)這些輸入完成相應(yīng)的操作。“產(chǎn)生器”信號(hào)包括模擬比較器和GPIO電平輸出、來(lái)自ADC和DAC的“轉(zhuǎn)換完成”信號(hào)、來(lái)自計(jì)數(shù)器/定時(shí)器的上溢/下溢信號(hào)以及來(lái)自UART或USARTR “發(fā)/收完成”狀態(tài)消息。反射的“消費(fèi)”外設(shè)包括DAC/ADC觸發(fā)器、定時(shí)器輸入和UART/USART使能輸入。
圖1: 經(jīng)過(guò)配置的EFM32外設(shè)反射系統(tǒng)可以根據(jù)TIMER0溢出信號(hào)啟動(dòng)一次ADC轉(zhuǎn)換,同時(shí)提供模擬比較器輸出,作為T(mén)IMER1中比較/捕捉通道的輸入。
PRS有8個(gè)通道,每個(gè)通道都有一個(gè)邊沿檢測(cè)器,可以用來(lái)從電平信號(hào)產(chǎn)生邏輯脈沖。每個(gè)通道的兩個(gè)寄存器(PRS_SWPULSE和PRS_SWLEVEL)允許每個(gè)輸出被驅(qū)動(dòng)到軟件定義的電平或邏輯‘1’。
MCU的LESENSE接口建立在這種自治外設(shè)原理之上,允許MCU在不到1?A的睡眠模式下監(jiān)視多達(dá)16個(gè)外部無(wú)源(電阻、電容或電感)傳感器。這種MCU整合了模擬比較器和DAC,并受運(yùn)行于32kHz時(shí)鐘源的定序器控制。比較器輸出可以用于計(jì)數(shù)、比較或直接用作中斷。要想實(shí)現(xiàn)精確測(cè)量,可以將DAC用作比較器的參考基準(zhǔn)。
定序器控制哪個(gè)引腳連接到比較器、比較器工作了多長(zhǎng)時(shí)間以及何時(shí)應(yīng)該將輸出送去計(jì)數(shù)或比較。也可以在比較器工作之前或工作之中利用DAC電壓或GPIO引腳進(jìn)行激勵(lì)。在測(cè)量之后,計(jì)數(shù)器或比較器輸出被緩沖和存儲(chǔ),以供隨后的處理。
在掃描完成后,結(jié)果將被傳送給一個(gè)低功耗的解碼器,這個(gè)解碼器具有可配置的“下一個(gè)”狀態(tài)和觸發(fā)條件。這樣便可能捕捉許多傳感器讀數(shù)和組合,并且僅在匹配一段時(shí)間內(nèi)的圖案后才喚醒CPU(圖2)。例如,當(dāng)溫度和濕度傳感器都達(dá)到各自的閾值時(shí)才觸發(fā)喚醒,或者當(dāng)壓力傳感器連續(xù)觸發(fā)10次時(shí)才喚醒CPU。
圖2: 基于模擬事件的條件喚醒。
傳感器結(jié)果也能經(jīng)過(guò)PRS搭建更復(fù)雜的系統(tǒng)。這樣就可以從邏輯上組合多個(gè)GPIO引腳來(lái)觸發(fā)一次喚醒,或使用解碼器解碼串行傳送的數(shù)據(jù)。
舉例來(lái)說(shuō),水表中旋轉(zhuǎn)葉片的運(yùn)動(dòng)可以用LESENSE來(lái)測(cè)量,而用正交計(jì)數(shù)器計(jì)數(shù)的旋轉(zhuǎn)葉片是通過(guò)PRS連接LESENSE的。比如經(jīng)過(guò)10次旋轉(zhuǎn)后,CPU可以被喚醒以更新顯示器和使用統(tǒng)計(jì)數(shù)據(jù)。在使用傳統(tǒng)MCU時(shí),比較器的所有排序和控制都需要CPU參與,而通過(guò)LESENSE和PRS處理可以使CPU芯片處于深度睡眠模式。
容性檢測(cè)示例
容性檢測(cè)在控制面板和遙控等HMI應(yīng)用中很常見(jiàn)。原理是在RC振蕩器電路中包含容性傳感器。當(dāng)手指觸摸傳感器時(shí),電容值發(fā)生改變,進(jìn)而改變振蕩器電路的基頻。
這種安排可以通過(guò)將LESENSE檢測(cè)引腳直接連接到外部設(shè)備來(lái)實(shí)現(xiàn)。來(lái)自比較器輸出的振蕩信號(hào)被送到這個(gè)外設(shè),每個(gè)上升沿用于增加計(jì)數(shù)值。在經(jīng)過(guò)一段設(shè)定的時(shí)間后,LESENSE將計(jì)數(shù)器值傳送給結(jié)果緩沖器,然后復(fù)位計(jì)數(shù)器。然后緩沖的結(jié)果將與閾值電平進(jìn)行比較:由于手指觸摸會(huì)導(dǎo)致更低的振蕩頻率和更小的計(jì)數(shù)值,因此LESENSE只在計(jì)數(shù)值低于閾值時(shí)才會(huì)喚醒CPU。
以這種方式實(shí)現(xiàn)的容性檢測(cè)功能所消耗的電流受幾種因素的影響,包括容性覆膜的厚度和采樣頻率。
經(jīng)驗(yàn)表明,對(duì)于5mm的丙烯酸覆膜和5Hz的采樣頻率,每個(gè)觸摸板增加的功耗約500nA。對(duì)于4鍵觸摸、采樣頻率為5Hz的應(yīng)用來(lái)說(shuō)總功耗大約是3?A。沒(méi)有采樣時(shí)的靜態(tài)功耗不到1μA。為了改善用戶(hù)體驗(yàn),在第1次觸摸事件后采樣速度可以增加到10Hz,此時(shí)總功耗為5μA。
計(jì)算旋轉(zhuǎn)次數(shù)
正如我們已經(jīng)觀察到的那樣,旋轉(zhuǎn)計(jì)數(shù)是LESENSE與PRS組合可以顯著降低功耗的另外一種應(yīng)用。旋轉(zhuǎn)計(jì)數(shù)有完全不同的應(yīng)用,通常是在控制和反饋系統(tǒng)中。
典型系統(tǒng)(圖4)可以使用帶兩個(gè)線(xiàn)圈的感性傳感來(lái)實(shí)現(xiàn),方法是將兩個(gè)線(xiàn)圈靠近一個(gè)旋轉(zhuǎn)輪放置,旋轉(zhuǎn)輪的一半則用金屬覆蓋。LESENSE足夠快的采樣每個(gè)線(xiàn)圈,以捕捉經(jīng)過(guò)的輪子金屬部分。每次采樣的輸出通過(guò)PRS系統(tǒng)饋送給正交計(jì)數(shù)器。如果計(jì)數(shù)器在相同方向達(dá)到定義好的旋轉(zhuǎn)次數(shù)(圖4中的3次),它產(chǎn)生一個(gè)中斷,這個(gè)中斷就可以用來(lái)喚醒CPU。
圖3: 容性傳感器。
圖4: 計(jì)算旋轉(zhuǎn)次數(shù)。
本文小結(jié)
給MCU提供感知外部世界的功能同時(shí)讓CPU處于睡眠模式的技術(shù)是降低能耗的重要手段。Energy Micro LESENSE接口可以幫助EFM32微控制器在深度睡眠模式下監(jiān)視許多不同種類(lèi)的模擬傳感器。在低頻時(shí)鐘源下運(yùn)行的LESENSE可以在不到1μA的睡眠模式下監(jiān)視多達(dá)16個(gè)傳感器。典型的平均電流消耗約1.2μA。
該方案可以應(yīng)用于各種容性、感性或阻性檢測(cè)、旋轉(zhuǎn)計(jì)數(shù)、GPIO狀態(tài)解碼或類(lèi)似應(yīng)用。LESENSE還有一個(gè)完全可配置的解碼器,它能評(píng)估傳感器狀態(tài),并在傳感器輸出的特定組合發(fā)生時(shí)或檢測(cè)到某段時(shí)間內(nèi)的匹配圖案時(shí)喚醒CPU。綜上所述,具有能源友好的傳感器實(shí)現(xiàn)永無(wú)止境,而可能性?xún)H限于設(shè)計(jì)師的想像力。