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