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