天天看點

STM32 DMA介紹

DMA功能簡介

DMA:Direct Memory Access,直接存儲器存取,是一種大大減少CPU工作量的資料存取方式,被廣泛的使用。

在硬體系統中,主要由CPU(核心)、外設、記憶體(SRAM)、總線等結構組成,資料經常在記憶體和與外設之間轉移,或從外設A轉移到外設B。例如:在CPU需要處理由ADC外設采集回來的資料時,CPU首先要把資料從ADC外設的寄存器讀取到記憶體中,然後進行運算處理,這是一般的處理方法。

在轉移資料的過程中會占用CPU十分寶貴的資源,我們希望CPU更多的被用在資料運算或者響應中斷之中,而資料轉移的工作交由其他部件完成。DMA正是為CPU分擔資料轉移的工作。因為DMA的存在CPU才被解放出來,它可以在DMA資料轉移的過程中同時進行資料運算、響應中斷,大大提高效率。

DMA工作分析

STM32 DMA介紹

在上圖中,可以清晰的看到STM32核心、存儲器、外設及DMA的連接配接。

所有這些硬體結構最終都通過各種各樣的線連接配接到總線矩陣之中,硬體結構之間的資料轉移都經過總線矩陣的協調,使各個外設都能夠和諧的使用總線來傳輸資料。例如,在不使用DMA的情況下,核心通過DCode經過總線協調,使用AHB把外設ADC的采集的資料讀取到核心,然後核心DCode再通過總線矩陣協調,把資料存放到記憶體SRAM中。

使用了DMA之後,DMA正好可以取代這樣的工作,由DMA控制器的DMA總線和總線矩陣協調,使用AHB把外設ADC采集的資料經由DMA通道存放到記憶體SRAM。在這個資料傳輸的過程中,不需要核心的全程參與,是以核心可以同時進行資料運算。而且,DMA方式是點到點的資料轉移,而不使用DMA方式還要以核心作為中轉站,顯然DMA傳輸方式的效率更高。

繼續閱讀