簡介
CH32V103系列是以青稞V3A處理器為核心的32位通用MCU,該處理器是基于RISC-V開源指令集設計。 片上集成了時鐘安全機制、多級電源管理、通用DMA控制器。 此系列具有1路USB2.0主機/設備接口、多通道12位ADC轉換模塊、多通道TouchKey、多組定時器、多路IIC/USART/SPI接口等豐富的外設資源。
關于DMA,具有三種數據傳輸方式:存儲器到存儲器、存儲器到外設、外設到存儲器。 前面已講解過關于存儲器到存儲器數據傳輸方式,本章將講解存儲器到外設的傳輸方式以及在下一章將會講解外設到存儲器的傳輸方式。 關于DMA存儲器到外設傳輸方式,程序中,首先定義一個靜態的源數據,存放在內部 FLASH中,然后通過DMA的方式傳輸到串口的數據寄存器,然后通過串口把這些數據發送到電腦的上位機顯示出來。
1、DMA簡介及相關函數介紹
直接存儲器訪問控制器(DMA)提供在外設和存儲器之間或者存儲器和存儲器之間的高速數據傳輸方式,無須CPU干預,數據可以通過DMA快速地移動,以節省CPU的資源來做其他操作。
DMA控制器有7個通道,每個通道專門用來管理來自于一個或多個外設對存儲器訪問的請求。 還有一個仲裁器來協調各通道之間的優先級。
DMA作為一種高效、高速的數據傳輸方式,具有以下幾個特性:
具有7個獨立可配置通道,且每個通道都連接專用的硬件DMA請求,并支持軟件觸發
支持循環的緩沖器管理
多個通道之間的請求優先權可以通過軟件編程設置(最高、高、中和低),優先權設置相等時由通道號決定(通道號低優先級高)
支持三種傳輸方式:存儲器到存儲器、存儲器到外設、外設到存儲器
閃存、SRAM、外設的SRAM、APB1、APB2和AHB外設均可作為訪問的源和目標
獨立數據源獨立數據源和目標數據區的傳輸寬度(字節、半字、全字),模擬打包和拆包的過程。 源和目標地址必須按數據傳輸寬度對齊。
每個通道都有3個事件標志(DMA傳輸過半、DMA傳輸完成和DMA傳輸錯誤),這3個事件標志邏輯或成為一個單獨的中斷請求
關于DMA具體信息,可參考CH32V103應用手冊。 DMA標準庫函數第十三章已做過介紹,在此不再贅述。
2、硬件設計
本章教程所用資源均為CH32V103開發板內部資源,無需進行其他硬件連接,只需進行程序配置即可。
3、軟件設計
本章主要進行存儲器到外設的DMA數據傳輸方式,其相較于存儲器到存儲器的傳輸方式,程序中對DMA配置進行一些修改即可,具體如下:
dma.h文件
dma.h文件主要進行函數聲明;
dma.c文件
4、下載驗證
將編譯好的程序下載到開發板并復位,可見存儲器存儲數據被發送到串口:
-
處理器
+關注
關注
68文章
19160瀏覽量
229116 -
mcu
+關注
關注
146文章
16988瀏覽量
350302 -
存儲器
+關注
關注
38文章
7452瀏覽量
163603 -
dma
+關注
關注
3文章
559瀏覽量
100424 -
RISC-V
+關注
關注
44文章
2228瀏覽量
46026
發布評論請先 登錄
相關推薦
評論