专栏名称: AT32 MCU 雅特力科技
雅特力科技AT32 MCU芯片技术交流,开发与技术支持,芯片产品介绍及服务,品牌推广宣传。
目录
相关文章推荐
EETOP  ·  华为注册“仙界”商标 ·  2 天前  
新能源产业家  ·  产业家情报局 | ... ·  4 天前  
新能源产业家  ·  产业家情报局 | ... ·  4 天前  
EETOP  ·  直播报名:触摸感应技术及解决方案 ·  5 天前  
51好读  ›  专栏  ›  AT32 MCU 雅特力科技

AT32讲堂090 | 雅特力AT32F402/F405 DMA使用指南

AT32 MCU 雅特力科技  · 公众号  · 硬件 科技自媒体  · 2024-11-19 19:20

正文


DMA简介


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

DMAMUX简介


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

DMA功能解析


可编程数据宽度


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

配置DMAMUX


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

配置请求生成器模块


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

配置请求同步模块


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

DMA配置解析


以下对DMA的配置接口及流程进行说明。

函数接口


表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寄存器的内容会恢复成初始值。
  • 使能DMAMUX(MUXSEL寄存器的TBL_SEL位)
    在非存储器到存储器(M2M)模式下时,需要使能DMAMUX功能,才能启动数据流响应外设的DMA请求。
  • 写入外设ID号(MUXCxCTRL寄存器的REQSEL)
    在非存储器到存储器(M2M)模式下时,需要将外设的DMA请求ID号写入,才能启动数据流响应外设的DMA请求。
  • 打开数据流(CxCTRL寄存器的CHEN位)

配置流程


  • 打开DMA时钟;
  • 调用通道复位函数复位数据流;
  • 调用结构体初始化函数初始化通道配置结构体;
  • 调用初始化函数初始化通道;
  • 调用DMAMUX使能函数以及ID号写入函数配置DMAMUX相关内容;
  • 调用通道使能函数开启通道。

PS. 案例介绍可点击文末”阅读原文”查看AN0179


关于雅特力

雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器(MCU)创新趋势的芯片设计公司,拥有领先高端芯片研发技术、完整的硅智财库及专业灵活的整合经验,分別在重庆、深圳、苏州、上海、台湾设有研发、销售及技术支持分部。

雅特力坚持自主研发,以科技创新引领智慧未来,专注于ARM® Cortex®-M4/M0+的32位微控制器研发与创新,提供高效能、高可靠性且具有竞争力的产品。全系列产品采用55nm先进工艺,通过ISO 9001质量管理体系认证,缔造M4业界最高主频288MHz运算效能。自2018年正式对外销售至今,累积了相当多元的终端产品成功案例,广泛地覆盖工控、电机、车载、消费、商务、5G、物联网、新能源等领域,助力客户实现产业升级。

喜讯!雅特力科技荣获第十九届“中国芯”优秀市场表现产品奖
喜讯!雅特力科技荣获"BLDC电机控制器行业创芯突破奖"
雅特力发布AT32M412/M416电机控制专用MCU,180MHz主频打造高效能电机应用


下方阅读原文查看更多应用笔记