談到adc,我們還要第一次引入另外乙個重要的裝置dma.
dma是什麼東西呢。
通常在8位微控制器時代,很少有這個概念。
在外置資源越來越多以後,
我們把乙個mcu內部分為 主處理器 和 外設兩個部分。
主處理器當然是執行我們指令的主要部分,
外設則是 串列埠 i2c adc 等等用來實現特定功能的裝置
回憶一下,8位時代,我們的主處理器最常幹的事情是什麼?
邏輯判斷?不是。那才幾個指令
計算演算法?不是。大部分時候演算法都很簡單。
事實上,主處理器就是作個搬運工,
把usart的資料接收下來,存起來
把adc的資料接收下來,存起來
把要傳送的資料,存起來,乙個個的往usart裡放。
…………
為了解決這個矛盾,
人們想到乙個辦法,讓外設和記憶體間建立乙個通道,
在主處理器允許下,
讓外設和記憶體直接 讀寫,這樣就釋放了主處理器,
這個東西就是dma。
打個比方:
乙個mcu是個公司。
老闆就是主處理器
員工是外設
倉庫就是記憶體
從前 倉庫的東西都是老闆管的。
員工需要原料工作,就乙個個報給老闆,老闆去倉庫裡乙個乙個拿。
員工作好的東西,乙個個給老闆,老闆乙個個放進倉庫裡。
老闆很累,雖然老闆是超人,也受不了越來越多的員工和單子。
最後老闆僱了乙個倉庫保管員,它就是dma
他專門負責 入庫和出庫,
只需要把出庫 和入庫計畫給老闆過目
老闆說ok,就不管了。
後面的入庫和出庫過程,
員工只需要和這個倉庫保管員打交道就可以了。
STM32 DMA原理特性
dma,直接儲存器訪問。dma 傳輸方式無需 cpu 直接控制傳輸,也沒有中斷處理方式那樣保留現場和恢復現場的過程,通過硬體為 ram 與 i o 裝置開闢一條直接傳送資料的通路,能使 cpu 的效率大為提高。stm32f4 最多有 2 個 dma 控制器 dma1 和 dma2 共 16 個資料流...
STM32 DMA的學習筆記
dma配置參考stm32學習手冊即可 函式說明 dma1的x通道初始化,可完成儲存器到儲存器 外設到儲存器 如串列埠1的接收 儲存器到外設的初始化 如串列埠1的傳送 引數說明 dma1 channe1x dma1第x通道 x 1.7 cpar 外設位址,cmap 儲存器位址 turn 傳輸方向,0 ...
STM32 DMA 學習筆記(一)
dma 傳輸將資料從乙個位址空間複製到另外乙個位址空間。不需要cpu干涉 傳統的資料傳輸 位址a cpu 位址b dma資料傳輸 位址a 位址b 這樣也就為cpu減負了 含有兩個通道,dma1有7個通道,dma2有5個通道。每一乙個通道都可以連線乙個外設。那麼就有乙個仲裁器,來處理了通道間的優先順序...