打印
[AT32F402]

AN0179--AT32F402/405 DMA使用指南

[复制链接]
1532|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ArterySW|  楼主 | 2023-10-30 16:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
AN, DM, DMA
AT32F402/405 DMA使用指南

前言
AT32F402/405 拥有2 个DMA 控制器(DMA1/DMA2),每个DMA 支持7 个通道且外设的DMA 请求可映射到任意通道上。本文主要就DMA 的基本功能进行讲解和案列解析。

支持型号列表
AT32F402xx
AT32F405xx

目录
1 DMA 简介 ................................................................................................................. 6
2 DMAMUX 简介 ......................................................................................................... 7
3 DMA 功能解析 ......................................................................................................... 9
3.1 可编程数据宽度 ........................................................................................................ 9
3.2 配置DMAMUX ......................................................................................................... 9
3.3 配置请求生成器模块 ............................................................................................... 10
3.4 配置请求同步模块 ................................................................................................... 10
4 DMA 配置解析 ........................................................................................................ 11
4.1 函数接口 .................................................................................................................. 11
4.2 数据流配置 .............................................................................................................. 11
4.3 配置流程 ................................................................................................................. 12
5 案例 数据从FLASH 传输到SRAM ..................................................................... 13
5.1 功能简介 ................................................................................................................. 13
5.2 资源准备 ................................................................................................................. 13
5.3 软件设计 ................................................................................................................. 13
5.4 实验效果 ................................................................................................................. 14
6 案例 TMR 产生DMA 请求将数据从SRAM 传输到GPIO ..................................... 15
6.1 功能简介 ................................................................................................................. 15
6.2 资源准备 ................................................................................................................. 15
6.3 软件设计 ................................................................................................................. 15
6.4 实验效果 ................................................................................................................. 17
7 案例 DMA 请求生成器产生DMA 请求 ................................................................ 18

7.1 功能简介 ................................................................................................................. 18
7.2 资源准备 ................................................................................................................. 18
7.3 软件设计 ................................................................................................................. 18
7.4 实验效果 ................................................................................................................. 20
8 案例 DMA 传输数据需等待DMA 请求同步信号 .................................................. 21
8.1 功能简介 ................................................................................................................. 21
8.2 资源准备 ................................................................................................................. 21
8.3 软件设计 ................................................................................................................. 21
8.4 实验效果 ................................................................................................................. 23
9 文档版本历史 ......................................................................................................... 24


DMA 简介
DMA 控制器的作用不仅在增强系统性能并减少处理器的中断生成,而且还针对32 位MCU 应用程序专门优化设计。DMA 控制器为存储器到存储器,存储器到外设和外设到存储器的传输提供了7 个通道。每个通道都支持外设的DMA 请求映射到任意通道上。



DMAMUX 简介
对于如何将外设的DMA 请求映射到任意的数据流通道上,就需要使用到DMAMUX。DMAMUX 针对每个外设都设计了独有的ID 号,使用者只需要将此ID 号写入对应的寄存器中并打开DMAMUX 功能即可。DMAMUX 的引入,使得DMA 相较于传统DMA 控制器变得更加灵活,使用者可以随意的分配7 个通道的使用情况,不必再纠结与某个IP 的DMA 请求只能固定使用在某个或某几个通道
上。


DMA 功能解析
可编程数据宽度
DMA 控制器的通道可支持传输不同数据宽度,byte/halfword/word。通过DMA_CxCTRL 中的PWIDTH和MWIDTH 位可以对源数据和目标数据的数据宽度进行编程,通常情况下需要设置PWIDTH 和MWIDTH 位相等,当PWIDTH 不等于MWIDTH 时,会依据PWIDTH/ MWIDTH 设定将资料对齐。



配置DMAMUX
在M2P 与P2M 模式下,必须配置DMAMUX,否则DMA 不会响应外设DMA 请求。DMAMUX 的作用是为外设的DMA 请求复用通道,即任何一个外设的DMA 请求可以映射到DMA1/DMA2 的任意通道,这大大增加了DMA 通道分配的灵活性。
配置DMAMUX 比较简单,只需调用专门提供的两个接口函数即可:

/* 使能DMAMUX 功能 */
void dmamux_enable(dma_type *dma_x, confirm_state new_state);
/* 配置DMAMUX 通道 */
void dmamux_init(dmamux_channel_type *dmamux_channelx, dmamux_requst_id_sel_type dmamux_req_sel);


配置请求生成器模块
在配置了DMAMUX 时,可选择配置DMA 请求生成器模块,模块一共有4 个请求生成器通道。此模块无需任何传统外设(如TIMER、SPI 等)提供DMA 请求,可通过外部EXINT 输入作为DMA 请求源输入。
配置请求生成器模块较为简单,只需调用专门提供的接口函数即可:

/* 初始化请求生成器结构体参数 */
dmamux_generator_default_para_init(&dmamux_gen_init_struct);
/* 配置请求生成器结构体 */
dmamux_gen_init_struct.gen_polarity = DMAMUX_GEN_POLARITY_RISING;
dmamux_gen_init_struct.gen_request_number = 4;
dmamux_gen_init_struct.gen_signal_sel = DMAMUX_GEN_ID_EXINT0;
dmamux_gen_init_struct.gen_enable = TRUE;
/* 配置请求生成器 */
dmamux_generator_config(DMA2MUX_GENERATOR1, &dmamux_gen_init_struct);


配置请求同步模块
在配置了DMAMUX 时,可选择配置DMA 同步模块,模块一共有7 个同步通道。使能此功能后,当外设产生DMA 请求时,DMA 不会马上响应并传输数据,而是要等待同步信号的到来,当接收到同步信号后,DMA 才会根据配置传输数据;同步信号可由外部EXINT 输入提供配置同步模块较为简单,只需调用专门提供的接口函数即可:

/* 初始化同步模块结构体参数 */
dmamux_sync_default_para_init(&dmamux_sync_init_struct);
/* 配置同步模块结构体参数 */
dmamux_sync_init_struct.sync_request_number = 4;
dmamux_sync_init_struct.sync_signal_sel = DMAMUX_SYNC_ID_EXINT0;
dmamux_sync_init_struct.sync_polarity = DMAMUX_SYNC_POLARITY_RISING;
dmamux_sync_init_struct.sync_event_enable = FALSE;
dmamux_sync_init_struct.sync_enable = TRUE;
/* 配置同步模块 */
dmamux_sync_config(DMA2MUX_CHANNEL4, &dmamux_sync_init_struct);


使用案例请下载附件文档查看!




AN0179_AT32F402_405_DMA_Application_Note_ZH_V2.0.0.pdf

928.03 KB

使用特权

评论回复
沙发
单片小菜| | 2023-11-1 10:12 | 只看该作者
DMA最大的好处,就是不占用资源。

使用特权

评论回复
板凳
lajfda003| | 2023-11-1 11:17 | 只看该作者
DMA最好的地方,就是不占用资源。

使用特权

评论回复
地板
lajfda001| | 2023-11-2 09:04 | 只看该作者
DMA就是不占用资源的,很好的。

使用特权

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

本版积分规则

179

主题

276

帖子

11

粉丝