使用整合式功能讓 MCU 效能和功耗達到平衡

資料提供者:DigiKey 北美編輯群

開發人員早就可取得低功率操作狀態的 MCU,並可關閉周邊裝置,甚至是核心本身,藉此降低系統電源需求。但有些應用中,開發人員則需對電源利用採用更直接的控制,確保系統各部為維持受電,以滿足關鍵功能性需求。

在過去,設計人員使用獨立的電源管理元件來打造精確的電源控制。相對而言,Analog Devices 的 ADuCM3029 MCU 則提供整合式解決方案,能幫助開發人員針對專為感測器數據採集、穿戴式裝置和其他物聯網 (IoT) 應用打造的設計,達到最高效能以及最低功耗。

MCU 的電源管理因應措施

針對低功率設計,設計人員能找到多種具有省電選項的進階 MCU。以電源敏感應用為目標的元件,通常都具備頻率調整等功能,能讓工程師以效能來換取較低的功率。

一般而言,低功率模式會逐漸降低功率,方法是關閉越來越多 MCU 子系統,直到只有喚醒 MCU 所需的最少電路保持運作為止。為了進一步改善電源管理,超低功率 MCU 添加了特殊運作模式,能分別針對裝置核心和周邊的電力進行管理。即便在這些情況中,這些特殊模式有時會將整組周邊裝置關閉,或使用自動化機制,讓開發人員對電力分配細節進行少許控制。

雖然 MCU 的電源管理通常會提供多種低功率運作模式,但切換至較低功率模式通常會大幅降低功能性。在許多情況下,應用能容許喪失功能性一小段時間。但在某些情況下,精準控制功耗是維持運作的關鍵。Analog Devices 的 ADuCM3029 處理器在設計上,專門支援超低功率應用中更複雜的電源管理需求。

ADuCM3029 以 ARM® Cortex®-M3 核心為基礎而打造,提供 256 KB 錯誤修正碼 (ECC) 快閃記憶體,以及 64 KB 可設定 SRAM,搭配多重同位位元保護。ADuCM3027 型號具有 128 KB 快閃記憶體,但提供與 ADuCM3029 相同的特點與功能性。

除了整合式硬體加密加速器之外,此元件還包含 8 通道 12 位元類比數位轉換器 (ADC),以及多種數位周邊裝置,包括 SPI、I2C、UART、GPIO、同步序列埠 (SPORT) 和 25 通道 DMA 控制器。即便功能很廣泛,此元件的耗電量在作用模式下通常低於 30 μA/MHz。但若使用 ADuCM3029,設計人員便能針對功能效能與功耗之間的平衡進一步進行調整。

調整功率/效能

ADuCM3029 與絕大多數進階 MCU 一樣,都具備多種功率模式,可在低度活動期間降低功率。在休眠模式下,裝置會關閉處理器以及絕大多數的周邊裝置,因此耗電量通常低於 750 nA,同時可持續供電給程式選定的 SRAM 區域。在應用無作用期間,此元件的關閉模式僅需要 60 nA。

但開發人員常面臨的狀況是,在處理器無作用期間仍需進行一些周邊裝置活動。為了因應此問題,ADuCM3029 多提供一個電源模式,稱為彈性睡眠 (Flexi) 模式。Flexi 模式能讓功耗降到最低 300 μA,並提供在作用模式與休眠模式之間所需的功能性。在 Flexi 模式下,元件的核心會維持在睡眠模式,而開發人員所指定的周邊裝置則會維持運作 (表 1)。

Analog Devices 的 ADuCM3029 MCU 電源模式表

表 1:Analog Devices 的 ADuCM3029 MCU 電源模式會自動啟用 (綠色) 或停用 (紅色) 對特定晶片上區塊的供電,但仍可讓開發人員控制對特定周邊裝置 (橘色) 的供電,甚至是設定休眠模式期間保留的 SRAM 大小 (*)。(表格資料來源:Analog Devices)

