概述
在使用Artery部分系列MCU时(如AT32F413AT32F415AT32F403AAT32F407),可以使用DMA弹性映射功能。此功能使得DMA的通道配置更加灵活,可以将某外设的DMA请求通道指定到DMA1或者DMA2共14个通道中的任意一个通道。(如:可以将SPI1接受数据的DMA请求指定到DMA1的通道7)。
本指南将介绍如何使用DMA弹性映射请求,从而使得DMA传输变得更加灵活多变。
配置及使用方法
常规DMA使用(DMA固定映射)
常规的DMA使用以及配置方式为:外设的DMA通道已经固定且不可改变,使用时配置好再使能固定通道即可。这就意味着如果想开启某个外设的DMA功能,那么通道是不可改变的,例如想使用SPI1的RX DMA功能,那么就要查看RM的手册,如下:
表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为例,如下:
表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弹性映射模式的配置。库函数说明如下:
表3. DMA弹性映射库函数说明
此函数只需在配置好DMA常规功能后调用即可,如下:
图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相关的配置代码:
实验结果可采用逻辑分析仪抓取GPIO口数据查看。
关于雅特力
雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器创新趋势的芯片(MCU)设计公司,专注于ARM Cortex-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM Cortex-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。
雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G、物联网、消费、商务及工控等领域。
审核编辑 :李倩
-
mcu
+关注
关注
146文章
17370浏览量
352987 -
寄存器
+关注
关注
31文章
5377浏览量
121394 -
dma
+关注
关注
3文章
566浏览量
101100
原文标题:AT32 MCU DMA通道的灵活配置
文章出处:【微信号:mcugeek,微信公众号:MCU开发加油站】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
这些云服务器弹性公网ip连接方式,你知道几种?
ZYNQ基础---AXI DMA使用
![ZYNQ基础---AXI <b class='flag-5'>DMA</b>使用](https://file1.elecfans.com/web3/M00/04/ED/wKgZPGd7SvCAE7QTAAAid90C1HA013.png)
服务器如何处理 HTTP 请求
如何调试 HTTP 请求和响应
DMA是什么?详细介绍
2k1000LA中关于IODMA请求的描述
揭秘车载VCU项目之外挂界的“大哥”DMA
![揭秘车载VCU项目之外挂界的“大哥”<b class='flag-5'>DMA</b>](https://file.elecfans.com/web2/M00/20/B3/pYYBAGGfNNmAK-PZAAJsGM5Cgk0227.jpg)
路由器映射是什么意思?路由器端口映射怎么设置?
请问STM32L4R5ZI的DMA/DMAMUX是怎么管理请求?
定时器TIM2输出TRGO信号,DMA使用DMA_REQUEST_TIM2_UP请求可以实现吗?
什么是DMA?DMA究竟有多快!
![什么是<b class='flag-5'>DMA</b>?<b class='flag-5'>DMA</b>究竟有多快!](https://file1.elecfans.com/web2/M00/C1/78/wKgaomXWtRCALEl2AAA1Wp3r0qM288.png)
评论