【经验】雅特力AT32 MCU如何灵活使用DMA弹性映射请求?


在使用雅特力部分系列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固定映射请求
从表格中可以知道需要开启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.h\dma.c的库文件中有提供相应的库函数,使用者只需调用库函数即可完成DMA弹性映射模式的配置。库函数说明如下:
表3. DMA弹性映射库函数说明
此函数只需在配置好DMA常规功能后调用即可,如下:
图1. DMA固定映射库函数调用范例
上图中为设置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相关的配置代码:
实验结果可采用逻辑分析仪抓取GPIO口数据查看。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由天星转载自雅特力,原文标题为:AT32讲堂004 | AT32 MCU DMA通道的灵活配置,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】雅特力MCU在Keil和IAR中开启和关闭浮点运算单元(FPU)的配置方法及注意事项
雅特力MCU的AT32F403A、AT32F407、AT32F413系列采用基于ARM 32位的Cortex M4内核微控制器,内建浮点运算单元(FPU)和存储器保护单元(MPU),内建单周期乘法和硬件除法,具有DSP指令集。本文介绍在Keil和IAR中开启和关闭浮点运算单元(FPU)的配置方法和注意事项。
【经验】雅特力MCU如何在Keil中将函数或变量编译到指定地址
在使用雅特力MCU AT32F403A,AT32F421,AT32F413,AT32F415做软件编程中,有时会有将函数或者变量加载到固定的Flash地址,本文介绍2种将变量或函数编译到指定地址的方法。
【经验】雅特力AT32 MCU如何使用OTA通过USART实现对固件的在线升级更新
雅特力AT32 MCU如何使用OTA通过USART对固体在线升级更新?OTA(空中下载技术)是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后便于通过预留的通信口,对产品中的固件程序进行更新升级。
基于AT32 MCU的低压电机控制评估板用户手册
本资料为AT32 MCU低电压电机控制评估板V2.0的用户手册,旨在指导用户如何使用该评估板。评估板适用于AT32F4xx、AT32A4xx、AT32L0xx系列MCU,支持BLDC、AC同步电机和异步电机的驱动。主要特点包括:通用低电压三相电机驱动、适用于所有AT32 MCU的MCU插座、霍尔传感器和编码器接口、制动电阻接口、三相输出电压传感电路、三相电流传感电阻、内置过流保护电路、支持有传感器和无传感器FOC矢量控制算法、适用于家庭、商业和工业电机控制应用。资料详细介绍了硬件布局、电路设计、系统架构、跳线和连接器位置、引脚映射、原理图和布局等信息。
雅特力 - MCUS,基于MCU的低压电机控制评估板,MCU-BASED LOW VOLTAGE MOTOR CONTROL EVALUATION BOARD,MCU,AT32F4XX,AT32F423,AT32F413,AT32F435,AT32F425,AT32F415,AT32F405,AT32A403A,AT32F55,AT32,AT32L0XX,AT32L021,AT32A4XX,AT32F403A,AT32F421
【经验】雅特力AT32 MCU CAN入门指南
CAN是Controller Area Network的缩写(以下称为CAN),它的设计目标是以最小的CPU负荷来高效处理大量的报文。本文介绍雅特力AT32 MCU CAN入门指南
解析如何在雅特力AT32 MCU上实现关键词语音识别(KWS)
对于KWS,实时响应和高精度才能获得良好的用户体验。最近,神经网络已成为KWS架构的一个有吸引力的选择,因为与传统的语音处理算法相比,它们具有更高的准确性。本文将为您介绍如何在雅特力AT32 MCU上实现关键词语音识别(KWS)。
【经验】 雅特力AT32 MCU Printf的功能使用方法
内容概述本文档主要介绍雅特力AT32 MCU在Keil和IAR两种工程环境下的printf功能使用方法。其共包含6种方法,各方法的具体用法在具体内容中描述。
雅特力32位MCU选型表
雅特力AT32 MCU的选型的相关技术参数如下,32位MCU,多种封装:TSSOP20,QFN28,QFN32,QFN48,LQFP48,LQFP64,LQFP100,LQFP144,稳定的工作温度:-40°C~85°C,-40°C~105°C,频率范围在96MHz~288MHz之间
产品型号
|
品类
|
Core
|
FPU
|
Speed(MHz)
|
Flash(KB)
|
SRAM(KB)
|
I/O
|
Advanced TM(16-bit)
|
GPTM(32-bit)
|
GPTM(16-bit)
|
Basic TM(16-bit)
|
Systick(24-bit)
|
WDT
|
WWDT
|
RTC
|
I2C
|
SPI
|
(F/H)I2S(1)(2)
|
USART/UART
|
SDIO
|
USB Device
|
CAN
|
ADC Engine
|
12-bit ADC ch
|
DAC Engine
|
12-bit DAC ch
|
PKG
|
Size(mm)
|
Temp(℃)
|
AT32F403ZCT6
|
32位MCU
|
M4
|
FPU
|
200MHz
|
256KB
|
96KB/224KB
|
112
|
3
|
2
|
8
|
2
|
1
|
1
|
1
|
1
|
3
|
4
|
0/4
|
3/2
|
2
|
1
|
1
|
3
|
21
|
2
|
2
|
LQFP144
|
20mmx20mm
|
-40℃~85°C
|
选型表 - 雅特力 立即选型
如何进行雅特力AT32 MCU HOGP开发?
HOGP(HID over GATT)是由Bluetooth SIG维护的蓝牙配置文件规范,通过低功耗蓝牙实现HID的配置文件并作为与计算器之间的接口,消除HID中对电线或物理连接的需求。本文将为您介绍雅特力AT32 MCU HOGP开发。
【经验】如何使用雅特力MCU AT32F407的以太网通信接口实现在应用中编程?
在应用中编程(IAP)是一种在现场通过MCU通信接口(例如USART、USB、CAN和以太网)进行固件升级的方式。本文将介绍两种使用以太网通信外设在雅特力MCU AT32F407上实现IAP的解决方案。
【经验】如何提高AT32 MCU ADC转换精度?
ADC精度不仅取决于ADC性能和功能,还取决于ADC周围的整体应用设计。雅特力此应用笔记旨在帮助用户如何设置正确软、硬件使ADC达到准确的量测,也提供相关应用上的注意事项。
AT32 MCU QSPI应用笔记
本应用笔记主要介绍了AT32 MCU QSPI控制器的基本配置和使用方法,包括QSPI命令端口和XIP端口的配置与操作,ROM/RAM的扩展,数据加密解密,以及下载算法文件的创建。内容涵盖了QSPI协议、数据传输模式、初始化配置、操作参数设置、性能增强模式、指令配置、地址配置、数据计数器配置、操作模式配置、读状态配置等方面。
雅特力 - MCU,单片机,AT32F437XX,AT32F435XX,AT32
【经验】雅特力32位MCU的非默认IO如何设置为GPIO?
在使用单片机开发时常遇到IO不够用的时候,这时就会盯上非默认IO的引脚,比如JTMS-SWDIO、JTCK-SWCLK、JTDI 、 JTDO 、NJTRST这些引脚。本文就介绍非默认IO如何设置为GPIO以及开发中的注意事项,适合部分雅特力32位MCU。
【经验】雅特力MCU在使用SPIM外设时下载算法文件如何选择
雅特力32位MCU系列中的AT32F403A、AT32F407、AT32F413支持SPIM外设,该外设是雅特力MCU特有外设。在使用Keil环境中配置SPIM的时候,需要选择Flash烧录算法文件,本文介绍使用SPIM时如何选择Flash算法文件。
【经验】如何使用雅特力AT32F425 MCU的DMA功能?
在使用雅特力AT43F425xx系列MCU的DMA时,必须配置DMA请求弹性映射功能,否则DMA不会运作。DMA请求弹性映射可将任意一个外设产生的DMA请求映射到通道1到通道7中的任意一个通道。当设定弹性模式时(DMA_FLEX_EN=1),每个通道的请求来源由CHx_SRC来设定[x=1~7]。
电子商城
现货市场
服务

可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>

拥有IC烧录机20余款,100余台设备,可以烧录各种封装的IC;可烧录MCU、FLASH、EMMC、NAND FLASH、EPROM等各类型芯片,支持WIFI/BT模组PCBA烧录、测试。
最小起订量: 1 提交需求>
登录 | 立即注册
提交评论