【導讀】本文介紹了DMA控制器的兩種模式。通過結合乒乓緩沖和多數(shù)據(jù)包緩沖傳輸模式,DMA 控制器可以顯著提高 MCU 的數(shù)據(jù)傳輸效率和帶寬,同時減少 CPU 的負擔,從而提升整體系統(tǒng)性能并節(jié)省能源。
本文介紹了DMA控制器的兩種模式。通過結合乒乓緩沖和多數(shù)據(jù)包緩沖傳輸模式,DMA 控制器可以顯著提高 MCU 的數(shù)據(jù)傳輸效率和帶寬,同時減少 CPU 的負擔,從而提升整體系統(tǒng)性能并節(jié)省能源。
直接存儲器訪問 ( DMA ) 控制器,可以在內(nèi)存和/或外設之間傳輸數(shù)據(jù),而不需要 CPU 參與每次傳輸。
充分利用兩種 DMA 模式(兵乓模式與多數(shù)據(jù)包緩沖傳輸模式),可以幫助提高 MCU 效率。USB 外設 是一個很好的外設示例,早期的 USB 實現(xiàn)的最大吞吐量只有1.5 Mb/秒。隨著更高性能的標準版本的出現(xiàn)。比如要接近12 Mbit/s全速 USB 標準的理論最大值。我們來看看,數(shù)據(jù)傳輸方面 DMA 如何幫助提高 MCU 效率!我們以 Microchip 的 ATXMEGA16D4-MH 舉例。
AVR? XMEGA? D4 微控制器ATXMEGA16D4-MH
之前通常使用單個存儲器緩沖區(qū)進行外設數(shù)據(jù)傳輸。如果數(shù)據(jù)緩沖區(qū)已滿,MCU將響應 NAK (否定確認)消息。接收到 NAK 后,主機將等待并稍后重試傳輸。它將繼續(xù)重試,直到 MCU 能夠成功接收數(shù)據(jù)。ATXMEGA16D4-MH 使用乒乓模式來消除這個問題。乒乓模式使用兩個存儲單元( memory banks )進行數(shù)據(jù)傳輸。當一個存儲單元滿時,主機可以將數(shù)據(jù)傳輸?shù)搅硪粋€存儲單元。在兩個存儲單元之間交替?zhèn)鬏斂梢员苊鈴蛯彛⑻岣哒w數(shù)據(jù)帶寬。
乒乓模式提高了效率(圖片來源于 Microchip )
此外,如上圖所示,以乒乓模式還使 MCU 有更多時間來處理數(shù)據(jù)。如圖所示,沒有乒乓,CPU 只能處理傳輸之間的數(shù)據(jù)。使用乒乓模式,CPU 可以在傳輸周期的一部分時間內(nèi)處理數(shù)據(jù),并降低 NAK 被要求“趕上”數(shù)據(jù)處理要求的可能性。另一個很有用的模式,可以讓 MCU 的數(shù)據(jù)傳輸更高效。這個特性叫做“多數(shù)據(jù)包緩沖傳輸模式”。如果你要通過 USB 端口傳送的數(shù)據(jù)包,超過了全速 USB 的 BULK 傳輸模式所允許的最大值(64字節(jié)),那么就可以用上這個模式。以前,你需要在主機上把數(shù)據(jù)包分成小塊,然后在接收端把它們合并,這會增加中央處理器( CPU )的負擔。不過現(xiàn)在,多數(shù)據(jù)包緩沖功能加入了 USB 設備,它會在數(shù)據(jù)包超過 USB 標準大小時自動幫你分割和合并數(shù)據(jù)。重要的是,這個模式還能減少中斷的次數(shù),因為只有在整個傳輸結束后才需要中斷 CPU。這意味著,CPU 可以處理其他任務,或者進入休眠模式,直到整個傳輸完成并且準備好處理。結合“乒乓緩沖”和“多傳輸模式”,你可以把傳輸?shù)膸捥嵘?,更重要的是,在使用這兩個功能的情況下,CPU 的負擔也降低。這兩個功能的結合,不僅在性能上有所改進,而且還能節(jié)省能源。
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯(lián)系小編進行處理。
推薦閱讀:
使用IO-Link收發(fā)器管理數(shù)據(jù)鏈路如何簡化微控制器選擇
PNP 晶體管:特性和應用
增強視覺傳感器功能:3D圖像拼接算法幫助擴大視場
安全設計降壓前置穩(wěn)壓器,為汽車電源保駕護航!
交流電源系統(tǒng)中的過流保護