打印
[AT32F403/403A]

AT32F403A 如何使用DMA弹性映射

[复制链接]
869|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 ArterySW 于 2022-2-21 19:04 编辑

发现AT32F403A的DMA有一个弹性映射的功能,捣鼓了一天,发现还挺好用的

AT32F403A的DMA请求分成了固定映射和弹性映射,固定映射的存在,主要的目的是为了兼容STM32F103,弹性映射则提供了更为灵活的通道与数据流的选择

下图是AT32F403ADMA 1的请求表,这种方式和我们之前熟悉的STM32F103DMA 请求配置方式一样,每一个通道只能传输固定的几个外设,比如下图的DMA1通道1,那么只能传输ADC1TMR2_CH3TMR4_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的一样了

使用特权

评论回复
沙发
hoop| | 2020-11-25 19:50 | 只看该作者
弹性映射,让应用活跃起来

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

126

帖子

2

粉丝