硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4414|回复: 6
收起左侧

[技术讨论] AT32F403A 如何使用DMA弹性映射

[复制链接]

22

主题

16

回帖

82

积分

初级会员

积分
82
发表于 2020-11-25 19:14:45 | 显示全部楼层 |阅读模式
本帖最后由 tutu 于 2022-2-21 18:51 编辑

发现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连接上了
雅特力提供了一个函数实现这个功能
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的一样了
2.PNG
3.PNG

回复

使用道具 举报

4

主题

142

回帖

154

积分

初级会员

积分
154
发表于 2020-11-26 09:05:10 | 显示全部楼层
这个片子批量多少钱一片
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2020-11-26 11:48:43 | 显示全部楼层
有支持TFT屏的型号吗
回复

使用道具 举报

1

主题

24

回帖

27

积分

新手上路

积分
27
发表于 2020-11-26 14:52:51 | 显示全部楼层
这个DMA弹性映射看起来功能很有用啊
回复

使用道具 举报

22

主题

16

回帖

82

积分

初级会员

积分
82
 楼主| 发表于 2020-11-30 21:39:55 | 显示全部楼层
浴火重生 发表于 2020-11-26 09:05
这个片子批量多少钱一片

比ST的要稍微便宜些,可以去问雅特力的代理商
回复

使用道具 举报

22

主题

16

回帖

82

积分

初级会员

积分
82
 楼主| 发表于 2020-11-30 21:40:40 | 显示全部楼层
zerone 发表于 2020-11-26 11:48
有支持TFT屏的型号吗

没得哦,感觉雅特力应该加上LCD接口
回复

使用道具 举报

22

主题

16

回帖

82

积分

初级会员

积分
82
 楼主| 发表于 2020-11-30 21:41:00 | 显示全部楼层
晴天一现 发表于 2020-11-26 14:52
这个DMA弹性映射看起来功能很有用啊

是的,反正我用着挺好用的
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-12 02:10 , Processed in 0.182175 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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