構(gòu)成物聯(lián)網(wǎng) (IoT) 的眾多器件關(guān)聯(lián)在一起的其中一個(gè)原因是對(duì)低能耗的要求。為了滿足這一要求,需要在一個(gè)整體策略內(nèi),從多個(gè)層面進(jìn)行優(yōu)化。一個(gè)成功的設(shè)計(jì)不僅需要選擇低功耗的元器件,還要使用軟件以最有效的方式使這些元器件協(xié)同工作,從而節(jié)省可用的電池容量。即使是硬件和軟件實(shí)現(xiàn)的稍微變動(dòng),也會(huì)對(duì)整體能耗造成很大的影響。
大多數(shù) IoT 器件的核心是為高能效設(shè)計(jì)的微控制器 (MCU)。典型的低能耗 MCU 包括一系列智能外設(shè),其代表核心處理器來控制 I/O 和基本的系統(tǒng)功能。串行端口 (UART) 通常能夠自主地發(fā)送和接收數(shù)據(jù),而在處理器內(nèi)核上運(yùn)行的軟件只需在數(shù)據(jù)接收完成后從相應(yīng)的緩沖器中傳輸字節(jié)。通過在諸如 Silicon Labs 的 Gecko EFM32 系列的 MCU 等器件上提供鏈接的 DMA 傳輸,甚至是這種交互都可以減至最少。這種情況下,處理器內(nèi)核只需在收到完整消息后喚醒以檢查存儲(chǔ)器的內(nèi)容。
通過允許外設(shè)管理 I/O,MCU 可以在大部分時(shí)間里都處于休眠模式,這樣 MCU 的許多部分將關(guān)閉,而不會(huì)耗電。占空比是處于活動(dòng)模式的時(shí)間與處于休眠模式的時(shí)間之比。低占空比對(duì)于電池供電的 IoT 應(yīng)用非常重要,因?yàn)樾菝吣J絻H僅消耗微安量級(jí)的電流,而活動(dòng)模式通常會(huì)高出幾個(gè)數(shù)量級(jí)。
低占空比允許處理器內(nèi)核大部分時(shí)間處于休眠模式,僅在需要時(shí)喚醒以收集數(shù)據(jù)或進(jìn)行通信。實(shí)施低占空比策略的關(guān)鍵是了解軟件如何與硬件進(jìn)行交互。需要確定哪些功能導(dǎo)致 MCU 喚醒時(shí)間過長(zhǎng),然后盡可能更換或重寫。一直以來,在開發(fā)階段的早期很難實(shí)現(xiàn)這一點(diǎn),因?yàn)樾枰獙?duì)硬件成品進(jìn)行測(cè)試才能確定。
Silicon Labs 的 Pearl Gecko 入門套件及類似評(píng)估板包括高級(jí)能量監(jiān)視器 (AEM) 功能。當(dāng)與公司的 Simplicity Studio 中的高級(jí)工具結(jié)合使用時(shí),可以在軟件開發(fā)期間,提供極有價(jià)值的洞察信息,讓開發(fā)人員了解應(yīng)用需要多少能量。這些信息不僅顯示了休眠模式的有效性,還揭示功能層級(jí)的優(yōu)化。
圖 1: Pearl Gecko 入門套件板上 AEM 模塊的實(shí)施。
AEM 功能可監(jiān)控從通過 USB 總線獲取電力的板載 LDO 流出的電流。通常,USB 將用于支持調(diào)試及將軟件下載到目標(biāo) MCU。如圖 1 所示,當(dāng)板載開關(guān)設(shè)置為電池供電模式時(shí),將無法測(cè)量電流。
當(dāng)電源開關(guān)設(shè)置為 AEM 模式時(shí),板控制器收集的數(shù)據(jù)將傳送至 Simplicity Studio 工具,并可使用能量分析器進(jìn)行顯示。AEM 可以測(cè)量 0.1 μA 至 50 mA 大范圍(動(dòng)態(tài)范圍達(dá) 114 dB)的電流。這樣便可精確分析不同休眠模式狀態(tài)的影響以及活動(dòng)模式的功耗。
為了精確測(cè)量跨如此大范圍的電流消耗,可以將電流檢測(cè)放大器與雙增益級(jí)一起使用。放大器用于測(cè)量小型串聯(lián)電阻器上的壓降,而增益級(jí)使用兩種不同的增益設(shè)置進(jìn)一步放大該電壓,從而獲得兩個(gè)電流范圍。這兩個(gè)范圍之間的過渡發(fā)生在 250 μA 左右。在樣本導(dǎo)出之前,會(huì)在評(píng)估板控制器內(nèi)對(duì)數(shù)字進(jìn)行濾波和平均化處理。
每經(jīng)過一個(gè)計(jì)時(shí)器刻度,AEM 便會(huì)對(duì)電流進(jìn)行一次采樣和轉(zhuǎn)換,并通過 USB 將電壓和計(jì)時(shí)信息一起發(fā)送至開發(fā)工具,其每秒生成的電流樣本高達(dá) 6250 個(gè)。
由于能量分析依賴于跟蹤數(shù)據(jù)進(jìn)行關(guān)聯(lián),因此需要將 MCU 上運(yùn)行的代碼編譯為包含發(fā)送使用任意記錄格式調(diào)試 (DWARF) 數(shù)據(jù)的語(yǔ)句。發(fā)送至調(diào)試器的程序計(jì)數(shù)器 (PC) 樣本通過調(diào)試數(shù)據(jù)與目標(biāo)文件相關(guān)聯(lián),以找到在 MCU 上運(yùn)行的相關(guān)源文件、函數(shù)和 C 代碼行。這樣便可以將功率測(cè)量與各個(gè)功能和任務(wù)關(guān)聯(lián)起來。
在 Simplicity Studio 中使用分析工具時(shí),用戶可以訪問三個(gè)窗口。它們顯示了相關(guān)代碼、電流消耗圖和功能級(jí)別視圖。通過單擊電流圖上的任意點(diǎn),可高亮顯示代碼列表窗口中的部分代碼。這對(duì)應(yīng)于在給定時(shí)刻運(yùn)行且具有給定級(jí)別的電流消耗的實(shí)際代碼段。功能列表提供了每個(gè)功能的總能耗及其占整個(gè)應(yīng)用測(cè)量總量的百分比。如果用戶想要稍后分析信息,則可以將數(shù)據(jù)導(dǎo)出到文件,然后再將其導(dǎo)入以供進(jìn)一步分析。
為了說明如何使用 Simplicity Studio 中提供的功耗監(jiān)控工具,我們來看一個(gè)通過 UART 端口進(jìn)行通信的 MCU 示例。將數(shù)據(jù)從 Gecko 的 LEUART 緩沖器移至主存儲(chǔ)器以供稍后處理的一種簡(jiǎn)單直接的方法是定期輪詢外設(shè)。如果數(shù)據(jù)可用,狀態(tài)標(biāo)記 (LEUART_STATUS_RXDATAV) 將指示可以檢索數(shù)據(jù)。
圖 2: 采用串口輪詢的長(zhǎng)期高功耗。
在活動(dòng)處理器內(nèi)核上運(yùn)行代碼會(huì)導(dǎo)致產(chǎn)生幾毫安的恒定電流消耗。通過單擊圖表,可以高亮顯示產(chǎn)生此功耗的功能。為了節(jié)省能耗,MCU 需要避免使用輪詢來檢查數(shù)據(jù)可用性。為實(shí)現(xiàn)此目的,可以在數(shù)據(jù)獲取之間將處理器置于休眠狀態(tài),并在接收緩沖器數(shù)據(jù)變得可用時(shí)使用中斷來喚醒處理器。電流消耗在休眠期間明顯下降,而在中斷服務(wù)例程 (ISR) 運(yùn)行時(shí)則會(huì)達(dá)到峰值。在能量分析器窗口中準(zhǔn)確找到 ISR 后便可以看出這一點(diǎn)。
圖 3: 實(shí)施中斷服務(wù)響應(yīng)可以將具有較高電流消耗的時(shí)間段縮至更短。
但是,處理數(shù)據(jù)接收中斷后,代碼的其他部分可能顯示為因保持處理器處于活動(dòng)狀態(tài)而消耗了比預(yù)期更多的功率。單擊相關(guān)功能可顯示傳輸功能現(xiàn)在負(fù)責(zé)額外的功耗。雖然對(duì)傳輸功能進(jìn)行編程的一個(gè)簡(jiǎn)單方法是設(shè)置 while{} 循環(huán)以等待每個(gè)字節(jié)的傳輸完成,但這將使處理器的運(yùn)行時(shí)間超過必要的運(yùn)行時(shí)間。與接收端口的情況類似,可以將該循環(huán)替換為中斷(在每個(gè)字節(jié)傳輸完成后喚醒處理器)。現(xiàn)在處理器會(huì)在每幀字節(jié)之間進(jìn)入休眠模式,從而降低平均電流消耗。
圖 4: 在字節(jié)級(jí)傳輸之間進(jìn)入休眠可進(jìn)一步降低功耗。
Gecko MCU 上的 LEUART 模塊可以在深度休眠模式下工作。在此模式下,高頻振蕩器處于關(guān)閉狀態(tài),而低頻振蕩器(RC 或晶體)仍在運(yùn)行并為 LEUART 提供時(shí)鐘。利用這種模式可以使 ISR 處理之間的電流消耗降至微安量級(jí)。
圖 5: 使用深度休眠模式可提高低占空比應(yīng)用的能效。
通過將更多的緩沖器處理移至鏈接的 DMA 引擎,使其負(fù)責(zé)在發(fā)送或接收全部幀后觸發(fā)中斷,可以實(shí)現(xiàn)進(jìn)一步的改進(jìn)。這種策略可以使處理器內(nèi)核休眠更長(zhǎng)時(shí)間,且主要通過功能級(jí)別的數(shù)據(jù)分析任務(wù)來優(yōu)化功耗。
結(jié)論:
上述示例展示了電流監(jiān)控和調(diào)試工具在優(yōu)化 MCU 應(yīng)用能效方面的重要性。不是等到開發(fā)結(jié)束才能執(zhí)行能量?jī)?yōu)化,而在整個(gè)開發(fā)階段都可以執(zhí)行分析,開發(fā)人員可以清晰地看到迭代改進(jìn)。再加上高級(jí)休眠模式和無需長(zhǎng)時(shí)間的處理器干預(yù)即可運(yùn)作的智能硬件,工程團(tuán)隊(duì)可以輕松地實(shí)現(xiàn)能效方面的重大改進(jìn)。
-
mcu
+關(guān)注
關(guān)注
146文章
17123瀏覽量
350980 -
Silicon Labs
+關(guān)注
關(guān)注
11文章
328瀏覽量
62469 -
電流監(jiān)控
+關(guān)注
關(guān)注
0文章
39瀏覽量
11111
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論