DMA:Data Memory Access,直接存儲器訪問。主要功能:可以把數據從一個地方搬到另一個地方,而且不佔用cpu
(可用於led,lcd)
DMA1和DMA2各有7個通道,可以實現P(外設)->M(內存),M->P,M->M
DMA功能框圖:
1,DMA請求,
2,通道 (DMA1 7個通道 DMA2 5個通道)
3,仲裁
<1>軟件 DMA_CCRX(寄存器)
<2>硬件 同一個DMA:先比較優先級,在比較通道號,通道號越小,優先級越高。
不同DMA:DMA1>DMA2
DMA編程: (以stm32爲例)
1 DMA_Initdef結構體初始化
{結構體成員:1 外設地址DMA_CPAR 存儲器地址DMA_CMAR 傳輸方向,DMA_CCR:DIR (哪來到哪去)
2 傳輸數目DMA_CNDTR 外設地址是否遞增DMA_CCRx:PINC 內存地址是否遞增DMA_CCRx:MINC 外設數據寬度DMA_CCRx:PSIZE 存儲數據寬度DMA_CCRx:MSIZE (數量與單位)
3 傳輸模式DMA_CCRx:CIRC 傳輸過半,傳輸完成,傳輸錯誤DMA_ISR(完成度)
}