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

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

3天内不再提示

AT32 MCU DMA通道的灵活配置

jf_pJlTbmA9 来源:AT32 MCU 雅特力科技 作者:AT32 MCU 雅特力科技 2023-10-26 17:51 次阅读

概述

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

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

配置及使用方法

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

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

wKgZomUD6fuASqJeAABodJE0UP0528.png 表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为例,如下:

wKgZomUD6fyAXEeEAAR2KrmKQqs797.png 表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弹性映射模式的配置。

库函数说明如下:

wKgZomUD6f6AIyTKAACV8WLN5Wo109.png 表3. DMA弹性映射库函数说明

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

wKgaomUD6f-AH6FoAAJ_TvUrqHs155.png 图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相关的配置代码:

wKgaomUD6gGALgBaAATFUDg4zQ4776.png

实验结果可采用逻辑分析仪抓取GPIO口数据查看。

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理

审核编辑 黄宇

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

    关注

    146

    文章

    16022

    浏览量

    343682
  • dma
    dma
    +关注

    关注

    3

    文章

    536

    浏览量

    99068
收藏 人收藏

    评论

    相关推荐

    使用AT32 MCU实现OTP寄存器功能

    对于AT32 MCU不同的系列,因为功能改进等原因,安全库区的配置使用可能有所差异。用户使用OTP功能主要目的是需要将一些特殊数据保存其中,在需要时可以读取,并且不允许修改和擦除。目前AT32
    发表于 07-08 12:49 1162次阅读

    AT32系列MCU使用RT-Thread Studio IDE进行开发的注意事项和配置步骤

    AT32基于RT-Thread Studio开发描述了AT32系列MCU使用RT-Thread Studio IDE进行开发的注意事项和配置步骤。
    发表于 10-24 08:12

    AT32 MCU SDRAM应用说明

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

    AT32 MCU USART应用说明

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

    AT32 MCU DAC应用说明

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

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

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

    MCU学习笔记_DMA原理

    MCU学习笔记DMA原理1. DMA原理2. DMA相关概念3. DMA数据流配置过程4. HA
    发表于 10-28 15:06 8次下载
    <b class='flag-5'>MCU</b>学习笔记_<b class='flag-5'>DMA</b>原理

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

    概述在使用Artery部分系列MCU时(如AT32F413\AT32F415\AT32F403A\AT32F407),可以使用DMA弹性映射功能。此功能使得DMA通道
    的头像 发表于 05-10 09:57 1574次阅读
    <b class='flag-5'>AT32</b>讲堂004 | <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>

    AT32讲堂049 | 雅特力AT32F435/437 DMA使用指南

    DMA简介DMA控制器的作用不仅在增强系统性能并减少处理器的中断生成,而且还针对32位MCU应用程序专门优化设计。DMA控制器为存储器到存储器,存储器到外设和外设到存储器的传输提供了7
    的头像 发表于 03-31 11:04 1107次阅读
    <b class='flag-5'>AT32</b>讲堂049 | 雅特力AT32F435/437 <b class='flag-5'>DMA</b>使用指南

    AT32讲堂058 | 雅特力AT32F425 DMA使用指南

    DMA简介IDMA控制器的作用不仅在增强系统性能并减少处理器的中断生成,而且还针对32位MCU应用程序专门优化设计。DMA控制器为存储器到存储器,存储器到外设和外设到存储器的传输提供了7个通道
    的头像 发表于 06-21 17:19 778次阅读
    <b class='flag-5'>AT32</b>讲堂058 | 雅特力AT32F425 <b class='flag-5'>DMA</b>使用指南

    如何使用AT32 MCU WDT和WWDT?

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

    如何在AT32 MCU上使用FPU功能

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

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

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

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

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

    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