本應用筆記介紹了 ZNEO CPU 中的 DMA 控制器及其突出的特性,例如 DMA 和 CPU 帶寬共享控制以及四個獨立的 DMA 通道。本文檔還描述了 DMA 模式,以及它的軟件實現和應用程序的測試/演示。
特征
ZNEO CPU 突出的直接內存訪問特性是:
- 四個獨立的 DMA 通道
- 支持內存到內存、內存到外設、外設到內存以及外設到外設的數據傳輸。
- 在直接或鏈表模式下運行
- 字節、字或四元數據傳輸長度
- DMA 和 CPU 帶寬共享控制
- 高達 64K 傳輸(64 kByte、64 kWord 或 64 kQual)
- 外部 DMA 請求和 DMA 確認信號
ZNEO DMA 用于減輕處理器執行重復性任務的負擔。它將數據從一個內存地址傳輸到另一個內存地址,或從一個外設傳輸到另一個外設。這些任務需要由 DMA 控制器生成的讀和/或寫周期。每個 DMA 傳輸至少需要 2 個系統時鐘周期來執行。圖 1 顯示了 Z16F MCU 的 DMA 控制器框圖,該控制器基于 ZNEO 架構。
圖 1 DMA 框圖
DMA 模式
直接模式僅使用 DMA 中的寄存器進行操作。軟件直接寫入這些寄存器以設置和啟用 DMA。通過直接設置 DMAxCTL0 寄存器中的相應位進入直接模式。下圖顯示了 DMA 寄存器以及它們如何指向內存中分配的緩沖區。
鏈表模式
鏈表模式需要軟件為每個緩沖區分配緩沖區和設置描述符列表。完成此操作后,軟件將使用第一個描述符的地址寫入 DMAxLAR。然后 DMA 將第一個描述符讀入 DMA 控制和地址寄存器,LAR 數據除外。它執行由 DMA 中的描述符數據指定的傳輸。傳輸完成后,DMA 讀入列表中的下一個描述符并繼續執行傳輸。
軟件實施
此參考設計使用 ZNEO Z16F2800100ZCOG 開發套件。它利用 ZNEO CPU 的 DMA 控制器,特別是 DMA 的通道 0,用于演示目的。該應用程序還使用 UART0 提供菜單驅動的控制臺,允許用戶測試 DMA 控制器的不同操作模式。此外,ADC、Timer2 和 UART1 等外設用于支持 DMA 演示。有關外設初始化的說明,請參見附錄 A。
CPU帶寬選擇
在任何 DMA 初始化之前,確保 CPU 總線設置為分配所需/所需的帶寬以供 DMA 使用。如果未設置,將使用重置值;也就是說,每三個 CPU 操作允許 DMA 傳輸一次。在本應用筆記中,不同的帶寬選擇用于為 CPUCTL 的不同值提供示例。下表列出了用于每種傳輸類型的 CPU 帶寬。相同的 CPU 帶寬將用于直接模式和鏈表模式。
結果
直接模式在 DMA0CTL 的 IEOB 和 EOF 位設置為 1 且未設置水印值的情況下進行測試。也就是說,只有在當前緩沖區的末尾才會產生中斷。鏈表模式使用與直接模式相同的設置進行測試,DMA0CTL 的 HALT 位設置為 1。
編輯:hfy
-
控制器
+關注
關注
112文章
15886瀏覽量
175386 -
寄存器
+關注
關注
31文章
5253瀏覽量
119206 -
cpu
+關注
關注
68文章
10702瀏覽量
209383
發布評論請先 登錄
相關推薦
評論