1. 程式人生 > >你選的低功耗MCU是不是真省電?看後請自測

你選的低功耗MCU是不是真省電?看後請自測

http://www.eeworld.com.cn/mp/DigiKey/a23243.jspx

對於電池供電的互連裝置而言,能耗是至關重要的,降低能耗可以最大程度地延長電池的更換時間,甚至讓裝置在沒有環境能量源的情況下執行。雖然很多嵌入式系統開發人員精通優化程式碼,但要為物聯網 (IoT) 裝置節省能源,還需要更加全面的方法。

此類方法不僅必須要考慮儲存容量、MCU效能和功耗的因素,還必須考慮到無線電、類比電路、電源轉換器和感測器。雖然所有這些因素都會影響系統的整體能耗,但開發人員最好控制的主要因素是微控制器。

本文將描述如何為物聯網裝置選擇低功耗微控制器,以及在板載外設方面要注意哪些問題。本文還將演示如何使用電源監測工具,並提供達到最佳功率及效能的技巧和訣竅。

選擇低功耗微控制器架構

要選擇低功耗微控制器,首先必須確定微控制器應該使用的合適處理器核心。目前行業中有很多專有微控制器核心,但從ARM Cortex-M微控制器入手是非常合理的選擇。業界的多家供應商都支援這些微控制器核心,從而形成了包括技術支援和資源的穩定生態環境。

為了最大程度地降低能耗,必須及早考慮到兩大因素:效能和能效。對於微控制器而言,這兩個指標很難量化,但開發人員可以使用兩種基準標準:EEMBC的CoreMark和ULPmark。

CoreMark用於測量微控制器的處理能力,這個值越高,處理能力就越強。例如,STMicroelectronics STM32L053處理器可使用STM32L053 Nucleo 開發板進行測試,它的CoreMark值為75.18。另一款 STMicroelectronics器件STM32F417的CoreMark值為501.85。初看起來,開發人員可能認為使用STM32F417是可取的,因為它的效能似乎出色得多。但是,在做出決定之前,還要考慮另外幾個因素。

圖1:STMicroelectronics的STM32L053 Nucleo板採用ARM Cortex-M0+核心,專門針對低功耗、資源受限的應用而設計。(圖片來源:STMicroelectronics)

首先,CoreMark只是告訴開發人員它能夠在一秒鐘內執行多少次基準測試迭代。在不同時鐘速率下執行的處理器將產生差異很大的值。對處理能力進行比較的更好方式是比較CoreMark/MHz。在本例中,STM32L053處理器得出的結果為2.35,而STM32F417得出的結果為2.98(資料來源:EEMBC)。兩款處理器在效率方面非常接近。

其次,開發人員必須關注核心架構。STM32L053採用ARM Cortex-M0+,該處理器經過優化,具有很低的功耗,而且除錯模組的數量最少。此外,它還捨棄了高效能處理器上的所有附加部件,這些也是功耗最高的部件。

而STM32F417採用ARM Cortex-M4,該處理器是作為高效能處理器設計的,在168MHz而不是32MHz的時鐘速度下執行。該時鐘速度達到了STM32L053的五倍,但CoreMark/MHz值僅提高了26%。

ULPmark可測量微控制器執行操作(例如計算和儲存器操作)的效率高低。最新版本甚至可測量外設效率,讓開發人員能夠很好地從能源利用的視角,瞭解處理器的整體效率如何。

尋找合適的外設組合

微控制器核心只是開發人員在選擇低功耗微控制器時應該考慮的第一個因素。應該考慮的另外一個因素是板載外設。CPU的能耗大小在很大程度上取決於外設。開發人員希望確保他們選擇的器件採用儘可能自動化的低功耗外設。

首先,開發人員應該尋找提供了不止一個直接儲存器訪問 (DMA) 通道的器件。利用DMA,開發人員能夠在微控制器內部傳輸更多資訊,而無需CPU干預。這意味著CPU能夠騰出手做其他工作,例如執行應用程式程式碼,或者關閉或進入深度休眠模式以節省能耗。同時,DMA通道還用於將資料從外設傳輸到儲存器,從儲存器傳輸到外設,甚至在儲存器的不同區域之間進行傳輸。

