OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3566|回复: 0

AT32F403A 如何使用DMA弹性映射

[复制链接]

55

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2019-11-25
在线时间
28 小时
发表于 2020-11-25 19:19:44 | 显示全部楼层 |阅读模式
本帖最后由 tutu983618588 于 2022-2-21 18:54 编辑

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

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

下图是AT32F403A的DMA 1的请求表,这种方式和我们之前熟悉的STM32F103的DMA 请求配置方式一样,每一个通道只能传输固定的几个外设,比如下图的DMA1通道1,那么只能传输ADC1、TMR2_CH3、TMR4_CH1,这种方式称之为固定映射
1.PNG
弹性映射,顾名思义,那就是DMA通道上可以传输的数据流是灵活可变的, 如下表所示,每个通道,都可以通过设置CHx_SRC来选择外设,例如将 通道1的CHx_SRC设置成12,那么就将通道1和SPI2_TX连接上了
2.PNG
3.PNG
雅特力提供了一个函数实现这个功能
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的一样了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 21:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表