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