DMA簡(jiǎn)介
DMA控制器的作用不僅在增強(qiáng)系統(tǒng)性能并減少處理器的中斷生成,而且還針對(duì)32位MCU應(yīng)用程序?qū)iT(mén)優(yōu)化設(shè)計(jì)。DMA控制器為存儲(chǔ)器到存儲(chǔ)器,存儲(chǔ)器到外設(shè)和外設(shè)到存儲(chǔ)器的傳輸提供了7個(gè)通道。每個(gè)通道都支持外設(shè)的DMA請(qǐng)求映射到任意通道上。圖1. DMA控制器架構(gòu)
DMAMUX簡(jiǎn)介
對(duì)于如何將外設(shè)的DMA請(qǐng)求映射到任意的數(shù)據(jù)流通道上,就需要使用到DMAMUX。DMAMUX針對(duì)每個(gè)外設(shè)都設(shè)計(jì)了獨(dú)有的ID號(hào),使用者只需要將此ID號(hào)寫(xiě)入對(duì)應(yīng)的寄存器中并打開(kāi)DMAMUX功能即可。DMAMUX的引入,使得DMA相較于傳統(tǒng)DMA控制器變得更加靈活,使用者可以隨意的分配7個(gè)通道的使用情況,不必再糾結(jié)與某個(gè)IP的DMA請(qǐng)求只能固定使用在某個(gè)或某幾個(gè)通道上。
各IP對(duì)應(yīng)ID號(hào)如下表:
表1. 各IP對(duì)應(yīng)ID號(hào)列表注:表格中“DMAMUX請(qǐng)求”為ID號(hào);“來(lái)源”為各IP的DMA請(qǐng)求。
DMA功能解析
可編程數(shù)據(jù)寬度
DMA控制器的通道可支持傳輸不同數(shù)據(jù)寬度,byte/halfword/word。通過(guò)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
配置DMAMUX
在M2P與P2M模式下,必須配置DMAMUX,否則DMA不會(huì)響應(yīng)外設(shè)DMA請(qǐng)求。DMAMUX的作用是為外設(shè)的DMA請(qǐng)求復(fù)用通道,即任何一個(gè)外設(shè)的DMA請(qǐng)求可以映射到DMA1/DMA2的任意通道,這大大增加了DMA通道分配的靈活性。
配置DMAMUX比較減到,只需調(diào)用專(zhuān)門(mén)提供的兩個(gè)接口函數(shù)即可:
DMA配置解析
以下對(duì)DMA的配置接口及流程進(jìn)行說(shuō)明。
函數(shù)接口
表2. 通道配置函數(shù)列表
數(shù)據(jù)流配置
- 設(shè)置外設(shè)地址(CxPADDR寄存器)
數(shù)據(jù)傳輸?shù)某跏纪庠O(shè)地址,在傳輸過(guò)程中不可被改變。
- 設(shè)置存儲(chǔ)器地址(CxMADDR寄存器)
數(shù)據(jù)傳輸?shù)某跏純?nèi)存地址,在傳輸過(guò)程中不可被改變。
- 配置數(shù)據(jù)傳輸量(CxDTCNT寄存器)
可編程的傳輸數(shù)據(jù)長(zhǎng)度最大為65535。在傳輸過(guò)程中,該傳輸數(shù)據(jù)量的值會(huì)逐漸遞減。
- 數(shù)據(jù)流配置(CxCTRL寄存器)
包含通道優(yōu)先級(jí),數(shù)據(jù)傳輸?shù)姆较?、寬度、地址增量模式、循環(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ù)成初始值。
使能DMAMUX(MUXSEL寄存器的TBL_SEL位)
在非存儲(chǔ)器到存儲(chǔ)器(M2M)模式下時(shí),需要使能DMAMUX功能,才能啟動(dòng)數(shù)據(jù)流響應(yīng)外設(shè)的DMA請(qǐng)求。
寫(xiě)入外設(shè)ID號(hào)(MUXCxCTRL寄存器的REQSEL)
在非存儲(chǔ)器到存儲(chǔ)器(M2M)模式下時(shí),需要將外設(shè)的DMA請(qǐng)求ID號(hào)寫(xiě)入,才能啟動(dòng)數(shù)據(jù)流響應(yīng)外設(shè)的DMA請(qǐng)求。
打開(kāi)數(shù)據(jù)流(CxCTRL寄存器的CHEN位)
配置流程
- 打開(kāi)DMA時(shí)鐘;
- 調(diào)用通道復(fù)位函數(shù)復(fù)位數(shù)據(jù)流;
- 調(diào)用結(jié)構(gòu)體初始化函數(shù)初始化通道配置結(jié)構(gòu)體;
- 調(diào)用初始化函數(shù)初始化通道;
- 調(diào)用DMAMUX使能函數(shù)以及ID號(hào)寫(xiě)入函數(shù)配置DMAMUX相關(guān)內(nèi)容;
- 調(diào)用通道使能函數(shù)開(kāi)啟通道。
關(guān)于雅特力雅特力科技于2016年成立,是一家致力于推動(dòng)全球市場(chǎng)32位微控制器(MCU)創(chuàng)新趨勢(shì)的芯片設(shè)計(jì)公司,專(zhuān)注于ARM Cortex-M4/M0+的32位微控制器研發(fā)與創(chuàng)新,全系列采用55nm先進(jìn)工藝及ARM Cortex-M4高效能或M0+低功耗內(nèi)核,締造M4業(yè)界最高主頻288MHz運(yùn)算效能,并支持工業(yè)級(jí)別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當(dāng)多元的終端產(chǎn)品成功案例:如微型打印機(jī)、掃地機(jī)、光流無(wú)人機(jī)、熱成像儀、激光雷達(dá)、工業(yè)縫紉機(jī)、伺服驅(qū)控、電競(jìng)周邊市場(chǎng)、斷路器、ADAS、T-BOX、數(shù)字電源、電動(dòng)工具等終端設(shè)備應(yīng)用,廣泛地覆蓋5G、物聯(lián)網(wǎng)、消費(fèi)、商務(wù)及工控等領(lǐng)域。
-
控制器
+關(guān)注
關(guān)注
112文章
16473瀏覽量
179659 -
dma
+關(guān)注
關(guān)注
3文章
566瀏覽量
101036
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
雅特力AT32F402/F405時(shí)鐘配置
![<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32<b class='flag-5'>F</b>402/<b class='flag-5'>F</b>405時(shí)鐘配置](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
雅特力AT32F402/F405 DMA使用指南
![<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32<b class='flag-5'>F</b>402/<b class='flag-5'>F</b>405 <b class='flag-5'>DMA</b><b class='flag-5'>使用指南</b>](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
AT32講堂088 | 雅特力AT32F402/F405時(shí)鐘配置
![<b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>088 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32<b class='flag-5'>F</b>402/<b class='flag-5'>F</b>405時(shí)鐘配置](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
AT32講堂087 | 雅特力AT32 IDE快速入門(mén)指南
![<b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>087 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> IDE快速入門(mén)<b class='flag-5'>指南</b>](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
STM32CUBEMX(7)--移植雅特力AT32F403AVGT(兼容STM32F103VGT6),DAC輸出電壓
雅特力AT32 MCU的隨機(jī)數(shù)生成
![<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> MCU的隨機(jī)數(shù)生成](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
AT32講堂085 | 雅特力AT32 MCU HICK時(shí)鐘校準(zhǔn)
![<b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>085 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> MCU HICK時(shí)鐘校準(zhǔn)](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
GD32F10x 固件庫(kù)使用指南
雅特力AT32 MCU通過(guò)IEC 60730功能安全認(rèn)證,為家電產(chǎn)品提供安全保障
![<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> MCU通過(guò)IEC 60730功能安全認(rèn)證,為家電產(chǎn)品提供安全保障](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
雅特力AT32F423 PWC使用指南
![<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32<b class='flag-5'>F</b>423 PWC<b class='flag-5'>使用指南</b>](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
雅特力AT32 MCU與SEGGER攜手合作,開(kāi)發(fā)量產(chǎn)事半功倍
雅特力AT32F423 DMA使用指南
![<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32<b class='flag-5'>F</b>423 <b class='flag-5'>DMA</b><b class='flag-5'>使用指南</b>](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
雅特力AT32 MCU與SEGGER攜手合作,開(kāi)發(fā)量產(chǎn)事半功倍
![<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> MCU與SEGGER攜手合作,開(kāi)發(fā)量產(chǎn)事半功倍](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
雅特力AT32F423時(shí)鐘配置
![<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32<b class='flag-5'>F</b>423時(shí)鐘配置](https://file.elecfans.com/web2/M00/42/9C/pYYBAGJ5xmyARrXXAAALuRDQWfU330.jpg)
評(píng)論