0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AT32讲堂004 | AT32 MCU DMA通道的灵活配置

雅特力 AT32 MCU 2022-05-10 09:57 次阅读

概述

在使用Artery部分系列MCU时(如AT32F413\AT32F415\AT32F403A\AT32F407),可以使用DMA弹性映射功能。此功能使得DMA的通道配置更加灵活,可以将某外设的DMA请求通道指定到DMA1或者DMA2共14个通道中的任意一个通道。(如:可以将SPI1接受数据的DMA请求指定到DMA1的通道7)。

本指南将介绍如何使用DMA弹性映射请求,从而使得DMA传输变得更加灵活多变。

配置及使用方法

常规DMA使用(DMA固定映射)

常规的DMA使用以及配置方式为:外设的DMA通道已经固定且不可改变,使用时配置好再使能固定通道即可。这就意味着如果想开启某个外设的DMA功能,那么通道是不可改变的,例如想使用SPI1的RX DMA功能,那么就要查看RM的手册,如下:

表1. DMA固定映射请求

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

从表格中可以知道需要开启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弹性请求一览

9e5a4f52-c7e6-11ec-8521-dac502259ad0.png上表中的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.h\dma.c的库文件中有提供相应的库函数,使用者只需调用库函数即可完成DMA弹性映射模式的配置。库函数说明如下:表3. DMA弹性映射库函数说明9e7d845e-c7e6-11ec-8521-dac502259ad0.png

此函数只需在配置好DMA常规功能后调用即可,如下:

图1. DMA固定映射库函数调用范例9e98c476-c7e6-11ec-8521-dac502259ad0.png上图中为设置TIMER1的更新中断为DMA弹性映射请求范例。

例程说明

DMA弹性映射功能在BSP中例程,路径为:AT32F403A_407_Firmware_Library_V2.x.x\project\at_start_f403a\examples\dma\data_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相关的配置代码:9eb5aa1e-c7e6-11ec-8521-dac502259ad0.png实验结果可采用逻辑分析仪抓取GPIO口数据查看。

关于雅特力雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器创新趋势的芯片(MCU)设计公司,专注于ARM Cortex-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM Cortex-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G物联网、消费、商务及工控等领域。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16018

    浏览量

    343639
  • FAT32
    +关注

    关注

    0

    文章

    32

    浏览量

    13631
收藏 人收藏

    评论

    相关推荐

    如何使用AT32 MCU WDT和WWDT?

    如何使用AT32 MCU WDT和WWDT?
    的头像 发表于 11-10 18:26 544次阅读
    如何使用<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> WDT和WWDT?

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

    Segger Jscope波形软件在AT32 MCU的使用
    的头像 发表于 11-10 18:24 710次阅读
    Segger Jscope波形软件在<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的使用

    如何在AT32 MCU上使用FPU功能

    如何在AT32 MCU上使用FPU功能
    的头像 发表于 11-01 17:18 3658次阅读
    如何在<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>上使用FPU功能

    关于AT32 MCU温度传感器的应用

    关于AT32 MCU温度传感器的应用
    的头像 发表于 10-27 09:44 264次阅读
    关于<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>温度传感器的应用

    AT32 MCU Printf的功能使用方法

    AT32 MCU Printf的功能使用方法
    的头像 发表于 10-27 09:27 453次阅读
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> Printf的功能使用方法

    AT32 MCU如何使用USB MSD 进行IAP升级?

    AT32 MCU如何使用USB MSD 进行IAP升级?
    的头像 发表于 10-27 09:23 625次阅读
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>如何使用USB MSD 进行IAP升级?

    如何使用AT32的TMR和DMA动态更新PWM占空比

    本示例代码基于 AT32F403A,展示了如何使用 AT32 的 TMR 和 DMA 动态更新 PWM 占空比。该示例使用 TMR4 的更新事件触发 DMA1 搬运数据至 TMR4 的通道
    发表于 10-27 06:28

    AT32 MCU DMA通道灵活配置

    AT32 MCU DMA通道灵活配置
    的头像 发表于 10-26 17:51 461次阅读
    <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开发环境中,使用Embedded IDE管理AT32项目。
    发表于 10-26 07:38

    AT32 MCU USART应用说明

    AT32 MCU USART Application Note介绍了AT32 的USART 功能,并对BSP 例程的软件设计加以说明,同时演示使用方法并展示实验效果,供用户参考。
    发表于 10-25 08:11

    AT32 MCU ACC使用指南

    AT32 MCU ACC使用指南AT32 MCU 拥有HICK 自动时钟校准器,其作用是当系统内部使用HICK 作为时钟源时,若外界环境改变等因素导致HICK 时钟差生偏差时,可利用H
    发表于 10-25 07:24

    AT32 MCU SDRAM应用说明

    AT32 MCU SDRAM Application Note本文主要讲解AT32 SDRAM 控制器的使用。
    发表于 10-25 06:37

    AT32 MCU DAC应用说明

    的模拟输出。数字部分可以配置为 8 位或者 12 位模式,支持单/双 DAC 的左对齐或者右对齐,同时可以与 DMA 配合使用。下表 AT32 型号均支持两路 DAC,DAC1/DAC2 各有一个数
    发表于 10-25 06:31

    AT32 MCU CAN入门指南

    AT32 MCU CAN入门指南本文介绍了CAN 标准协议,AT32 CAN 的使用流程以及基于AT32 的几个CAN 使用例程。
    发表于 10-25 06:01

    AT32 MCU Develop with VSCode

    电子发烧友网站提供《AT32 MCU Develop with VSCode.pdf》资料免费下载
    发表于 09-19 15:22 0次下载
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> Develop with VSCode