AT32 MCU DMA通道的灵活配置

概述
在使用artery部分系列mcu时(如at32f413at32f415at32f403aat32f407),可以使用dma弹性映射功能。此功能使得dma的通道配置更加灵活,可以将某外设的dma请求通道指定到dma1或者dma2共14个通道中的任意一个通道。(如:可以将spi1接受数据的dma请求指定到dma1的通道7)。
本指南将介绍如何使用dma弹性映射请求,从而使得dma传输变得更加灵活多变。
配置及使用方法
常规dma使用(dma固定映射)
常规的dma使用以及配置方式为:外设的dma通道已经固定且不可改变,使用时配置好再使能固定通道即可。这就意味着如果想开启某个外设的dma功能,那么通道是不可改变的,例如想使用spi1的rx dma功能,那么就要查看rm的手册,如下:
表1. dma固定映射请求
从表格中可以知道需要开启dma1的通道2。
dma弹性映射使用
dma弹性映射请求功能提供了一种更灵活的使用方式,即外设的dma通道不固定,可选择dma1和dma2中,共14个通道的任意一个通道。
想要使用此功能,需要通过以下几步的设定:
1) 开启dma弹性映射功能
将dma的通道来源寄存器1的第24bit写1,即dma_src_sel1寄存器的dma_flex_en位。
向通道设置对应的寄存器中写入相应的硬件id号。
每个外设的dma请求都分配了一个硬件id号,只要将这个id号写进通道来源寄存器中即可。id号可查看rm中的表格,以403a为例,如下:
表2. 403a各个信道的dma弹性请求一览
上表中的chx_src设定值就是硬件id号,将这个id号写进通道来源寄存器中的对应通道bit位就可以了。例如:要将spi1的rx的dma请求映射到dma1的通道7,那么就要将0x09写入到dma_src_sel1寄存器的ch7_src[23:16]。其他配置与常规dma配置相同通过以上3步的配置,弹性映射功能即可使用。
注:dma1/2的dma_flex_en必须要同时设定为1或时,dma1/2的映像模式必须一致。无法dma1是固定式映像,dma2是弹性式映像。
2) dma弹性映射库函数使用
以上的配置在bsp中的dma.hdma.c的库文件中有提供相应的库函数,使用者只需调用库函数即可完成dma弹性映射模式的配置。
库函数说明如下:
表3. dma弹性映射库函数说明
此函数只需在配置好dma常规功能后调用即可,如下:
图1. dma固定映射库函数调用范例
上图中为设置timer1的更新中断为dma弹性映射请求范例。
例程说明
dma弹性映射功能在bsp中例程,路径为:
at32f403a_407_firmware_library_v2.x.xprojectat_start_f403aexamplesdmadata_to_gpio_flexible(以403a路径为例)
下面将对这两个例程做一个使用说明。
• data_to_gpio_flexible
例程data_to_jpio_flexible
本例程实现的功能为利用dma将sram的数据传输到gpio口的输出寄存器中,从而达到控制gpio口输出的目的。同时配置tmer2产生overflow中断并产生dma请求,配置次dma请求为弹性映射模式。
timer2每产生一次dma请求,dma就从sram搬运一笔数据到gpio口。
dma相关的配置代码:
实验结果可采用逻辑分析仪抓取gpio口数据查看。
来源:at32 mcu 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理


Allegro宣布推出全新功率监控IC ACS37800解决方案
戴姆勒卡车北美公司正在研发冗余汽车底盘和基础设施
应用于低温环境测量的超声波液位传感器
全球首款20:1显示屏亮相 大宝剑设计亮瞎眼
持续逐出与互连反压相结合可能导致写回无分配存储发生停滞
AT32 MCU DMA通道的灵活配置
***破晓时,信创行业正扬帆
洲明在浔阳打造的700㎡户外裸眼3D巨屏成功点亮
DAC的指标和结构 DAC芯片的原理和分类
电机碳刷火花大是什么原因
蓝牙基带数据传输机理分析
一文弄懂信源编码是什么
免费领门票啦!CITE2022专业观众预登记通道已全面开启
智能出入口控制系统的创新发展
单电源互补推挽功放电路及原理分析
常规五参数浮标AD叶绿素水质在线监测你了解过吗?
弘积科技VADP应用交付平台获得2020年度技术卓越奖
美国将在月球建4G网络 预计2022年下半年部署
hll_hll是什么意思
智慧银行革新,金融工控主板引领自动化升级风潮