一文讲解DMA存储器到外设的传输方式

描述

简介

CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。 片上集成了时钟安全机制、多级电源管理、通用DMA控制器。 此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。

关于DMA,具有三种数据传输方式:存储器到存储器、存储器到外设、外设到存储器。 前面已讲解过关于存储器到存储器数据传输方式,本章将讲解存储器到外设的传输方式以及在下一章将会讲解外设到存储器的传输方式。 关于DMA存储器到外设传输方式,程序中,首先定义一个静态的源数据,存放在内部 FLASH中,然后通过DMA的方式传输到串口的数据寄存器,然后通过串口把这些数据发送到电脑的上位机显示出来。

1、DMA简介及相关函数介绍

直接存储器访问控制器(DMA)提供在外设和存储器之间或者存储器和存储器之间的高速数据传输方式,无须CPU干预,数据可以通过DMA快速地移动,以节省CPU的资源来做其他操作。

DMA控制器有7个通道,每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。 还有一个仲裁器来协调各通道之间的优先级。

DMA作为一种高效、高速的数据传输方式,具有以下几个特性:

具有7个独立可配置通道,且每个通道都连接专用的硬件DMA请求,并支持软件触发

支持循环的缓冲器管理

多个通道之间的请求优先权可以通过软件编程设置(最高、高、中和低),优先权设置相等时由通道号决定(通道号低优先级高)

支持三种传输方式:存储器到存储器、存储器到外设、外设到存储器

闪存、SRAM、外设的SRAM、APB1、APB2和AHB外设均可作为访问的源和目标

独立数据源独立数据源和目标数据区的传输宽度(字节、半字、全字),模拟打包和拆包的过程。 源和目标地址必须按数据传输宽度对齐。

每个通道都有3个事件标志(DMA传输过半、DMA传输完成和DMA传输错误),这3个事件标志逻辑或成为一个单独的中断请求

关于DMA具体信息,可参考CH32V103应用手册。 DMA标准库函数第十三章已做过介绍,在此不再赘述。

2、硬件设计

本章教程所用资源均为CH32V103开发板内部资源,无需进行其他硬件连接,只需进行程序配置即可。

3、软件设计

本章主要进行存储器到外设的DMA数据传输方式,其相较于存储器到存储器的传输方式,程序中对DMA配置进行一些修改即可,具体如下:

dma.h文件

存储器

dma.h文件主要进行函数声明;

dma.c文件

存储器

4、下载验证

将编译好的程序下载到开发板并复位,可见存储器存储数据被发送到串口:

存储器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分