新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 用好 DMA控制器這兩種模式 MCU效率大大提高!

用好 DMA控制器這兩種模式 MCU效率大大提高!

作者: 時間:2025-01-17 來源:Digikey 收藏

 文章 概述

本文引用地址:http://2s4d.com/article/202501/466440.htm

本文介紹了的兩種模式。 通過結(jié)合乒乓緩沖和多數(shù)據(jù)包緩沖傳輸模式,DMA 控制器可以顯著提高 MCU 的數(shù)據(jù)傳輸效率和帶寬,同時減少 CPU 的負(fù)擔(dān),從而提升整體系統(tǒng)性能并節(jié)省能源。


直接存儲器訪問 ( DMA ) 控制器,可以在內(nèi)存和/或外設(shè)之間傳輸數(shù)據(jù),而不需要 CPU 參與每次傳輸。

充分利用兩種 DMA 模式( 兵乓模式 與 多數(shù)據(jù)包緩沖傳輸模式 ),可以幫助提高 MCU 效率。USB 外設(shè) 是一個很好的外設(shè)示例,早期的 USB 實(shí)現(xiàn)的最大吞吐量只有1.5 Mb/秒。隨著更高性能的標(biāo)準(zhǔn)版本的出現(xiàn)。比如要接近12 Mbit/s全速 USB 標(biāo)準(zhǔn)的理論最大值。我們來看看,數(shù)據(jù)傳輸方面 DMA 如何幫助提高 MCU 效率!我們以 Microchip 的 ATXMEGA16D4-MH 舉例。

AVR ? XMEGA ? D4 微控制器ATXMEGA16D4-MH乒乓模式之前通常使用單個存儲器緩沖區(qū)進(jìn)行外設(shè)數(shù)據(jù)傳輸。如果數(shù)據(jù)緩沖區(qū)已滿,MCU將響應(yīng) NAK (否定確認(rèn))消息。接收到 NAK 后,主機(jī)將等待并稍后重試傳輸。它將繼續(xù)重試,直到 MCU 能夠成功接收數(shù)據(jù)。ATXMEGA16D4-MH 使用乒乓模式來消除這個問題。乒乓模式使用兩個存儲單元( memory banks )進(jìn)行數(shù)據(jù)傳輸。當(dāng)一個存儲單元滿時,主機(jī)可以將數(shù)據(jù)傳輸?shù)搅硪粋€存儲單元。在兩個存儲單元之間交替?zhèn)鬏斂梢员苊鈴?fù)審,并提高整體數(shù)據(jù)帶寬。

乒乓模式提高了效率( 圖片來源于 Microchip )此外,如上圖所示,以乒乓模式還使 MCU 有更多時間來處理數(shù)據(jù)。如圖所示,沒有乒乓,CPU 只能處理傳輸之間的數(shù)據(jù)。使用乒乓模式,CPU 可以在傳輸周期的一部分時間內(nèi)處理數(shù)據(jù),并降低 NAK 被要求“趕上”數(shù)據(jù)處理要求的可能性。多數(shù)據(jù)包緩沖傳輸模式另一個很有用的模式,可以讓 MCU 的數(shù)據(jù)傳輸更高效。這個特性叫做“多數(shù)據(jù)包緩沖傳輸模式”。如果你要通過 USB 端口傳送的數(shù)據(jù)包,超過了全速 USB 的 BULK 傳輸模式所允許的最大值(64字節(jié)),那么就可以用上這個模式。以前,你需要在主機(jī)上把數(shù)據(jù)包分成小塊,然后在接收端把它們合并,這會增加中央處理器( CPU )的負(fù)擔(dān)。不過現(xiàn)在,多數(shù)據(jù)包緩沖功能加入了 USB 設(shè)備,它會在數(shù)據(jù)包超過 USB 標(biāo)準(zhǔn)大小時自動幫你分割和合并數(shù)據(jù)。重要的是,這個模式還能減少中斷的次數(shù),因?yàn)橹挥性谡麄€傳輸結(jié)束后才需要中斷 CPU。這意味著,CPU 可以處理其他任務(wù),或者進(jìn)入休眠模式,直到整個傳輸完成并且準(zhǔn)備好處理。最后:結(jié)合“乒乓緩沖”和“多傳輸模式”,你可以把傳輸?shù)膸捥嵘?,更重要的是,在使用這兩個功能的情況下,CPU 的負(fù)擔(dān)也降低。這兩個功能的結(jié)合,不僅在性能上有所改進(jìn),而且還能節(jié)省能源。



關(guān)鍵詞: Digikey DMA控制器

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