目錄
dma的定義及傳輸要素
dma的傳輸過程
dma的優缺點及其適用場景
stm32中dma的特點
stm32中dma的優先順序機制
stm32中dma的傳輸模式
stm32中dma的常用初始化過程
dma的常用庫函式(主要在初始化時結構體變數的設定)
dma的引入——讓cpu做更有意義的工作
cpu——經理
資料——物品
外設——銷售或採購
儲存器——倉庫
定義
dma控制器 —— 倉庫保管員
dma(
direct memory access
,直接儲存器訪問),是一種完全由硬體執行資料交換的工作方式。它由dma控制器而不是cpu來控制在儲存器和儲存器、儲存器和外設之間的批量資料傳輸。
傳輸要素
傳輸源 傳輸目標 傳輸資料量 觸發訊號
dma請求
cpu初始化dma控制器,外設(i/o介面)發出dma請求。
dma響應
dma控制器判斷dma請求的優先順序及遮蔽,向匯流排仲裁器提出匯流排請求。
當cpu執行完當前匯流排週期時,可釋放匯流排控制權。此時,匯流排仲裁器輸出匯流排應答,表示dma已經響應,dma控制器從cpu接管對匯流排的控制,並通知外設(i/o介面)開始dma傳輸。
dma傳輸
dma資料以規定的傳輸單位(通常是字)傳輸,每個單位的資料傳送完成後,dma控制器修改位址,並對傳送單位的個數進行計數,繼而開始下乙個單位資料的傳送,如此迴圈往復,直至達到預先設定的傳送單位數量為止。
dma結束
當規定數量的dma資料傳輸完成後,dma控制器通知外設(i/o介面)停止傳輸,並向cpu傳送乙個訊號(產生中斷或事件)報告dma資料傳輸操作結束,同時釋放匯流排控制權。
優點
cpu利用率 資料傳輸效率 使用者軟體開發**
缺點
在一段時間內獨佔匯流排
資料傳輸量過大,會導致中斷延時較長,實時性強不適用
適用
高速、成組資料的傳輸
仲裁器根據通道請求的優先順序來啟動外設/儲存器的訪問。
優先權管理分2個階段:
● 軟體:每個通道的優先權可以在
dma_ccrx
暫存器中設定,有
4個等級:
─ 最高優先順序
─ 高優先順序
─ 中等優先順序
─ 低優先順序
● 硬體:通道編號越小優先順序越高,如果2個請求有相同的軟體優先順序,則較低編號的通道比較高編號的通道有較高的優先權。舉個例子,通道2優先於通道4。
stm32微控制器支援迴圈模式和普通模式兩種工作模式,
迴圈模式用於處理迴圈緩衝區和連續的資料傳輸(如adc的掃瞄模式)。在dma_ccrx暫存器中的circ位用於開啟這一功能。當啟動了迴圈模式,資料傳輸的數目變為0時,將會自動地被恢復成配置通道時設定的初值,dma操作將會繼續進行。
初始化引數
dma_deinit:將dmay的通道x的暫存器恢復為復位啟動時的預設值。
dma_init:根據dma_initstruct中指定的引數初始化指定dma通道的暫存器。
dma_getcurrdatacounter:返回當前指定dma通道剩餘的待傳輸資料數目。
dma_cmd:使能或者禁止指定的dma通道。
dma_getflagstatus:查詢指定的dma通道的標誌位狀態。
dma_clearflag:清除指定的dma通道的待處理標誌位。
dma_itconfig:使能或禁止指定的dma通道中斷。
dma_getitstatus:查詢指定dmay的通道x的中斷的狀態。
dma_clearitpendingbit:清除dmay的通道x的中斷掛起位。
嵌入式系統應用
不論是日常生活中經常使用的家庭自動化產品 家用電器 手提 自動櫃員機 atm 還是各行各業的辦公裝置 現代化醫療裝置 航空電子 計算機網路裝置 用於工業 自動化和監測的可程式設計邏輯控制器 plc 甚至是娛樂裝置的固定遊戲機和可攜式遊戲機 等,都屬於嵌入式系統。歸納起來,嵌入式系統的應用領域可以包括...
嵌入式實時作業系統ucos ii 原理與應用(六)
第七章 動態記憶體管理 7.1 記憶體控制塊 c os 對記憶體進行兩級管理,即把乙個連續的記憶體空間分為若干各分割槽,每個分割槽分為若干個大小相等的記憶體塊。作業系統以分割槽為單位來管理動態記憶體,而任務以記憶體塊為單位來獲取和釋放動態記憶體。7.1.1 可動態分配記憶體劃分 1.記憶體塊 c o...
Linux 嵌入式系統啟動原理
一.linux系統啟動原理 bootrom是出廠固化在裡面的,檢視啟動模式,是sd卡啟動還是spiflash啟動等,或者其他啟動方式,查詢boot.bin 或者.mcs檔案。將fsbl拷貝到ddr中執行,並載入uboot到ddr。uboot看成是乙個小的作業系統,用來引到linux系統的核心 通常由...