AT32F403A DMA 弹性映射

本文深入探讨了AT32F403A微控制器中DMA(Direct Memory Access)的弹性映射特性,详细解释了如何配置DMA通道以实现高效的数据传输,并结合实例说明了在不同应用场景下的映射策略。对于理解和优化基于AT32F403A的系统性能,这一内容提供了关键指导。
发现AT32F403A的DMA有一个弹性映射的功能,捣鼓了一天,发现还挺好用的
AT32F403A的DMA请求分成了固定映射和弹性映射,固定映射的存在,主要的目的是为了兼容STM32F103,弹性映射则提供了更为灵活的通道与数据流的选择
下图是AT32F403A的DMA 1的请求表,这种方式和我们之前熟悉的STM32F103的DMA 请求配置方式一样,每一个通道只能传输固定的几个外设,比如下图的DMA1通道1,那么只能传输ADC1、TMR2_CH3、TMR4_CH1,这种方式称之为固定映射
弹性映射,顾名思义,那就是DMA通道上可以传输的数据流是灵活可变的, 如下表所示,每个通道,都可以通过设置CHx_SRC来选择外设,例如将 通道1的CHx_SRC设置成12,那么就将通道1和SPI2_TX连接上了

雅特力提供了一个函数实现这个功能
void dma_flexible_config(dma_type* dma_x, uint8_t flex_channelx, dma_flexible_request_type flexible_request);
dma_x:用于选择哪个DMA
flex_channelx:用于选择DMA的哪个通道
flexible_request:用于选择哪个数据流
例如:
dma_flexible_config(DMA1, FLEX_CHANNEL1, DMA_FLEXIBLE_SPI2_RX);
意思是选择DMA1 的通道1,数据流选择SPI2的RX
 
然后其他的配置过程就和STM32F103的一样了
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值