DMA理解

   單片機的DMA使用心得
本人也是最近才深入瞭解一下DMA,前期使用單片機的時候基本上沒有用到。一是不需要用到,二是心理上覺得DMA比較困難,所以不使用。在學習的過程中有一些心得體會,與大家分享一下。
首先介紹一下啥子是DMA,說的通俗易懂一點就是一個搬運工。既然是搬運工,就有幾個需要注意的問題。
1.        從哪裏搬運到哪裏   一般是特殊寄存器到RAM(我們自己定義的數組裏面),或者相反。
2.        一次搬運多少  一般是一個字節或者兩個字節。
3.        搬多少的東西。
4.        什麼時候開始搬  即DMA的中斷源,簡單的就是說別人有東西來了,你才能搬。在單片機裏面可以表現爲,串口接收到數據了,就開始搬到RAM,或者AD採樣結束了,就開始搬運。當然這裏需要提前配置好對應模塊的寄存器。
5.        搬運結束了,DMA產生中斷。就是搬運工把東西都搬完了,來找CPU結賬來了,這時候CPU就要告訴他,要麼你重新繼續搬運,要麼停止工作,等待新指令。
DMA基本上就這些
   這裏以AD採樣,然後利用DMA把數據傳輸到指定的數組裏面爲例作個簡單的說明

1.        初始化DMA,說明從搬運從AD採樣結果的寄存器開始,搬到我們自己定義的數組裏面,每次搬一個字節的數據,每次搬完了目標地址+1,搬512次,在AD採樣結束後纔開始搬運。
2.        初始化AD,這裏不做介紹,和配置普通AD一樣,採用軟件觸發方式,連續採樣。
3.        配置完了就在主函數裏面開始了,先初始化DMA,在初始化AD,打開DMA,然後打開AD採樣。這時候AD就開不斷在採集數據。每次採樣完成後,就會有一次AD中斷,AD中斷每次產生,DMA就會把數據搬到我們制定的數組裏面。
4.        當DMA搬了我們那麼多的,這裏是512個數據的時候,就會產生中斷,我們在中斷裏面就要告訴DMA,搬的目標地址又變回去,搬的數目又變成512,然後又打開DMA,讓他再次爲我們工作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章