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
    +关注

    关注

    147

    文章

    18605

    浏览量

    387027
  • FAT32
    +关注

    关注

    0

    文章

    33

    浏览量

    14546
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    雅特力AT32 MCU推动低空经济发展

    雅特力AT32系列MCU凭借288MHz主频与高精度外设,为无人机飞控、电调及云台提供核心算力支持,实现厘米级定位与高效动力控制,显著提升在电力巡检、农林植保等低空经济场景下的作业精度与可靠性,助力产业智能化升级。
    的头像 发表于 12-04 09:53 820次阅读
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>推动低空经济发展

    探索DS90LV004:四通道1.5Gbps LVDS缓冲器/中继器的卓越性能

    缓冲器/中继器——DS90LV004。 文件下载: DS90LV004TVS.pdf 一、DS90LV004概述 DS90LV004是一款功能强大的四
    的头像 发表于 12-01 10:26 210次阅读
    探索DS90LV<b class='flag-5'>004</b>:四<b class='flag-5'>通道</b>1.5Gbps LVDS缓冲器/中继器的卓越性能

    利用DMA如何降低MCU功耗?

    利用DMA(直接内存访问)降低MCU功耗的核心在于最小化CPU介入,通过硬件自动完成数据传输任务,使CPU能尽可能长时间处于休眠状态。 CPU休眠时间最大化 DMA接管数据搬运(如外设↔内存、内存
    发表于 11-18 07:34

    AG32 内置的CPLD 的DMA功能如何实现?

    与CPLD进行通信 2、DMA配置流程 •在MCU端预先配置DMA控制器,设置读取CPLD中已准备数据的参数 •
    发表于 10-31 15:42

    SPI主机/从机接收发送都开启DMA通信

    AT32_SPI主机/从机接收发送都开启DMA通信 示例目的 本示例代码展示了如何使用 AT32DMA 进行 SPI 数据传输。SPI 作为主机时,接收和发送同时开启 DMA
    发表于 09-10 16:56

    AG32:dma在cpld中的使用

    cpld中实现DMA的逻辑: Mcu为master,cpld为slave,mcu对cpld的交互方式为存取寄存器的方式; mcu配置
    发表于 08-12 09:22

    AT32 MCU如何使用IAP

    工具和示例源码 。 设置地址分布 配置地址空间 :在AT32 MCU的内存中正确配置地址空间是非常重要的。通常,bootloader代码存放在较低的地址段,而app代码紧随其后。例如
    发表于 08-08 17:13

    无法配置 ADC1 来触发 DMA 传输,怎么解决?

    ,必须在 SCU.DMAP_ADC.ADC1_CMPHI0/ADC1_CMPLO0 中分配 DMA 通道,并且 DMA [i]必须进行相应配置,请参阅
    发表于 07-21 06:57

    AT32 IAP using the USART

    对于AT32 MCU,除了出厂固化的bootloader,用户也可以在应用程序中编写自己的bootloader程序,用于最终产品的固件更新。此功能称为应用程序内编程(IAP)。 本应用笔记的目的
    发表于 07-11 10:51

    AT32的ERTC与RTC的区别

    AT32单片机系列中包含两种实时时钟(RTC)模块:标准的RTC和增强型RTC(ERTC)。以下是两者的区别: 功能丰富性 RTC :提供基本的计数功能,以秒为单位递增,范围从0x00000000到
    发表于 07-11 10:48

    第十五章 DMA

    本章介绍DMA(直接存储器存取),其可在不占用CPU的情况下搬数据,支持多种传输方向,含控制器、通道配置及相关实验代码。
    的头像 发表于 06-14 16:32 1112次阅读
    第十五章 <b class='flag-5'>DMA</b>

    stm32f407无法配置定时器2为全部dma怎么解决?

    本人使用定时器2配置为4个通道dma捕获时,出现stream6和stream7这两个对应的通道无法同时存在,在都配置的情况下,只要这两个对
    发表于 06-11 06:49

    STM32G030F6 ADC+DMA通道非连续采样无法正常工作怎么解决?

    配置:使用STM32G030F6 ADC外设时,ADC使用两个通道DMA配置为循环模式,ADC扫描模式+非连续采样。 问题:初始化阶段能进一次DM
    发表于 03-12 07:10

    爱普特微电子推出超高性价比全国产RISC核32位MCU—APT32F004X

    近日,爱普特微电子凭借自研的微处理器IP库及在RISC核架构领域的深厚积累,重磅推出了APT32F004X。这款全国产32位MCU,凭借其卓越的性能、丰富的外设资源以及超高的性价比,势必将为相关领域
    的头像 发表于 01-20 20:00 1191次阅读
    爱普特微电子推出超高性价比全国产RISC核32位<b class='flag-5'>MCU</b>—APT32F<b class='flag-5'>004</b>X

    ZYNQ基础---AXI DMA使用

    Xilinx官方也提供有一些DMA的IP,通过调用API函数能够更加灵活地使用DMA。 1. AXI DMA的基本接口 axi dma IP
    的头像 发表于 01-06 11:13 3577次阅读
    ZYNQ基础---AXI <b class='flag-5'>DMA</b>使用