開發人員只要將元件 PMG_PWRMOD 暫存器中的 MODE 位元設定為 0,並且執行 WFI (等待中斷) 指令,便能讓 MCU 進入 Flexi 模式。當處理器核心無作用時,開發人員只要對 MCU 的 CLKG_CLK_CTL5 暫存器中各周邊裝置的對應位元寫入 0,便能維持特定周邊裝置的運作。雖然元件在此模式下無法執行指令,但還是能持續執行一些活動,像是在周邊裝置之間對記憶體進行 DMA 傳輸作業。

感測器應用經常必須在處理器涉入之前,針對一個或多個感測器採樣一段時間,Flexi 模式可能維持周邊裝置運作,因此提供了省電的解決方案。在此情況下,開發人員能使用整合式 ADC 的自動循環模式,在選定的通道上執行一個或多個轉換,並設定 DMA 控制器,將樣本自動傳輸到 SRAM。在完成編程器所指定的轉換數和相關的 DMA 傳輸作業後,DMA 控制器會發出中斷,以喚醒核心進行採樣資料的後續處理 (圖 1)。

Analog Devices 的 ADuCM3029 核心處理器處於 Flexi 模式示意圖

圖 1:在 Flexi 模式下,Analog Device 的 ADuCM3029 核心處理器會進入睡眠,而選定的周邊裝置會持續運作,因此能繼續進行特定操作,如 ADC 樣本進行多通道 DMA 傳輸,且僅在完成時才會喚醒處理器。(圖片來源:Analog Devices)

快取與時脈

在犧牲功能換取效能時,Flexi 模式與其他低功率模式能夠為設計人員提供強大的機制,在設計當中大幅降低功率。但對於電池供電式系統等眾多應用,設計人員通常需要對功耗進行更精細的控制。有了 ADuCM3029,設計人員便能同時運用傳統和創新方法的優勢,進一步降低功率。

在常見的傳統方法中,使用指令快取能減少取用晶片外記憶體或 Flash 等耗電型晶片上記憶體。在 ADuCM3029 架構系統中,開發人員能夠分配最多 4 KB 的 SRAM 作為快取。實際上,特定的省電做法仰賴於快取命中率,但 Analog Devices 注意到,在某些典型基準應用中使用快取可大幅降低功耗 (表 2)。

