雅特力AT32F425 DMA使用指南

cathy的头像
cathy 发布于:周五, 06/16/2023 - 10:41 ,关键词:

DMA简介

IDMA控制器的作用不仅在增强系统性能并减少处理器的中断生成,而且还针对32位MCU应用程序专门优化设计。DMA控制器为存储器到存储器,存储器到外设和外设到存储器的传输提供了7个通道。每个通道都支持外设的DMA请求映射到任意通道上。
1.png
图1. DMA控制器架构
DMA请求弹性映射简介
在使用AT43F425xx系列DMA时,必须配置DMA请求弹性映射功能,否则DMA不会运作。DMA请求弹性映射可将任意一个外设产生的DMA请求映射到通道1到通道7中的任意一个通道。
当设定弹性模式时(DMA_FLEX_EN=1),每个通道的请求来源由CHx_SRC来设定[x=1~7]。使用例子:假如DMA通道1指定成I2C1_TX,通道3要指定成I2C1_RX,其他不使用,则设定上必须是DMA_FLEX_EN=1,CH1_SRC=11,CH3_SRC=10,CH[2/4/5/6/7]_SRC=0。
CHx_SRC设定值对应请求来源见下表:
各IP对应ID号如下表:
2.png
表1. 各IP对应ID号列表
注:表格中“CHx_SRC”为ID号;“请求来源”为各IP的DMA请求。
DMA功能解析

可编程数据宽度

DMA控制器的通道可支持传输不同数据宽度,byte/halfword/word。通过DMA_CxCTRL中的PWIDTH和MWIDTH位可以对源数据和目标数据的数据宽度进行编程,通常情况下需要设置PWIDTH和MWIDTH位相等,当PWIDTH不等于MWIDTH时,会依据PWIDTH/MWIDTH设定将资料对齐。
3.png
图2. PWIDTH:byte, MWIDTH:half-word
4.png
图3. PWIDTH:half-word, MWIDTH:word
配置DMA弹性映射
在M2P与P2M模式下,必须配置DMA弹性映射,否则DMA不会响应外设DMA请求。DMA弹性映射的作用是为外设的DMA请求复用通道,即任何一个外设的DMA请求可以映射到DMA1的任意通道,这大大增加了DMA通道分配的灵活性。
配置DMA弹性映射比较简单,只需调用专门提供的接口函数即可:
DMA配置解析
以下对DMA的配置接口及流程进行说明。
函数接口
5.png
表2. 通道配置函数列表
数据流配置
  • 设置外设地址(CxPADDR寄存器)

    数据传输的初始外设地址,在传输过程中不可被改变。

  • 设置存储器地址(CxMADDR寄存器)

    数据传输的初始内存地址,在传输过程中不可被改变。

  • 配置数据传输量(CxDTCNT寄存器)

    可编程的传输数据长度最大为65535。在传输过程中,该传输数据量的值会逐渐递减。

  • 数据流配置(CxCTRL寄存器)

    包含通道优先级,数据传输的方向、宽度、地址增量模式、循环模式和中断方式。

    优先级(CHPL)

    分为4个等级,最高优先级、高优先级、中等优先级和低优先级。

    若有2个流优先级设定相同,则较低编号的流有较高的优先权。举例,通道1优先于通道2。

    数据传输方向(DTD)

    分为存储器到外设(M2P),外设到存储器(P2M)或存储器到存储器(M2M)传输。在存储器到存储器传输模式下不允许使用循环模式、双缓冲模式和直接模式。

    数据传输宽度(PWIDTH/MWIDTH)

    根据实际使用情景,可配置宽度为byte、halfword、word。

    地址增量模式(PINCM/MINCM)

    当通道配置设定为增量模式时,下一笔传输的地址将是前一笔传输地址加上传输宽度(PWIDTH/MWIDTH)。

    循环模式(LM)

    当流配置设定为循环模式时,在最后一次传输后CxDTCNT寄存器的内容会恢复成初始值。

  • 配置DMA弹性映射(DMA_SRC_SELx寄存器的CHx_SRC)

    在非存储器到存储器(M2M)模式下时,需要将外设的DMA请求DMA请求号写入,才能启动通道响应外设的DMA请求。

  • 打开通道(CxCTRL寄存器的CHEN位)

配置流程
  • 打开DMA时钟;

  • 调用通道复位函数复位数据流;

  • 调用结构体初始化函数初始化通道配置结构体;

  • 调用初始化函数初始化通道;

  • 调用DMA请求映射使能函数配置弹性映射功能;

  • 调用通道使能函数开启通道。

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 69