用好 DMA控制器這兩種模式 MCU效率大大提高!
文章 概述
本文引用地址:http://dyxdggzs.com/article/202501/466440.htm本文介紹了DMA控制器的兩種模式。 通過(guò)結合乒乓緩沖和多數據包緩沖傳輸模式,DMA 控制器可以顯著(zhù)提高 MCU 的數據傳輸效率和帶寬,同時(shí)減少 CPU 的負擔,從而提升整體系統性能并節省能源。
直接存儲器訪(fǎng)問(wèn) ( DMA ) 控制器,可以在內存和/或外設之間傳輸數據,而不需要 CPU 參與每次傳輸。
充分利用兩種 DMA 模式( 兵乓模式 與 多數據包緩沖傳輸模式 ),可以幫助提高 MCU 效率。USB 外設 是一個(gè)很好的外設示例,早期的 USB 實(shí)現的最大吞吐量只有1.5 Mb/秒。隨著(zhù)更高性能的標準版本的出現。比如要接近12 Mbit/s全速 USB 標準的理論最大值。我們來(lái)看看,數據傳輸方面 DMA 如何幫助提高 MCU 效率!我們以 Microchip 的 ATXMEGA16D4-MH 舉例。
AVR ? XMEGA ? D4 微控制器ATXMEGA16D4-MH乒乓模式之前通常使用單個(gè)存儲器緩沖區進(jìn)行外設數據傳輸。如果數據緩沖區已滿(mǎn),MCU將響應 NAK (否定確認)消息。接收到 NAK 后,主機將等待并稍后重試傳輸。它將繼續重試,直到 MCU 能夠成功接收數據。ATXMEGA16D4-MH 使用乒乓模式來(lái)消除這個(gè)問(wèn)題。乒乓模式使用兩個(gè)存儲單元( memory banks )進(jìn)行數據傳輸。當一個(gè)存儲單元滿(mǎn)時(shí),主機可以將數據傳輸到另一個(gè)存儲單元。在兩個(gè)存儲單元之間交替傳輸可以避免復審,并提高整體數據帶寬。
乒乓模式提高了效率( 圖片來(lái)源于 Microchip )此外,如上圖所示,以乒乓模式還使 MCU 有更多時(shí)間來(lái)處理數據。如圖所示,沒(méi)有乒乓,CPU 只能處理傳輸之間的數據。使用乒乓模式,CPU 可以在傳輸周期的一部分時(shí)間內處理數據,并降低 NAK 被要求“趕上”數據處理要求的可能性。多數據包緩沖傳輸模式另一個(gè)很有用的模式,可以讓 MCU 的數據傳輸更高效。這個(gè)特性叫做“多數據包緩沖傳輸模式”。如果你要通過(guò) USB 端口傳送的數據包,超過(guò)了全速 USB 的 BULK 傳輸模式所允許的最大值(64字節),那么就可以用上這個(gè)模式。以前,你需要在主機上把數據包分成小塊,然后在接收端把它們合并,這會(huì )增加中央處理器( CPU )的負擔。不過(guò)現在,多數據包緩沖功能加入了 USB 設備,它會(huì )在數據包超過(guò) USB 標準大小時(shí)自動(dòng)幫你分割和合并數據。重要的是,這個(gè)模式還能減少中斷的次數,因為只有在整個(gè)傳輸結束后才需要中斷 CPU。這意味著(zhù),CPU 可以處理其他任務(wù),或者進(jìn)入休眠模式,直到整個(gè)傳輸完成并且準備好處理。最后:結合“乒乓緩沖”和“多傳輸模式”,你可以把傳輸的帶寬提升,更重要的是,在使用這兩個(gè)功能的情況下,CPU 的負擔也降低。這兩個(gè)功能的結合,不僅在性能上有所改進(jìn),而且還能節省能源。
評論