0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AT32講堂004 | AT32 MCU DMA通道的靈活配置

雅特力 AT32 MCU ? 2022-05-10 09:57 ? 次閱讀

概述

在使用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)求

9e433768-c7e6-11ec-8521-dac502259ad0.png

從表格中可以知道需要開(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)求一覽

9e5a4f52-c7e6-11ec-8521-dac502259ad0.png上表中的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ō)明9e7d845e-c7e6-11ec-8521-dac502259ad0.png

此函數(shù)只需在配置好DMA常規(guī)功能后調(diào)用即可,如下:

圖1. DMA固定映射庫(kù)函數(shù)調(diào)用范例9e98c476-c7e6-11ec-8521-dac502259ad0.png上圖中為設(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)的配置代碼:9eb5aa1e-c7e6-11ec-8521-dac502259ad0.png實(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)域。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16667

    瀏覽量

    347771
  • FAT32
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    13703
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何使用AT32 MCU WDT和WWDT?

    如何使用AT32 MCU WDT和WWDT?
    的頭像 發(fā)表于 11-10 18:26 ?1491次閱讀
    如何使用<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> WDT和WWDT?

    Segger Jscope波形軟件在AT32 MCU的使用

    Segger Jscope波形軟件在AT32 MCU的使用
    的頭像 發(fā)表于 11-10 18:24 ?1736次閱讀
    Segger Jscope波形軟件在<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的使用

    如何在AT32 MCU上使用FPU功能

    如何在AT32 MCU上使用FPU功能
    的頭像 發(fā)表于 11-01 17:18 ?3864次閱讀
    如何在<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>上使用FPU功能

    關(guān)于AT32 MCU溫度傳感器的應(yīng)用

    關(guān)于AT32 MCU溫度傳感器的應(yīng)用
    的頭像 發(fā)表于 10-27 09:44 ?569次閱讀
    關(guān)于<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>溫度傳感器的應(yīng)用

    AT32 MCU Printf的功能使用方法

    AT32 MCU Printf的功能使用方法
    的頭像 發(fā)表于 10-27 09:27 ?833次閱讀
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> Printf的功能使用方法

    AT32 MCU如何使用USB MSD 進(jìn)行IAP升級(jí)?

    AT32 MCU如何使用USB MSD 進(jìn)行IAP升級(jí)?
    的頭像 發(fā)表于 10-27 09:23 ?950次閱讀
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>如何使用USB MSD 進(jìn)行IAP升級(jí)?

    如何使用AT32的TMR和DMA動(dòng)態(tài)更新PWM占空比

    本示例代碼基于 AT32F403A,展示了如何使用 AT32 的 TMR 和 DMA 動(dòng)態(tài)更新 PWM 占空比。該示例使用 TMR4 的更新事件觸發(fā) DMA1 搬運(yùn)數(shù)據(jù)至 TMR4 的通道
    發(fā)表于 10-27 06:28

    AT32 MCU DMA通道靈活配置

    AT32 MCU DMA通道靈活配置
    的頭像 發(fā)表于 10-26 17:51 ?876次閱讀
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>DMA</b><b class='flag-5'>通道</b>的<b class='flag-5'>靈活</b><b class='flag-5'>配置</b>

    帶VSCode EIDE的AT32 MCU

    AT32 MCU With VSCode EIDE描述了VSCode開(kāi)發(fā)環(huán)境中,使用Embedded IDE管理AT32項(xiàng)目。
    發(fā)表于 10-26 07:38

    AT32 MCU USART應(yīng)用說(shuō)明

    AT32 MCU USART Application Note介紹了AT32 的USART 功能,并對(duì)BSP 例程的軟件設(shè)計(jì)加以說(shuō)明,同時(shí)演示使用方法并展示實(shí)驗(yàn)效果,供用戶(hù)參考。
    發(fā)表于 10-25 08:11

    AT32 MCU ACC使用指南

    AT32 MCU ACC使用指南AT32 MCU 擁有HICK 自動(dòng)時(shí)鐘校準(zhǔn)器,其作用是當(dāng)系統(tǒng)內(nèi)部使用HICK 作為時(shí)鐘源時(shí),若外界環(huán)境改變等因素導(dǎo)致HICK 時(shí)鐘差生偏差時(shí),可利用H
    發(fā)表于 10-25 07:24

    AT32 MCU SDRAM應(yīng)用說(shuō)明

    AT32 MCU SDRAM Application Note本文主要講解AT32 SDRAM 控制器的使用。
    發(fā)表于 10-25 06:37

    AT32 MCU DAC應(yīng)用說(shuō)明

    的模擬輸出。數(shù)字部分可以配置為 8 位或者 12 位模式,支持單/雙 DAC 的左對(duì)齊或者右對(duì)齊,同時(shí)可以與 DMA 配合使用。下表 AT32 型號(hào)均支持兩路 DAC,DAC1/DAC2 各有一個(gè)數(shù)
    發(fā)表于 10-25 06:31

    AT32 MCU CAN入門(mén)指南

    AT32 MCU CAN入門(mén)指南本文介紹了CAN 標(biāo)準(zhǔn)協(xié)議,AT32 CAN 的使用流程以及基于AT32 的幾個(gè)CAN 使用例程。
    發(fā)表于 10-25 06:01

    AT32 MCU如何設(shè)定啟動(dòng)存儲(chǔ)器為主存擴(kuò)展

    AT32 MCU如何設(shè)定啟動(dòng)存儲(chǔ)器為主存擴(kuò)展
    的頭像 發(fā)表于 10-18 17:50 ?474次閱讀
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>如何設(shè)定啟動(dòng)存儲(chǔ)器為主存擴(kuò)展