通信電纜 網絡設備 無線通信 云計算|大數據 顯示設備 存儲設備 網絡輔助設備 信號傳輸處理 多媒體設備 廣播系統 智慧城市管理系統 其它智慧基建產品
沈陽芯碩科技有限公司
1 | 1 |
---|
什么是 DMA?
DMA(直接內存訪問控制器)功能塊可以不通過 CPU 高速傳輸數據。使用 DMA 能提高系統性能。
DMA 的重要特征?
DMA 獨立于 CPU 總線的總線,所以即便是在使用 CPU 總線的時候, DMA 也可進行傳輸操作。
1
摘要
本篇應用筆記主要介紹如何使用 HC32F460 系列芯片的 DMA 模塊傳輸數據。
2
DMA 簡介
什么是 DMA?
DMA(直接內存訪問控制器)功能塊可以不通過 CPU 高速傳輸數據。使用 DMA 能提高系統性能。
DMA 的重要特征?
DMA 獨立于 CPU 總線的總線,所以即便是在使用 CPU 總線的時候, DMA 也可進行傳輸操作。
3
HC32F460 系列的 DMA
3.1
簡介
HC32F460 系列 MCU 內部集成 DMAC 模塊,能夠在 CPU 不參與的情況下實現存儲器之間,存儲器和外圍功能模塊之間以及外圍功能模塊之間的數據交換。
3.2
說明
DMAC 總線獨立于 CPU 總線,按照 AMBA AHB-Lite 總線協議傳輸。
擁有 2 個 DMA 控制單元,共 8 個獨立通道,可以獨立操作不同的 DMA 傳輸功能。兩個控制單元受不同處理器控制,可以同時獨立使用。每個通道的啟動資源通過獨立的觸發源選擇寄存器配置。每次請求傳輸一個數據塊,數據塊最小為 1 個數據,最多為 1024 個數據。每個數據的寬度可配置為 8bit,16bit,32bit。源地址和目標地址可以獨立配置為固定、自增、自減、循環或偏移量的跳轉。可產生 3 種中斷:塊傳輸完成中斷,傳輸完成中斷,傳輸錯誤中斷。每種中斷都可配置是否屏蔽。其中塊傳輸完成,傳輸完成可作為事件輸出,作為其他外圍模塊的觸發源。支持連鎖傳輸功能,可實現一次請求傳輸多個數據塊。支持外部事件觸發通道重置。不使用時可設置進入模塊停止狀態以降低功耗。
3.2.1 寄存器介紹
1) DMA_EN:DMA 使能寄存器,使能或關閉 DMA 模塊。
2) DMA_CHEN:通道使能寄存器,使能或關閉 DMA 通道,bit0~3 分別對應一個通道。
3) DMA_INSTAT0~1:中斷狀態寄存器(傳輸請求溢出錯誤中斷、傳輸錯誤中斷、塊傳輸完成中斷、傳輸完成中斷)。
4) DMA_INTMASK0~1:中斷屏蔽寄存器,配置各中斷是否屏蔽。
5) DMA_INTCLR0~1:中斷復位寄存器,清空中斷狀態標志位。
6) DMA_RCFGCTL:通道重置寄存器,配置 DMA 重置后的相關參數,包括:剩余傳輸次數計數方式、目標/源地址重置方式、通道選擇、鏈式傳輸等。
7) DMA_CHSTAT:通道狀態觀測寄存器。
8) DMA_TRGSEL0~3:觸發源選擇寄存器,配置各通道啟動傳輸的觸發源,配置前需打開PWR_FCG0 寄存器的 AOS 位。
9) DMA_TRGSELRC:通道重置觸發源選擇寄存器,配置啟動通道重置的觸發源。
10) DMA_SAR0~3:源地址寄存器,配置傳輸源地址。
11) DMA_DAR0~3:目標地址寄存器,配置傳輸目標地址。
12) DMA_DTCTL0~3:數據控制寄存器,配置傳輸次數和數據塊大小。
13) DMA_RPT0~3:重復區域大小寄存器,配置源地址和目標地址重復區域大小。
14) DMA_RPTBB0~3: 重復區域大小寄存器 B,配置源地址和目標地址重復區域大小。
15) DMA_SNSEQCTL0~3: 源設備不連續地址傳輸控制寄存器,配置源地址跳轉的地址偏移和源地址跳轉的數據量
16) DMA_SNSEQCTLB0~3: 源設備不連續地址傳輸控制寄存器 B,配置源不連續區域地址間距和源地址跳轉的數據量
17) DMA_DNSEQCTL0~3: 目標設備不連續地址傳輸控制寄存器,配置目標地址跳轉的地址偏移量和數據量
18) DMA_DNSEQCTLB0~3: 目標設備不連續地址傳輸控制寄存器 B,配置目標不連續區域地址間距和目標地址跳轉數據量
19) DMA_LLP0~3: 鏈指針寄存器,配置鏈指針
20) DMA_CHxCTL(x=0~3):通道控制寄存器
21) DMA_MONSARx , DMA_MONDARx , DMA_MONDTCTLx , DMA_MONRPTx ,DMA_MONSNSEQCTLx,DMA_MONDNSEQCTLx:通道監視寄存器,DMA 每完成一次傳輸請求后更新
3.2.2 工作流程介紹
本章節主要介紹 DMA 傳輸模式的設置和運行流程。
1) 重載傳輸
該傳輸可以配置源地址、目標地址在增加/減少至寄存器配置的重復區域大小時重新返回至最初的地址設定值。重復區域的大小由寄存器 DMA_RPT DMA_CHxCTL.HSIZE 的設定值決定。
2) 不連續傳輸
該傳輸可以傳輸數量的數據后,地址將跳過偏移量,當地址重載與不連續跳轉的條件同時滿足時,執行地址重載。
3) 連鎖傳輸
該傳輸當一個描述符的最后傳輸結束時,LLP 的下一個描述符將被從存儲器中載入通道配置寄存器。等待下一次傳輸請求輸入,開始新描述符的一次傳輸。或者根據寄存器 DMA_CHxCTLx.LLPRUN 的設置,在載入新描述符后直接開始一次傳輸。
4) 通道重置傳輸
通道重置功能,是指通過外圍電路的事件請求來修改通道內部狀態寄存器,重新配置下一次數據的傳輸方式。
5) 傳輸提前終止
傳輸過程中通道使能寄存器 DMA_CHEN.CHENx 保持有效,非連鎖傳輸時,數據控制寄存器 DMA_DTCTLx 設定的傳輸次數完成后自動置為無效,連鎖傳輸時,最后傳輸的傳輸次數完成后自動置為無效。傳輸過程中如果軟件寫 DMA_CHEN.CHENx 為 0,則 DMA將在完成當次數據讀寫后終止傳輸。
4
樣例代碼
4.1
代碼介紹
用戶可根據上述的工作流程編寫自己的代碼來學習驗證該模塊,也可以直接通過華大半導體的網站下載到設備驅動庫(Device Driver Library, DDL)的樣例代碼并使用其中的 DMA 的樣例進行驗證。
4.2 代碼運行
用戶可以通過華大半導體的網站下載到 HC32F460 的 DDL 的樣例代碼
(dmac_reload_address),并配合評估用板(EV-HC32F460-LQFP100-050-V1.1)運行相關代碼學習使用 DMA 模塊。以下部分主要介紹如何在評估板上運行 DMA 樣例代碼并觀察結果:
- 確認安裝正確的 IAR EWARM v7.7 工具(請從 IAR *網站下載相應的安裝包,并參考用戶手冊進行安裝)。
- 從華大半導體網站下載 HC32F460 DDL 代碼。
您感興趣的產品PRODUCTS YOU ARE INTERESTED IN
智慧城市網 設計制作,未經允許翻錄必究 .? ? ?
請輸入賬號
請輸入密碼
請輸驗證碼
請輸入你感興趣的產品
請簡單描述您的需求
請選擇省份