DMA簡(jiǎn)介
IDMA控制器的作用不僅在增強(qiáng)系統(tǒng)性能并減少處理器的中斷生成,而且還針對(duì)32位MCU應(yīng)用程序?qū)iT優(yōu)化設(shè)計(jì)。DMA控制器為存儲(chǔ)器到存儲(chǔ)器,存儲(chǔ)器到外設(shè)和外設(shè)到存儲(chǔ)器的傳輸提供了7個(gè)通道。每個(gè)通道都支持外設(shè)的DMA請(qǐng)求映射到任意通道上。
圖1. DMA控制器架構(gòu)
DMA請(qǐng)求彈性映射簡(jiǎn)介
在使用AT43F425xx系列DMA時(shí),必須配置DMA請(qǐng)求彈性映射功能,否則DMA不會(huì)運(yùn)作。DMA請(qǐng)求彈性映射可將任意一個(gè)外設(shè)產(chǎn)生的DMA請(qǐng)求映射到通道1到通道7中的任意一個(gè)通道。
當(dāng)設(shè)定彈性模式時(shí)(DMA_FLEX_EN=1),每個(gè)通道的請(qǐng)求來源由CHx_SRC來設(shè)定[x=1~7]。使用例子:假如DMA通道1指定成I2C1_TX,通道3要指定成I2C1_RX,其他不使用,則設(shè)定上必須是DMA_FLEX_EN=1,CH1_SRC=11,CH3_SRC=10,CH[2/4/5/6/7]_SRC=0。
CHx_SRC設(shè)定值對(duì)應(yīng)請(qǐng)求來源見下表:
各IP對(duì)應(yīng)ID號(hào)如下表:
表1. 各IP對(duì)應(yīng)ID號(hào)列表
注:表格中“CHx_SRC”為ID號(hào);“請(qǐng)求來源”為各IP的DMA請(qǐng)求。
DMA功能解析
可編程數(shù)據(jù)寬度
DMA控制器的通道可支持傳輸不同數(shù)據(jù)寬度,byte/halfword/word。通過DMA_CxCTRL中的PWIDTH和MWIDTH位可以對(duì)源數(shù)據(jù)和目標(biāo)數(shù)據(jù)的數(shù)據(jù)寬度進(jìn)行編程,通常情況下需要設(shè)置PWIDTH和MWIDTH位相等,當(dāng)PWIDTH不等于MWIDTH時(shí),會(huì)依據(jù)PWIDTH/MWIDTH設(shè)定將資料對(duì)齊。
圖2. PWIDTH:byte, MWIDTH:half-word
圖3. PWIDTH:half-word, MWIDTH:word
配置DMA彈性映射
在M2P與P2M模式下,必須配置DMA彈性映射,否則DMA不會(huì)響應(yīng)外設(shè)DMA請(qǐng)求。DMA彈性映射的作用是為外設(shè)的DMA請(qǐng)求復(fù)用通道,即任何一個(gè)外設(shè)的DMA請(qǐng)求可以映射到DMA1的任意通道,這大大增加了DMA通道分配的靈活性。
配置DMA彈性映射比較簡(jiǎn)單,只需調(diào)用專門提供的接口函數(shù)即可:
DMA配置解析
以下對(duì)DMA的配置接口及流程進(jìn)行說明。
函數(shù)接口
表2. 通道配置函數(shù)列表
數(shù)據(jù)流配置
設(shè)置外設(shè)地址(CxPADDR寄存器)
數(shù)據(jù)傳輸?shù)某跏纪庠O(shè)地址,在傳輸過程中不可被改變。
設(shè)置存儲(chǔ)器地址(CxMADDR寄存器)
數(shù)據(jù)傳輸?shù)某跏純?nèi)存地址,在傳輸過程中不可被改變。
配置數(shù)據(jù)傳輸量(CxDTCNT寄存器)
可編程的傳輸數(shù)據(jù)長(zhǎng)度最大為65535。在傳輸過程中,該傳輸數(shù)據(jù)量的值會(huì)逐漸遞減。
數(shù)據(jù)流配置(CxCTRL寄存器)
包含通道優(yōu)先級(jí),數(shù)據(jù)傳輸?shù)姆较颉挾取⒌刂吩隽磕J健⒀h(huán)模式和中斷方式。
優(yōu)先級(jí)(CHPL)
分為4個(gè)等級(jí),最高優(yōu)先級(jí)、高優(yōu)先級(jí)、中等優(yōu)先級(jí)和低優(yōu)先級(jí)。
若有2個(gè)流優(yōu)先級(jí)設(shè)定相同,則較低編號(hào)的流有較高的優(yōu)先權(quán)。舉例,通道1優(yōu)先于通道2。
數(shù)據(jù)傳輸方向(DTD)
分為存儲(chǔ)器到外設(shè)(M2P),外設(shè)到存儲(chǔ)器(P2M)或存儲(chǔ)器到存儲(chǔ)器(M2M)傳輸。在存儲(chǔ)器到存儲(chǔ)器傳輸模式下不允許使用循環(huán)模式、雙緩沖模式和直接模式。
數(shù)據(jù)傳輸寬度(PWIDTH/MWIDTH)
根據(jù)實(shí)際使用情景,可配置寬度為byte、halfword、word。
地址增量模式(PINCM/MINCM)
當(dāng)通道配置設(shè)定為增量模式時(shí),下一筆傳輸?shù)牡刂穼⑹乔耙还P傳輸?shù)刂芳由蟼鬏攲挾龋≒WIDTH/MWIDTH)。
循環(huán)模式(LM)
當(dāng)流配置設(shè)定為循環(huán)模式時(shí),在最后一次傳輸后CxDTCNT寄存器的內(nèi)容會(huì)恢復(fù)成初始值。
配置DMA彈性映射(DMA_SRC_SELx寄存器的CHx_SRC)
在非存儲(chǔ)器到存儲(chǔ)器(M2M)模式下時(shí),需要將外設(shè)的DMA請(qǐng)求DMA請(qǐng)求號(hào)寫入,才能啟動(dòng)通道響應(yīng)外設(shè)的DMA請(qǐng)求。
打開通道(CxCTRL寄存器的CHEN位)
配置流程
打開DMA時(shí)鐘;
調(diào)用通道復(fù)位函數(shù)復(fù)位數(shù)據(jù)流;
調(diào)用結(jié)構(gòu)體初始化函數(shù)初始化通道配置結(jié)構(gòu)體;
調(diào)用初始化函數(shù)初始化通道;
調(diào)用DMA請(qǐng)求映射使能函數(shù)配置彈性映射功能;
調(diào)用通道使能函數(shù)開啟通道。
審核編輯:湯梓紅
-
控制器
+關(guān)注
關(guān)注
112文章
16396瀏覽量
178512 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7513瀏覽量
163987 -
dma
+關(guān)注
關(guān)注
3文章
565瀏覽量
100665 -
雅特力
+關(guān)注
關(guān)注
0文章
158瀏覽量
8065 -
AT32
+關(guān)注
關(guān)注
1文章
113瀏覽量
2109
原文標(biāo)題:AT32講堂058 | 雅特力AT32F425 DMA使用指南
文章出處:【微信號(hào):AT32 MCU 雅特力科技,微信公眾號(hào):AT32 MCU 雅特力科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論