0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

CHANBAEK 来源:CSDN-借过风景 作者:CSDN-借过风景 2023-02-03 16:37 次阅读

简介

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文件

pYYBAGPcx3qAeRV7AAAr7RfMq-g409.png

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

dma.c文件

pYYBAGPcx3qAI5SwAAGLqtFHUwo978.png

4、下载验证

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

poYBAGPcx3qAF6CsAACSp8bXmoU035.png

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

    关注

    68

    文章

    19286

    浏览量

    229823
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17148

    浏览量

    351193
  • 存储器
    +关注

    关注

    38

    文章

    7492

    浏览量

    163830
  • dma
    dma
    +关注

    关注

    3

    文章

    561

    浏览量

    100586
  • RISC-V
    +关注

    关注

    45

    文章

    2277

    浏览量

    46159
收藏 人收藏

    评论

    相关推荐

    直接存储器存取(DMA)简介及程序设计

    直接存储器存取(DMA)用来提供在外设存储器之间或者存储器存储器之间的高速数据
    的头像 发表于 06-01 09:01 8472次阅读
    直接<b class='flag-5'>存储器</b>存取(<b class='flag-5'>DMA</b>)简介及程序设计

    转:STM32CubeMX系列教程6:直接存储器访问 (DMA)

    使用。说白了DMA就是个搬运工,将数据从个地方搬到另个地方而不需要CPU处理。作为个搬运工,要他正常工作必须要确定几个重要的参数。1
    发表于 07-02 17:00

    STM32F4xx系列的DMA支持外设传输模式

    DMA 支持外设存储器传输存储器到外设传输
    发表于 08-20 06:31

    DMA传输实现高速数据移动过程

    DMA传输实现高速数据移动过程无需任何CPU 操作控制其支持以下三种传输方式外设存储器
    发表于 01-21 11:32

    DMA直接存储器访问与配置流程简介

    DMA配置流程三、DMA应用简单实例1. 存储器存储器(M2M)2. 存储器到USART串口(M2P)
    发表于 01-26 07:54

    为什么DCMI DMA无法通过FMC将图像数据传输到外存储器呢?

    我总是需要将内部存储器用于传入图像缓冲区为什么STM32H7A3中的DCMI DMA无法通过FMC或OCTOSPI HYPER存储器将图像数据传输到外
    发表于 12-21 06:20

    CH32V103基础教程13-DMA存储器存储器

    本章教程讲解DMA存储器存储器模式。存储器存储器模式可以实现数据在两个内存的快速拷贝。程序中
    发表于 04-17 15:28

    CH32V103基础教程27-DMA存储器到外设

    关于DMA,具有三种数据传输方式存储器存储器存储器到外
    发表于 04-20 16:35

    CH32V103基础教程28-DMA外设存储器

    关于DMA,具有三种数据传输方式存储器存储器存储器到外
    发表于 04-20 16:37

    STM32学习笔记(7)——DMA直接存储器访问

    DMA配置流程三、DMA应用简单实例1. 存储器存储器(M2M)2. 存储器到USART串口(M2P)
    发表于 12-02 14:06 3次下载
    STM32学习笔记(7)——<b class='flag-5'>DMA</b>直接<b class='flag-5'>存储器</b>访问

    STM32通(9) DMA

    . DMA简介DMA(Direct Memory Access,直接存储器访问) 传输将数据从
    发表于 12-03 09:21 17次下载
    STM32<b class='flag-5'>一</b><b class='flag-5'>文</b>通(9) <b class='flag-5'>DMA</b>

    STM32F103 中级篇 22 DMA 直接存储器访问

    22.1直接存储器访问22.1.1 DMA功能框图讲解DMA(Direct Memory Access)—直接存储器存取,是单片机的
    发表于 12-16 16:59 2次下载
    STM32F103 中级篇 22 <b class='flag-5'>DMA</b> 直接<b class='flag-5'>存储器</b>访问

    详解DMA

    DMA传输将数据从个地址空间复制到另个地址空间,提供在外设存储器之间或者
    的头像 发表于 10-12 09:45 1.3w次阅读

    讲解DMA外设存储器传输方式

    CH32V103系列是以青稞V3A处理为核心的32位通用MCU,该处理是基于RISC-V开源指令集设计。 片上集成了时钟安全机制、多级电源管理、通用DMA控制。 此系列具有1路U
    的头像 发表于 02-03 16:37 1535次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讲解</b><b class='flag-5'>DMA</b><b class='flag-5'>外设</b>到<b class='flag-5'>存储器</b>的<b class='flag-5'>传输</b><b class='flag-5'>方式</b>

    存储器到外设DMA动态访问技术

     存储器到外设数据复制的个例子是大量数据应该通过通信外设(例如UART)传输的情况;如果没有DMA
    发表于 11-27 15:22 635次阅读