1、概述
DMA(直接內存訪問,DIrect Memory Access)
工作原理:DMA控制器直接在內存和外設之間傳輸數據,而不需要CPU的干預。
優點:極大地提高了數據傳輸效率,釋放CPU資源。適合大批量數據傳輸,減少CPU負擔。
缺點:需要額外的硬件支持(DMA控制器)。實現復雜度較高,涉及內存管理和總線控制。
? ? ? ? RT1176配備兩個 DMA 控制器,且相應地配有兩個 DMAMUX(DMA 多路復用器)。EDMA(增強型 DMA)位于 CM7(Cortex-M7)域,與 CM7 協同工作;EDMA_LPSR(低功耗場景增強型 DMA)位于 CM4(Cortex-M4)域,與 CM4 協同工作。其中,DMA_CH_MUX(DMA 通道多路復用器)為 EDMA 提供服務,DMA_CH_MUX_LPSR(低功耗場景 DMA 通道多路復用器)則為 EDMA_LPSR 提供服務。
????????DMAMUX可將被稱為時隙(slot)?的 DMA 源路由至 32 個 DMA 通道中的任意一個。
2、模塊框圖
3、模塊特性
- 最多 208 個外設時隙可路由至 32 個通道。
- 32 個可獨立選擇的 DMA 通道路由器。
- 每個通道輸出可單獨配置為 "Always On" 模式,不依賴任何外設時隙。
- 前 4 個通道額外提供觸發功能。
- 每個通道路由器可分配至任一可用的外設 DMA 時隙。
- 當任一通道的存儲器映射配置發生變更時,該模塊會向 DMA 控制器發送信號,以重置該通道的內部狀態機,使其能夠基于新配置接收新請求。
4、工作模式
禁用模式(Disabled mode)
在此模式下,DMA 通道被禁用。由于 DMA 通道的禁用與使能主要通過 DMA 配置寄存器完成,因此該模式主要用作 DMA 通道多路復用器(MUX)中 DMA 通道的復位狀態。此外,該模式也可用于在系統重新配置期間(例如修改 DMA 觸發周期時)暫時掛起 DMA 通道。正常模式(Normal mode)
在此模式下,DMA 源被直接路由至指定的 DMA 通道。此模式下 DMAMUX 的工作對系統完全透明。周期性觸發模式(Periodic Trigger mode)
在此模式下,DMA 源僅能周期性地發起 DMA 傳輸請求(例如發送緩沖區為空或接收緩沖區滿時)。周期配置在周期性中斷定時器(PIT)的寄存器中完成。該模式僅適用于 0 至 3 號通道。
6、應用信息(MUX的初始化說明)
6.1 使能與配置源
如需使能帶周期性觸發功能的源,操作如下:
- 確定該源將關聯到哪個 DMA 通道。注意,僅前 4 個 DMA 通道具備周期性觸發能力。
- 清除該 DMA 通道的 CHCFG [ENBL] 和 CHCFG [TRIG] 字段。
- 確保 DMA 中的該通道已正確配置。此時可使能該 DMA 通道。
- 配置對應的定時器。
- 選擇需要路由至 DMA 通道的源。寫入相應的 CHCFG 寄存器,并確保 CHCFG [ENBL] 和 CHCFG [TRIG] 字段已置位。
示例:
如需將 5 號源的發送功能配置為與 DMA 通道 1 配合使用,并啟用周期性觸發能力,操作如下:
- 向 CHCFG1 寄存器寫入 0x00000000。
- 在 DMA 中配置通道 1,包括使能該通道。
- 配置定時器以設置所需的觸發間隔。
- 向 CHCFG1 寄存器寫入 0xC0000005。
使能無周期性觸發的源
操作步驟如下:
- 確定該源將關聯到哪個 DMA 通道。注意,僅前 4 個 DMA 通道具備周期性觸發能力。
- 清除該 DMA 通道的 CHCFG [ENBL] 和 CHCFG [TRIG] 字段。
- 確保 DMA 中的該通道已正確配置。此時可使能該 DMA 通道。
- 選擇需要路由至 DMA 通道的源。寫入相應的 CHCFG 寄存器,確保 CHCFG [ENBL] 字段置位,同時 CHCFG [TRIG] 字段清零。
示例:
如需將 5 號源的發送功能配置為與 DMA 通道 1 配合使用,且不啟用周期性觸發能力,操作如下:
- 向 CHCFG1 寄存器寫入 0x00000000。
- 在 DMA 中配置通道 1,包括使能該通道。
- 向 CHCFG1 寄存器寫入 0x80000005。
禁用源
若要禁用特定的 DMA 源,可不對任何 CHCFG 寄存器寫入對應的源值。此外,可能還需要進行一些模塊特定的配置。
切換 DMA 通道的源
- 在 DMA 中禁用該 DMA 通道,并為新源重新配置通道。
- 清除該 DMA 通道的 CHCFG [ENBL] 和 CHCFG [TRIG] 位。
- 選擇需要路由至該 DMA 通道的源。寫入相應的 CHCFG 寄存器,確保 CHCFG [ENBL] 和 CHCFG [TRIG] 字段已置位。
將 DMA 通道 8 的源從 5 號發送源切換至 7 號發送源
- 在 DMA 配置寄存器中,禁用 DMA 通道 8,并將其重新配置為處理至外設時隙 7 的傳輸。本示例假設通道 8 不具備觸發能力。
- 向 CHCFG8 寄存器寫入 0x00000000。
- 向 CHCFG8 寄存器寫入 0x80000007。(在本示例中,由于假設通道 8 不支持周期性觸發功能,因此設置 CHCFG [TRIG] 字段不會產生任何效果。)
7、配置選項
ENBL(通道使能位) | TRIG(觸發使能位) | A_ON(始終使能位) | Function | Mode |
0 | X | X | DMA 通道禁用 | 禁用模式 |
1 | 0 | 0 | DMA 通道使能,無觸發 | 正常模式 |
1 | 1 | 0 | DMA 通道使能,帶觸發功能 | 周期性觸發模式 |
1 | 0 | 1 | DMA 通道始終使能 | 始終使能模式 |
1 | 1 | 1 | DMA 通道始終使能,且帶觸發功能 | 始終使能觸發模式 |
8、寄存器解讀
偏移地址(十六進制) | 寄存器 | 位寬(比特) | 訪問方式 | 復位值(十六進制) |
---|---|---|---|---|
0 - 7C | 通道 a 配置寄存器(CHCFG0 - CHCFG31) | 32 | 讀寫(RW) | 0000_0000 |
位號解析:
位 | 字段 | 說明 |
---|---|---|
31 | ENBL | DMA 多路復用器通道使能 使能 DMA 多路復用器的通道。DMA 有獨立的通道使能 / 禁用控制,應使用這些控制來禁用或重新配置 DMA 通道。 0 - DMA 多路復用器通道禁用 1 - DMA 多路復用器通道使能 |
30 | TRIG | DMA 通道觸發使能 使能觸發型 DMA 通道的周期性觸發功能。 0 - 觸發禁用。若觸發禁用且 ENBL 置位,DMA 通道將直接把指定源路由至 DMA 通道(正常模式) 1 - 觸發使能。若觸發使能且 ENBL 置位,DMA_CH_MUX 工作在周期性觸發模式 |
29 | A_ON | DMA 通道始終使能 使能 DMA 通道的始終開啟功能。若 TRIG 位置位,模塊將在每次觸發時發出請求。 0 - DMA 通道始終開啟功能禁用 1 - DMA 通道始終開啟功能使能 |
28-8 | — | 保留字段 |
7-0 | SOURCE | DMA 通道源(時隙編號) 指定路由至特定 DMA 通道的 DMA 源(若有)。有關外設及其時隙編號的詳情,請參見芯片專用的 DMA_CH_MUX 信息 |