單片機如何學習?今天我們要講的是單片機STM32中有關DMA的用途。提到DMA,相信很多剛學習32的朋友們在剛接觸到這個名詞時想到的可能是What? 學個生物還要懂單片機的遺傳史? 當然不是,此DMA非彼DNA。他的中文名叫做直接存儲器存取(Direct Memory Access,DMA)是計算機科學中的一種內存訪問技術。它允許某些電腦內部的硬體子系統(電腦外設),可以獨立地直接讀寫系統存儲器,而不需繞道 CPU。在同等程度的CPU負擔下,DMA是一種快速的數據傳送方式。它允許不同速度的硬件裝置來溝通,而不需要依于 CPU的大量中斷請求。
啥意思呢?直接一點,DMA呢是計算機中數據的搬運工。單片機如何學習中, 一般來說機器中聰明的就是cpu,cpu指揮著各種手下如IO、中斷、ADC等工作著,但這些硬件資源的工作需要和cpu間溝通聯系才能進行。如下圖1所示,ADC經過模數轉換將模擬量轉換為數字量后,你想要把這個數字量用作他用(一般是進入內存),比如顯示出來或用來計算,這個過程本質上其實是需要我們將數據傳輸到程序的運行空間,也就是內存中使用,而這個過程一般要經過cpu的把關處理才能完成,cpu相當于整個系統的大腦。
但是如此的話cpu會非常的忙,因為一個系統運行處理的數據量非常大,并且更嚴重的是有些系統需要讓我們實現幾個功能的互不影響。比如你想要一邊通過攝像頭獲取圖片數據,一邊想要延時的讓程序計算識別這些圖像數據,如果既讓CPU做圖像拷貝搬運,又讓cpu做圖像處理,就會出現cpu過載問題,在平時生活中的現象就是“卡死”。所以為了解決這個問題,DMA的作用就體現了出來,既然cpu要一邊搬運數據一邊處理會忙死,那么就把搬運過程交給DMA,cpu不管這塊了。如下圖所示,紅色過程是cpu要兩者兼顧,而添加了綠色的DMA通道搬運數據,cpu只要專心管處理計算就好,這無疑減輕了cpu的負擔,讓系統能夠完成更多的事情。
看圖可以知道,cpu是系統大腦,現在不需要經過大腦,那意味著DMA只能完成簡單重復的工作,而他的職責是做好一名搬運工,所以在使用DMA過程中重要的就是確定起始地和目的地,當然還包括兩地點連接的“路線”。 具體DMA在stm32中如何使用,單片機如何學習,可咨詢粵嵌的嵌入式培訓老師哦。