①DMA介紹
②STM32F4-DMA功能框圖及詳解
③DMA的增量設(shè)置、模式、中斷
①DMA介紹
DMA是direct memory access的縮寫,即直接存儲(chǔ)器訪問;DMA是通過硬件在RAM和IO設(shè)備之間開辟一條通道,使得采集到的數(shù)據(jù)直接存到RAM,使得數(shù)據(jù)的傳輸不需要經(jīng)過CPU讀數(shù)據(jù)再將數(shù)據(jù)放入RAM、這樣極大提高了CPU的效率。
②STM32F4-DMA功能框圖及詳解
外設(shè)通道:
STM32F4具有2個(gè)DMA控制器,每個(gè)DMA控制器有8個(gè)數(shù)據(jù)流,每個(gè)數(shù)據(jù)流可以從8個(gè)外設(shè)請(qǐng)求中選擇一個(gè)作為該數(shù)據(jù)流的外設(shè)通道;外設(shè)通道就是數(shù)據(jù)流的源地址或者目標(biāo)地址;外設(shè)通道的選擇可以通過DMA數(shù)據(jù)流x的配置寄存器DMA_SxCR的CHSEL[2:0]位配置;
以下是DMA1的外設(shè)通道表:
數(shù)據(jù)流仲裁:當(dāng)同時(shí)存在多個(gè)數(shù)據(jù)流在工作時(shí),需要數(shù)據(jù)流仲裁器管理判斷數(shù)據(jù)流的優(yōu)先傳輸;數(shù)據(jù)流傳輸?shù)膬?yōu)先級(jí)可以通過配置控制寄存器DMA_SxCR的PL[1:0]位,來選擇優(yōu)先級(jí)為非常高、高、中、低;當(dāng)多個(gè)數(shù)據(jù)流的優(yōu)先級(jí)相同時(shí),數(shù)據(jù)流的編號(hào)越低、優(yōu)先級(jí)越高;
數(shù)據(jù)FIFO:
每個(gè)數(shù)據(jù)流都有一個(gè)4字(16字節(jié)、4個(gè)32位寄存器)FIFO(先進(jìn)先出存儲(chǔ)器緩沖區(qū)),DMA的傳輸具有FIFO模式和直接模式;
直接模式:當(dāng)出現(xiàn)DMA請(qǐng)求時(shí),會(huì)進(jìn)行數(shù)據(jù)的傳輸?shù)酱鎯?chǔ)器;若DMA的請(qǐng)求配置設(shè)置為存儲(chǔ)器到外設(shè)模式傳輸數(shù)據(jù)時(shí),DMA會(huì)將數(shù)據(jù)從存儲(chǔ)器預(yù)加載到FIFO中、當(dāng)外設(shè)觸發(fā)DMA請(qǐng)求時(shí)數(shù)據(jù)立即傳輸給外設(shè);
FIFO模式:當(dāng)數(shù)據(jù)量達(dá)到一定數(shù)量時(shí),進(jìn)行數(shù)據(jù)的傳輸;可以通過配置DMA_SxFCR的FTH[1:0]位來設(shè)置FIFO的閾值級(jí)別為FIFO的1/4 、2/4 、3/4。如果數(shù)據(jù)量達(dá)到閾值則FIFO中的數(shù)據(jù)將被傳輸?shù)侥繕?biāo)地址;
4-5、外設(shè)端口、存儲(chǔ)器端口:
DMA1的控制器的存儲(chǔ)器端口接在AHB總線上,外設(shè)端口接在APB1外設(shè)上;所以DMA1可以控制數(shù)據(jù)在外設(shè)與存儲(chǔ)器之間傳輸,但不能實(shí)現(xiàn)數(shù)據(jù)在存儲(chǔ)器與存儲(chǔ)器之間傳輸;
DMA2的控制器的存儲(chǔ)器端口和外設(shè)端口都有接到AHB總線上說以與DMA1相比,DMA2比DMA1多一個(gè)數(shù)據(jù)在存儲(chǔ)器與存儲(chǔ)器之間傳輸?shù)哪J剑?/p>
③DMA的增量設(shè)置、模式、中斷
DMA的傳輸模式:DMA的傳輸模式有外設(shè)與外設(shè)之間的傳輸、外設(shè)與存儲(chǔ)器之間的傳輸、存儲(chǔ)器與存儲(chǔ)器之間的傳輸;模式的選擇可以通過DMA_SxCR寄存器的DIR[1:0]位控制;
DMA傳輸?shù)脑?、目的、長(zhǎng)度:
外設(shè)寄存器地址在DMA_SxPA寄存器中設(shè)置;
存儲(chǔ)器地址在DMA_SxM0AR寄存器中設(shè)置;
數(shù)據(jù)的傳輸量在寄存器DMA_CNDTRx中設(shè)置
傳輸數(shù)據(jù)的位寬在DMA_SxCR寄存器的PSIZE MSIZE位設(shè)置(盡量設(shè)置為一致)
DMA的增量設(shè)置:
通過設(shè)置DMA_SxCR寄存器中的PINC MINC位的狀態(tài),可以使得外設(shè)和存儲(chǔ)器在每次數(shù)據(jù)傳輸后地址遞增或地址不變;當(dāng)選擇為遞增模式后,地址的增量就是數(shù)據(jù)的位寬
循環(huán)模式:循環(huán)模式用于循環(huán)處理緩存區(qū)和連續(xù)的數(shù)據(jù)傳輸(ADC的掃描模式),可以通過DMA_SxCR寄存器中的CIRC位來選擇為循環(huán)模式;循環(huán)模式下當(dāng)一輪數(shù)據(jù)傳輸完成后,下一次開始的地址和上一次的數(shù)據(jù)傳輸?shù)刂芬粯樱?/p>
DMA的單次傳輸和突發(fā)傳輸:
DMA有單次傳輸和突發(fā)傳輸,DMA控制器可以產(chǎn)生4、8、16個(gè)節(jié)拍的增量突發(fā)傳輸(原本一次傳輸一個(gè)數(shù)據(jù)位寬,4個(gè)節(jié)拍就是4個(gè)數(shù)據(jù)位寬一次性一起傳輸);突發(fā)傳輸?shù)拇笮⊥ㄟ^DMA_SxCR寄存器中的MBURST[1:0]和PBURST[1:0]位對(duì)兩個(gè)AHB端口獨(dú)立配置;
在突發(fā)傳輸下、AHB的總線仲裁器會(huì)一直授權(quán)給DMA主總線AHB的傳輸會(huì)鎖定其它總線暫時(shí)使用不了,使得突發(fā)傳輸不可被打斷從而保證了數(shù)據(jù)的一致性;
每個(gè)DMA數(shù)據(jù)流在傳輸?shù)臅r(shí)候可以觸發(fā)以下中斷:
在DMA_xISR中可以設(shè)置、查看狀態(tài);
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7518瀏覽量
164072 -
cpu
+關(guān)注
關(guān)注
68文章
10889瀏覽量
212373 -
STM32
+關(guān)注
關(guān)注
2270文章
10915瀏覽量
356735 -
dma
+關(guān)注
關(guān)注
3文章
566瀏覽量
100741 -
STM32F4
+關(guān)注
關(guān)注
3文章
194瀏覽量
28104
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論