DMA簡介
DMA控制器的作用不僅在增強系統性能并減少處理器的中斷生成,而且還針對32位MCU應用程序專門優化設計。DMA控制器為存儲器到存儲器,存儲器到外設和外設到存儲器的傳輸提供了7個通道。每個通道都支持外設的DMA請求映射到任意通道上。
圖1. DMA控制器架構
DMAMUX簡介
對于如何將外設的DMA請求映射到任意的數據流通道上,就需要使用到DMAMUX。DMAMUX針對每個外設都設計了獨有的ID號,使用者只需要將此ID號寫入對應的寄存器中并打開DMAMUX功能即可。DMAMUX的引入,使得DMA相較于傳統DMA控制器變得更加靈活,使用者可以隨意的分配7個通道的使用情況,不必再糾結與某個IP的DMA請求只能固定使用在某個或某幾個通道上。
各IP對應ID號如下表:
表1. 各IP對應ID號列表
注:表格中“DMAMUX請求”為ID號;“來源”為各IP的DMA請求。
DMA功能解析
可編程數據寬度
DMA控制器的通道可支持傳輸不同數據寬度,byte/halfword/word。通過DMA_CxCTRL中的PWIDTH和MWIDTH位可以對源數據和目標數據的數據寬度進行編程,通常情況下需要設置PWIDTH和MWIDTH位相等,當PWIDTH不等于MWIDTH時,會依據PWIDTH/MWIDTH設定將資料對齊。 圖2. PWIDTH:byte, MWIDTH:half-word
圖3. PWIDTH:half-word, MWIDTH:word
配置DMAMUX
在M2P與P2M模式下,必須配置DMAMUX,否則DMA不會響應外設DMA請求。DMAMUX的作用是為外設的DMA請求復用通道,即任何一個外設的DMA請求可以映射到DMA1/DMA2的任意通道,這大大增加了DMA通道分配的靈活性。
配置DMAMUX比較減到,只需調用專門提供的兩個接口函數即可:
DMA配置解析
以下對DMA的配置接口及流程進行說明。
函數接口
表2. 通道配置函數列表
數據流配置
設置外設地址(CxPADDR寄存器)
數據傳輸的初始外設地址,在傳輸過程中不可被改變。
設置存儲器地址(CxMADDR寄存器)
數據傳輸的初始內存地址,在傳輸過程中不可被改變。
配置數據傳輸量(CxDTCNT寄存器)
可編程的傳輸數據長度最大為65535。在傳輸過程中,該傳輸數據量的值會逐漸遞減。
數據流配置(CxCTRL寄存器)
包含通道優先級,數據傳輸的方向、寬度、地址增量模式、循環模式和中斷方式。
優先級(CHPL)
分為4個等級,最高優先級、高優先級、中等優先級和低優先級。
若有2個流優先級設定相同,則較低編號的流有較高的優先權。舉例,流1優先于流2。
數據傳輸方向(DTD)
分為存儲器到外設(M2P),外設到存儲器(P2M)或存儲器到存儲器(M2M)傳輸。
在存儲器到存儲器傳輸模式下不允許使用循環模式、雙緩沖模式和直接模式。
數據傳輸寬度(PWIDTH/MWIDTH)
根據實際使用情景,可配置寬度為byte、halfword、word。
地址增量模式(PINCM/MINCM)
當通道配置設定為增量模式時,下一筆傳輸的地址將是前一筆傳輸地址加上傳輸寬度(PWIDTH/MWIDTH)。
循環模式(LM)
當流配置設定為循環模式時,在最后一次傳輸后CxDTCNT寄存器的內容會恢復成初始值。
使能DMAMUX(MUXSEL寄存器的TBL_SEL位)
在非存儲器到存儲器(M2M)模式下時,需要使能DMAMUX功能,才能啟動數據流響應外設的DMA請求。
寫入外設ID號(MUXCxCTRL寄存器的REQSEL)
在非存儲器到存儲器(M2M)模式下時,需要將外設的DMA請求ID號寫入,才能啟動數據流響應外設的DMA請求。
打開數據流(CxCTRL寄存器的CHEN位)
配置流程
打開DMA時鐘;
調用通道復位函數復位數據流;
調用結構體初始化函數初始化通道配置結構體;
調用初始化函數初始化通道;
調用DMAMUX使能函數以及ID號寫入函數配置DMAMUX相關內容;
調用通道使能函數開啟通道。
審核編輯 :李倩
-
寄存器
+關注
關注
31文章
5355瀏覽量
120546 -
存儲器
+關注
關注
38文章
7502瀏覽量
163936 -
dma
+關注
關注
3文章
562瀏覽量
100635
原文標題:雅特力AT32F435/437 DMA使用指南
文章出處:【微信號:mcugeek,微信公眾號:MCU開發加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論