DMA主要功能:
- 傳輸數據,但不需要佔用CPU。
- 數據支持從外設到存儲器或者從存儲器到存儲器(SRAM或Falsh)
DMA控制器獨立於內核,包含DMA1和DMA2,其中DMA1有7個通道,DMA2有5個通道,可看成傳輸數據的管道,DMA2只存在於大容量的單片機中。
從編程的角度看,只需掌握以下3部分即可:
1.DMA請求
外設要通過DMA來傳輸數據,必須向DMA控制器發送DMA請求。不同的DMA控制器的通道對應不同的外設請求。
2.通道
每個通道雖然可以接受多個外設請求,但是同一時間只能接受一個,不能同時接收多個。
3.仲裁器
響應先後順序由仲裁器管理。分爲兩個階段:
- 1.軟件階段,可以在DMA_CCRx寄存器中設置,有4個等級:非常高、高、中和低
- 2.硬件階段,如果兩個或以上DMA請求設置的優先級一樣,則它們的優先級取決於通道編號,編號越低優先級越高。
DMA配置注意事項:
- 數據從哪裏來,到哪裏去
- 傳輸數據的單位是什麼,要傳多少
- 什麼時候傳輸完成(一次傳輸還是循環傳輸)