Texas Instruments 的MSP430FR5994 就是專為低功耗工作設計的器件的很好例子,MSP430FR5994 Launchpad開發套件 包括了這種器件。MSP430FR5994帶有內建的DMA 控制器,它有六個單獨的通道,可以同時在後臺工作。

圖2:Texas Instruments的MSP430FR5994 Launchpad開發套件包含多個低功耗外設,例如用於訊號處理的六通道DMA控制器和低功耗加速器,另外還提供多種低功耗模式。(圖片來源:Texas Instruments)

另一個例子是尋求多種低功耗模式。新型微控制器將提供多種功耗模式,可將CPU和外設置於不同狀態,從簡單的休眠狀態一直到深度休眠狀態,微控制器在深度休眠狀態下幾乎接近關閉。在這些深度休眠模式下,整個微控制器的工作電流僅為幾毫微安。

在瞭解微控制器的低功耗狀態時,還要評估工具鏈和生態系統功能。設定和配置低功耗模式以及喚醒這些模式的事件,可能是一項頗具挑戰性的工作,而且非常耗時。新型微控制器,例如Renesas 提供的Synergy ,在開發環境內部包含了配置軟體,開發人員只需幾次點選即可配置這些模式。對於低功耗應用,開發人員應該考慮使用帶有64或128KB快閃記憶體的S124 32位MCU。要快速啟動採用這些器件的開發工作,可以使用 Synergy DK-124開發板 。

測量和驗證微控制器功耗

選擇低功耗微控制器,只是確保系統能夠達到可能的最低功耗的第一步。為了真正達到最低功耗,開發人員必須在整個軟體開發過程中仔細地監控微控制器的能耗。開發人員可以採用多種不同方法來監控微控制器的能耗,包括電流探頭和能量感知偵錯程式。

電流探頭的作用只是測量分流電阻器兩端的電壓,然後根據該電壓和分流電阻值來計算電流。如果您希望測量整個系統的電流消耗,那麼這種解決方案的效果非常好,但如果您真正希望將微控制器執行的操作與它們消耗的能量關聯起來,則應使用能量感知偵錯程式。這讓開發人員能夠確定哪些程式碼區域需要進一步優化或返工。

市場上有多種適用於ARM Cortex-M微控制器的能量感知偵錯程式,例如I-Jet除錯探頭的IAR Systems I-Scope電源探頭(圖4)。

圖4:連線到IAR I-Jet時,I-Scope可用於測量系統電壓、電流和微控制器電流,然後全部反向關聯到程式計數器(PC),以確定哪些程式碼區域消耗的能源最多。(圖片來源: IAR Systems Software)

圖5:I-Scope(突出顯示為黃色)與I-Jet除錯探頭配合使用,將分流電阻器的電流與在特定時間執行的程式碼關聯起來。(圖片來源:IAR Systems Software)

程式計數器準確告訴探頭:應用程式處於執行過程的什麼位置。將PC計數器資訊與電流測量值相關聯,可生成應用程式的能耗概況資料,以便開發人員能夠利用這些資料來優化和驗證程式碼。

設計低功耗器件的技巧和訣竅

找到合適的微控制器並監控硬體,只是開發人員設計低功耗器件的第一個階段。此時的訣竅是瞭解如何充分利用微控制器來最大程度降低能耗。為了達到這個目標,開發人員可以遵循以下的一般技巧。其中包括:

預先制定電池預算,包括最小功耗、最大功耗和平均功耗的估算值。

使用低功耗定時器來驅動計劃程式或RTOS的任何內部系統節拍。

儘可能經常地將CPU置於休眠模式(對於實時應用,請務必考慮到喚醒和掉電時間)。

讓系統成為事件驅動型系統。可以利用中斷來喚醒系統並執行功能,然後立即返回到休眠模式。

將DMA控制器和任何自動化外設整合到軟體架構中,以實現“並行”處理。

根據需要管理微控制器時鐘頻率,以實現額外的能源節省。

監控軟體能耗,不要害怕試用不同的架構和配置。第一次嘗試的很可能不是功耗最低的配置。

適當時,請使用中斷的Sleep-on-exit功能,該功能可在中斷結束時將處理器置於休眠模式,每個事件節省幾十個時鐘週期。