概述
在使用Artery部分系列MCU時(如AT32F413AT32F415AT32F403AAT32F407),可以使用DMA彈性映射功能。此功能使得DMA的通道配置更加靈活,可以將某外設的DMA請求通道指定到DMA1或者DMA2共14個通道中的任意一個通道。(如:可以將SPI1接受數據的DMA請求指定到DMA1的通道7)。
本指南將介紹如何使用DMA彈性映射請求,從而使得DMA傳輸變得更加靈活多變。
配置及使用方法
常規DMA使用(DMA固定映射)
常規的DMA使用以及配置方式為:外設的DMA通道已經固定且不可改變,使用時配置好再使能固定通道即可。這就意味著如果想開啟某個外設的DMA功能,那么通道是不可改變的,例如想使用SPI1的RX DMA功能,那么就要查看RM的手冊,如下:
表1. DMA固定映射請求
從表格中可以知道需要開啟DMA1的通道2。
DMA彈性映射使用
DMA彈性映射請求功能提供了一種更靈活的使用方式,即外設的DMA通道不固定,可選擇DMA1和DMA2中,共14個通道的任意一個通道。想要使用此功能,需要通過以下幾步的設定:
1) 開啟DMA彈性映射功能
將DMA的通道來源寄存器1的第24bit寫1,即DMA_SRC_SEL1寄存器的DMA_FLEX_EN位。向通道設置對應的寄存器中寫入相應的硬件ID號。每個外設的DMA請求都分配了一個硬件ID號,只要將這個ID號寫進通道來源寄存器中即可。ID號可查看RM中的表格,以403A為例,如下:
表2. 403A各個信道的DMA彈性請求一覽
上表中的CHx_SRC設定值就是硬件ID號,將這個ID號寫進通道來源寄存器中的對應通道bit位就可以了。例如:要將SPI1的RX的DMA請求映射到DMA1的通道7,那么就要將0x09寫入到DMA_SRC_SEL1寄存器的CH7_SRC[23:16]。其他配置與常規DMA配置相同通過以上3步的配置,彈性映射功能即可使用。
注:DMA1/2的DMA_FLEX_EN必須要同時設定為1或時,DMA1/2的映像模式必須一致。無法DMA1是固定式映像,DMA2是彈性式映像。
2) DMA彈性映射庫函數使用
以上的配置在BSP中的dma.hdma.c的庫文件中有提供相應的庫函數,使用者只需調用庫函數即可完成DMA彈性映射模式的配置。庫函數說明如下:
表3. DMA彈性映射庫函數說明
此函數只需在配置好DMA常規功能后調用即可,如下:
圖1. DMA固定映射庫函數調用范例
上圖中為設置TIMER1的更新中斷為DMA彈性映射請求范例。
例程說明
DMA彈性映射功能在BSP中例程,路徑為:AT32F403A_407_Firmware_Library_V2.x.xprojectat_start_f403aexamplesdmadata_to_gpio_flexible(以403A路徑為例)
下面將對這兩個例程做一個使用說明。
? data_to_gpio_flexible
例程data_to_jpio_flexible
本例程實現的功能為利用DMA將SRAM的數據傳輸到GPIO口的輸出寄存器中,從而達到控制GPIO口輸出的目的。同時配置TMER2產生overflow中斷并產生DMA請求,配置次DMA請求為彈性映射模式。TIMER2每產生一次DMA請求,DMA就從SRAM搬運一筆數據到GPIO口。DMA相關的配置代碼:
實驗結果可采用邏輯分析儀抓取GPIO口數據查看。
關于雅特力
雅特力科技于2016年成立,是一家致力于推動全球市場32位微控制器創新趨勢的芯片(MCU)設計公司,專注于ARM Cortex-M4/M0+的32位微控制器研發與創新,全系列采用55nm先進工藝及ARM Cortex-M4高效能或M0+低功耗內核,締造M4業界最高主頻288MHz運算效能,并支持工業級別芯片工作溫度范圍(-40°~105°)。
雅特力目前已累積相當多元的終端產品成功案例:如微型打印機、掃地機、光流無人機、熱成像儀、激光雷達、工業縫紉機、伺服驅控、電競周邊市場、斷路器、ADAS、T-BOX、數字電源、電動工具等終端設備應用,廣泛地覆蓋5G、物聯網、消費、商務及工控等領域。
審核編輯 :李倩
-
mcu
+關注
關注
146文章
16992瀏覽量
350310 -
寄存器
+關注
關注
31文章
5317瀏覽量
120006 -
dma
+關注
關注
3文章
559瀏覽量
100429
原文標題:AT32 MCU DMA通道的靈活配置
文章出處:【微信號:mcugeek,微信公眾號:MCU開發加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論