現(xiàn)代 MCU 添加了廣泛的新功能,正確使用這些功能可以顯著提高應(yīng)用效率。特別是使用智能外設(shè),可以獨立于 CPU 運行的外設(shè),允許 CPU 并行執(zhí)行其他任務(wù)或進(jìn)入低功耗睡眠模式。使用這些技術(shù)中的任何一種都將提高整體處理效率并節(jié)省電力。
在進(jìn)行基于 MCU 的設(shè)計時,首先遇到的智能外設(shè)之一是直接存儲器訪問 (DMA) 控制器。這個專門的硬件塊可以在內(nèi)存和/或外圍設(shè)備之間傳輸數(shù)據(jù),而無需 CPU 參與每次傳輸。先進(jìn)的 DMA 控制器,例如包含在STMicroelectronics 的 STM32F4系列可以通過使用靈活的數(shù)據(jù)流分配和傳輸管理功能進(jìn)一步減輕 CPU 的負(fù)擔(dān)。讓我們更詳細(xì)地了解其中的一些功能,以了解如何使用它們來提高處理效率。
圖 1 顯示的框圖表示 STM32F4 器件上兩個 DMA 控制器之一中可用的各種數(shù)據(jù)路徑。如圖左側(cè)所示,DMA 請求源自 8 個不同的通道(分配給各種啟用 DMA 的外設(shè)),并被路由到仲裁器上的 8 個不同的請求輸入,從而建立優(yōu)先級(編號較低的輸入具有較高的優(yōu)先級)。然后激活最高優(yōu)先級的傳輸,圖右側(cè)的 AHB 主機(jī)執(zhí)行所需的數(shù)據(jù)傳輸。存儲器和外設(shè)接口的獨立主控器進(jìn)一步提高了外設(shè)到存儲器傳輸?shù)男?,這可能是基于 MCU 設(shè)計中 DMA 的最普遍使用。
如圖 1 中間所示,為每個流分配單獨的 FIFO 允許針對每個外設(shè)接口的特性調(diào)整 FIFO 特性。例如,F(xiàn)IFO 的閾值級別(請求傳輸?shù)纳疃龋┛梢詥为氃O(shè)置為 FIFO 大小的 1/4、1/2 或 3/4。這允許低速通道在傳輸之前等到 FIFO 幾乎已滿,以最大限度地減少開銷。更快的通道會更快地啟動傳輸,可能是大小的 ? 以避免 FIFO 溢出。
圖 1:STM32F4 系列 DMA 控制器(由 STMicroelectronics 提供)。
要尋找的其他高級 DMA 功能與數(shù)據(jù)傳輸?shù)墓芾碛嘘P(guān)。一些外設(shè)提供傳輸結(jié)束指示器,高級 DMA 控制器可以檢測并使用它來獨立于 CPU 終止傳輸。雙緩沖和循環(huán)緩沖區(qū)管理由 DMA 控制器完成,通過在傳輸期間自動重新配置源和目標(biāo)來消除 CPU 開銷。如果 CPU 需要管理這些類型的低級任務(wù),您可以看到處理效率會受到影響。
這種映射、優(yōu)先級和管理數(shù)據(jù)傳輸活動的靈活性顯著降低了 CPU 開銷,一旦智能 DMA 控制器初始化,就可以管理傳輸并有效分配帶寬,而無需進(jìn)一步的 CPU 干預(yù)。這種獨立操作的數(shù)量是任何智能外設(shè)的一個關(guān)鍵特性,設(shè)計人員在選擇目標(biāo)設(shè)備時應(yīng)該尋找這一特性,而我們將在接下來討論的其他智能外設(shè)中找到這一特性。
在串行外設(shè)中尋找智能
一旦理解了 DMA 的使用,就自然而然地想方設(shè)法為串行外設(shè)單元提供額外的智能,以充分利用 DMA 功能并進(jìn)一步減輕 CPU 的低級功能負(fù)擔(dān)。使用集成到高速外圍設(shè)備(如以太網(wǎng)和 USB)中的專用 FIFO 緩沖區(qū)提供了額外的 CPU 自主性,因為可以在單個突發(fā)中分階段和處理傳輸(可能通過 DMA)以提高效率。智能外設(shè)可以根據(jù)帶寬要求設(shè)置 CPU 可以中斷的各種級別。請注意,這些獨立的 FIFO 可以與任何專用于 DMA 控制器的 FIFO 結(jié)合使用,如圖 1 所示的 STM32F4 器件。外設(shè) FIFO 可以提供第一級緩沖,而 DMA 可以根據(jù)哪些外設(shè)同時處于活動狀態(tài)來提供第二級緩沖。當(dāng) FIFO 僅在外設(shè)上可用時,這允許額外級別的管理和控制(即智能)不可用。
如前所述,許多外設(shè)包括可用于請求 CPU 干預(yù)的靈活中斷,如果中斷足夠具體,可以準(zhǔn)確地告訴 CPU 需要什么服務(wù),則可以顯著減少響應(yīng)時間。如果中斷不是智能的,CPU 需要通過各種標(biāo)志或狀態(tài)位進(jìn)行搜索,以確定采取什么動作。在時序預(yù)算和延遲要求最苛刻的情況下,使用具有智能中斷的外設(shè)可以產(chǎn)生很大的不同。
一些 MCU 將這種方法更進(jìn)一步,并完全消除了某些操作的中斷。Energy Micro(現(xiàn)為Silicon Labs的一部分)EFM32GZ系列包括一個特殊的外設(shè)反射系統(tǒng) (PRS),通過允許外設(shè)之間的快速和自主通信,可用于實現(xiàn)許多常見的中斷功能。由于來自一個外設(shè)的事件可用作輸入信號或由其他外設(shè)觸發(fā),因此無需中斷 CPU 即可實現(xiàn)簡單的內(nèi)務(wù)處理功能。這些信號通過四個可配置互連通道之一進(jìn)行選擇和路由。生產(chǎn)外圍設(shè)備(產(chǎn)生事件的外圍設(shè)備)的輸出被路由到消費者(由事件觸發(fā)的外圍設(shè)備)并針對電平或上升/下降沿靈敏度進(jìn)行調(diào)整。
圖 2 顯示了 PRS 的使用示例。定時器可用于觸發(fā) ADC 轉(zhuǎn)換的開始,ADC 轉(zhuǎn)換完成信號可用于觸發(fā) DMA 傳輸。反過來,DMA 完成信號可用于重置定時器以重新啟動序列。不需要 CPU 干預(yù),也不需要產(chǎn)生中斷。請注意,在進(jìn)行了一些測量(可能是 1,000 次)之后,可以將一個額外的計數(shù)器添加到用于喚醒 CPU 的 PRS。然后,CPU 可以一次處理所有 1,000 個樣本,以進(jìn)一步提高處理能力和電源效率。
圖 2:Silicon Labs EFM32GZ 系列外圍反射系統(tǒng)示例(由 Silicon Labs 提供)。
多核 MCU 創(chuàng)建智能外設(shè)
高性能 MCU 的終極卸載引擎是一個協(xié)處理器,它可以完全獨立地管理外設(shè) I/O 功能。最近轉(zhuǎn)向多核 MCU,例如NXP LPC4370FET100E,允許設(shè)計人員創(chuàng)建一個完全獨立的通道控制器,專用于外圍控制。事實上,NXP LPC4370 擁有三個 CPU 內(nèi)核:主 ARM Cortex-M4 CPU、面向協(xié)處??理器的 ARM Cortex-M0 CPU 和面向特殊外設(shè)控制的 ARM? Cortex?-M0 CPU。圖 3 顯示了面向外設(shè)的 CPU(在框圖的左上方)是外設(shè)子系統(tǒng)的一部分,該子系統(tǒng)包括 AHB 子系統(tǒng)總線矩陣、SPI 端口、子系統(tǒng) GPIO 和本地 SRAM 存儲器。核對核橋通過主 AHB 總線矩陣將子系統(tǒng)連接到設(shè)備的其余部分。外圍子系統(tǒng)擁有獨立管理外圍設(shè)備所需的所有硬件,在某些情況下,它可能是唯一一個處于活動狀態(tài)的 CPU,而其他 CPU 則處于低功耗狀態(tài)以提高電源效率。
圖 3:NXP LPC4370 系列框圖(由 NXP 提供)。
然而,智能外設(shè)控制不必止步于此。事實上,第二個 ARM Cortex-M0 CPU 也可用于外設(shè)控制,可能用于模擬 DAC 和 ADC 子系統(tǒng)或作為智能電機(jī)控制外設(shè)。這種智能外圍控制的分層使得僅啟用所需的子系統(tǒng)成為可能;高性能數(shù)據(jù)處理功能期間的主 CPU,通過 SPI 端口進(jìn)行命令處理期間的低速智能外圍接口(設(shè)備的其余部分處于斷電模式),或高速智能外圍控制器期間電機(jī)控制或模擬操作。當(dāng)多個內(nèi)核可用于創(chuàng)建獨立的智能子系統(tǒng)時,獨立操作的可能性范圍很廣,
不要忽視智能模擬
可能很容易將注意力集中在數(shù)字外圍設(shè)備上,而忽視模擬外圍設(shè)備中的新功能,這些新功能也提高了它們的智能水平。Renesas RL78等高級 MCU 中包含的模數(shù)轉(zhuǎn)換器 (ADC)系列能夠獨立操作,類似于串行端口等數(shù)字外圍設(shè)備的描述。例如,智能 ADC 可以配置為在由硬件定時器觸發(fā)時進(jìn)行周期性測量,完全獨立于 CPU。捕獲的值可以使用 DMA 功能順序存儲到內(nèi)存中,并且 CPU 不需要參與,直到進(jìn)行了足夠的測量以需要處理。在數(shù)字信號處理 (DSP) 應(yīng)用中,可能需要進(jìn)行一千次測量才能進(jìn)行處理。在此期間,CPU 可以執(zhí)行其他功能,或者可以進(jìn)入低功耗睡眠模式,并在采集到足夠的樣本后使用定時器中斷喚醒 CPU。
你可能認(rèn)為這種智能、自主的操作就足夠了,但正如他們在低預(yù)算的深夜電視廣告中所說的那樣,“等等,還有更多!” 瑞薩電子 RL78 ADC 還具有窗口功能,可用于進(jìn)一步改進(jìn)自主操作。該函數(shù)允許程序員為捕獲的 ADC 值定義一個低電平和高電平閾值(窗口),如圖 3 所示。如果捕獲的值超出定義的閾值,則可以生成中斷(如果ADRCK 控制位設(shè)置為“1”)。請注意,如果需要反向窗口,則如果值落在窗口內(nèi),則可以生成中斷。如果模擬值開始在可接受范圍之外漂移,此功能允許快速響應(yīng)。如果沒有這種智能水平,將需要直到完整數(shù)據(jù)集(可能是一千次測量)的末尾被捕獲,然后大量 CPU 周期掃描整個數(shù)據(jù)集以確定該值是否已開始超出可接受范圍。 如果每 10 μs 進(jìn)行一次測量并且每次進(jìn)行 1,000 次測量,則對閾值違規(guī)的最壞情況響應(yīng)將超過 10 ms(不包括 CPU 掃描整個數(shù)據(jù)集的時間,一直在消耗功率) 。 顯然,使用像瑞薩 RL78 上可用的窗口功能可以顯著節(jié)省處理周期時間和功耗。如果每 10 μs 進(jìn)行一次測量并且每次進(jìn)行 1,000 次測量,則對閾值違規(guī)的最壞情況響應(yīng)將超過 10 ms(不包括 CPU 掃描整個數(shù)據(jù)集的時間,一直在消耗功率) 。 顯然,使用像瑞薩 RL78 上可用的窗口功能可以顯著節(jié)省處理周期時間和功耗。如果每 10 μs 進(jìn)行一次測量,并且每次進(jìn)行 1,000 次測量,那么對閾值違規(guī)的最壞情況響應(yīng)將超過 10 ms(不包括 CPU 掃描整個數(shù)據(jù)集的時間,一直在消耗功率) 。 顯然,使用像瑞薩 RL78 上可用的窗口功能可以顯著節(jié)省處理周期時間和功耗。
圖 4:瑞薩電子 RL78 ADC 窗口函數(shù)的范圍設(shè)置(由瑞薩電子提供)。
智能使用低功耗模式
需要注意的是,將非活動 CPU 置于低功耗模式的能力可能是進(jìn)一步提高電源效率的關(guān)鍵技術(shù)。TechZone 最近的一篇文章“使用 MCU 電源管理選項優(yōu)化系統(tǒng)效率””提供了一個很好的資源來更好地了解各種可用的低功耗模式,所以我們可以在這里放棄詳細(xì)討論。我們關(guān)于低功耗模式的關(guān)鍵點是智能外圍設(shè)備,由于它們的自主操作能力,提供許多機(jī)會將 CPU 置于低功耗狀態(tài),“節(jié)省”它們以完成它們最擅長的復(fù)雜數(shù)據(jù)處理任務(wù)。當(dāng)?shù)凸哪J脚c智能外設(shè)結(jié)合使用時,功耗和處理效率的提升可能會非常顯著。
綜上所述,MCU 已開發(fā)出多種自主功能,可用于卸載低級處理任務(wù),以管理外設(shè)及其相關(guān)數(shù)據(jù)傳輸功能。新的多核 MCU 提供了更多機(jī)會來創(chuàng)建和使用智能外設(shè),以滿足應(yīng)用的特定需求。當(dāng)正確集成到基于 MCU 的應(yīng)用程序中時,智能外圍子系統(tǒng)的使用可以顯著提高處理和電源效率。不要在您的設(shè)計中忽視這些機(jī)會。
評論
查看更多