程式碼類型 SRAM (μA) 快閃 (μA) 快閃與快取 (μA) 快取漏失 (執行大約 12 秒)
迴路程式碼 (質數) 950 1280 980 24
線性程式碼 (ULPBench 911 1493 1083 ~800000

表 2:典型的基準應用會配置 Analog Device 的 ADuCM3029 將一些 SRAM 作為快取,因此能以接近低功率 SRAM 存取 (而非較高功率快閃存取) 的功率位準來運行。(表格資料來源:Analog Devices)

頻率調整是降低功率的另一種長期作法。較低的處理器時脈率會減慢指令的執行速度,但也會降低功耗 (圖 2)。但 ADuCM3029 與其他眾多方法不同的是,能讓開發人員個別針對處理器與周邊裝置動態修改時脈頻率。該元件在此使用由 26 MHz 內部振盪器或外部晶體所驅動的鎖相迴路與時脈分頻器,為晶片上的眾多資源產生時脈,包括處理器、記憶體以及介面。32 kHZ 的內部振盪器或外部晶體會驅動元件的即時時脈 (RTC) 與監控設備計時器。開發人員能夠在執行階段期間修改該元件的各個時脈暫存器,以便配合不斷變化的應用要求或尋求降低功率的機會。

Analog Devices 的 ADuCM3029 調整 MCU 時脈頻率示意圖

圖 2:設計人員只需設定 Analog Device ADuCM3029 的少許暫存器,便能立即調整 MCU 的時脈頻率並依此降低功耗。(圖片來源:Analog Devices)

改善電力路徑

除了支援更傳統的功率降低方法外,ADuCM3029 也提供以專屬裝置硬體特點為基礎的較新穎方式。晶片上降壓轉換器的設計位於 ADuCM3029 的電力路徑上,能彌平該元件的供應電壓範圍 VBAT (1.74 V 至 3.6 V) 和內部數位電域運作電壓 (1.2 V) 之間的差異。

在一般運作下,整合式低壓降 (LDO) 穩壓器會取用這個內部電壓。如同任何典型的 LDO,當 LDO 的供應與負載電壓差異較高時,預設的電力路徑會直接驅散多餘的能量,造成電力浪費。但採用此 MCU 後,設計人員只要使用幾個外部電容,便能在較高供應電壓下減少損耗 (圖 3)。就軟體層面而言,開發人員只要寫入降壓控制暫存器 (PMG_CTL1),便能啟用降壓變壓器。

Analog Devices 的 ADuCM3029 晶片上降壓轉換器圖片

圖 3:開發人員只要使用幾行程式碼以及一些外部電容,便能讓 Analog Device 的 ADuCM3029 晶片上降壓轉換器降低施加在元件 LDO 穩壓器上的電壓。(圖片來源:Analog Devices)

此轉換器是以高效率的電容式電荷幫浦拓撲為基礎,能降低供應至 LDO 的電壓。因此,MCU 會在 VBAT 高端電壓位準大幅降低功耗 (圖 4)。在低於約 2.3 V 的位準下,降壓變壓器會進入旁路模式,並跟隨 VBAT

Analog Devices 的 ADuCM3029 供應 (VBAT) 電壓約高於 3 V 示意圖

圖 4:在約高於 3 V 的供應 (VBAT) 電壓位準下,ADuCM3029 的晶片上降壓變壓器會降低 MCU 功耗,在作用模式下達到 50% 相對降低量 (如此處所示),在 Flexi 模式下也是如此。(圖片來源:Analog Devices)

電源最佳化取樣

快取、頻率調整及晶片上 DC-DC 轉換作業等系統層級特點,有助於降低功耗。在應用層級,Flexi 模式等特點可幫助降低感測器取樣等周邊裝置運作的功率。但即便如此,這些做法在某些應用下可能還是不足。例如,電池供電式 IoT 元件通常的任務是以超低採集率對感測器進行取樣,或是定期監測一些外部流程。

對於緩慢進行定期活動的應用來說,開發人員通常會仰賴 MCU 的 RTC 來維持一致的時基,也會仰賴倒數計時器,藉此在預先決定的確切時間喚醒 MCU。因此,進階 MCU 通常具備一些電源模式,即便在超低功率模式下也能維持 RTC 的功能。開發人員若使用 ADuCM3029,就能存取兩個不同的 RTC (RTC0 與 RTC1),享有額外的選項得以在功率與效能之間取得平衡。

如表 1 所示,這兩個 RTC 都支援在作用、Flexi 及休眠模式中運作,但只有 RTC0 在最低功率關閉模式期間仍持續可用。但在其他模式中,兩個時脈間的明顯差異能讓開發人員靈活地實作更複雜的計時應用。例如,RTC0 會以秒為單位在 1 Hz 頻率下計算時間,限制在幾秒內就要指定喚醒時間。RTC1 能在寬廣範圍內預分頻,並提供短至 30.7 μs 的喚醒時間。每個時脈的電力同樣有所差異。RTC0 是由主電源供電 (VBAT),而 RTC1 則是由內部 1.2 V 電域供電。因此,使用選配的降壓變壓器能進一步降低 RTC1 的有效功耗。或許更重要的是,RTC1 支援 Analog Device 的 SensorStrobe 機制 (內建於 ADuCM3029 中的獨特低功率取樣功能)。

SensorStrobe 是特殊的 RTC1 警報,會在 MCU 的 RTC1_SS1 引腳上產生輸出脈衝。開發人員能夠將 ADuCM3029 的 SensorStrobe 輸出接至 Analog Devices ADXL363 等外部多重感測器元件,以利用少數幾個元件建立超低功率的取樣解決方案 (圖 5)。

Analog Devices 的 ADuCM3029 SensorStrobe 機制圖表

圖 5:ADuCM3029 的 SensorStrobe 機制會對外部裝置提供穩定的同步警報,當與 Analog Devices ADXL363 等整合式感測器結合時,能實作簡易的數據採集系統。(圖片來源:Analog Devices)

Analog Devices 提供圖 5 所示的特定子系統,作為 ADuCM3029 EZ-KIT 開發套件 ADZS-UCM3029EZLITE 的一部分。除了簡單的硬體配置之外,此做法只需要幾行程式碼便能設定相關的元件暫存器,並啟動 SensorStrobe 機制 (列表 1)。

#define PRD_VAL 255

void SensorStrobe_Cfg()

{

  // SensorStrobe Pin Mux

*pREG_GPIO2_CFG |= (0x3 << BITP_GPIO_CFG_PIN11);

  // Reset the RTC counter

while(*pREG_RTC1_SR1 & 0x0180); //wait until sync

   *pREG_RTC1_SR0 = 0xFF;

*pREG_RTC1_CR0 = 0;

while(!(*pREG_RTC1_SR0 & 0x0080 )); //wait for sync

// SensorStrobe configuration

// Initial trigger and auto reload value = 255 RTC counts

// RTC runs at 32KHz ideally, 1 RTC count = 30.7us

while(*pREG_RTC1_SR5 != 0);

*pREG_RTC1_SS1ARL = PRD_VAL;

// SensorStrobe to be triggered after 255 RTC counts

*pREG_RTC1_CR4SS = (1 << 9); //Enable Autoreload

*pREG_RTC1_SS1 = PRD_VAL; // Initial Compare Value

// Enable SensorStrobe

*pREG_RTC1_CR3SS = 1;

while(*pREG_RTC1_SR4 != 0x77FF);

// Initialize the counter value to zero

while(*pREG_RTC1_SR1 & 0x0600);

*pREG_RTC1_CNT0 = 0;

*pREG_RTC1_CNT1 = 0;

while(!(*pREG_RTC1_SR0 & 0x0400));

// Enable (start) the counter

while(*pREG_RTC1_SR1 & 0x0180); //wait until sync

*pREG_RTC1_SR0 = 0xFF;

*pREG_RTC1_CR0 = 1;

while(!(*pREG_RTC1_SR0 & 0x0080)); //wait for sync

return;

}

列表 1:開發人員只需要設定少許元件暫存器,便能利用 Analog Devices ADuCM3029 MCU 的 SensorStrobe 特點。(圖片來源:Analog Devices)

在 SensorStrobe 運作期間,開發人員能讓 ADuCM3029 進入休眠模式,確保在較長的取樣流程中達到最低的 MCU 功耗。當 MCU 持續處於休眠模式時,RTC1 會計數至需要的值 (在 SensorStrobe 設定期間所建立之暫存器值所指定)。當 SensorStrobe 的計數條件達成時,會將 SensorStrobe 訊號施加至 ADXL363 的中斷輸入引腳,將該元件喚醒。接著,ADXL363 會執行本身的資料取樣例行作業。完成時,ADXL363 會在 MCU 的中斷引腳上發出訊號,讓 MCU 從休眠模式中喚醒並開始處理取樣的資料。

在過去,開發人員會使用外部 RTC、計時器甚至是簡易型振盪器來實作這類型的延伸取樣設計。除了讓設計更加複雜之外,使用外部時脈來源會破壞取樣資料和 MCU 時基之間的時間同步。因此,若開發人員使用以往的作法,就必須有效地重新取樣資料,以將此資料的時間戳記依據 MCU 的時間戳記進行標準化。但如果在 SensorStrobe 模式中使用 RTC1,開發人員就可確保樣本的時間戳記與 ADuCM3029 架構系統本身維持同步化。

開發人員也許能找到許多類似 ADuCM3029 整合式電源管理功能的離散式機制。但如果利用元件的內部功能,工程師就可輕易在電源和效能之間達到更優異的平衡。

結論

對較低功率系統的需求,對開發人員的能力來說是一種考驗,必須在更小型的省電設計中達到最大效能。困難不僅於此,各個應用都需要在功能效能與功耗之間達到獨特的平衡。

Analog Devices 的 ADuCM3029 MCU 具有整合式電源管理功能,能賦予開發人員必要的靈活性,更輕鬆達到平衡。使用此元件,開發人員就可針對各個特定應用提供高效能與低耗電的獨特組合。

DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於出版者

DigiKey 北美編輯群