dma适用于什么数据传送_DMA

DMA,全称为:Direct MemoryAccess,即直接存储器访问。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,能使CPU的效率大为提高。

STM32F4最多有2个DMA控制器(DMA1和DMA2),共16个数据流(每个控制器8个),每一个DMA控制器都用于管理一个或多个外设的存储器访问请求。每个数据流总共可以有多达8个通道(或称请求)。每个数据流通道都有一个仲裁器,用于处理DMA请求间的优先级。

STM32F4有两个DMA控制器,DMA1和DMA2,本章,我们仅针对DMA2进行介绍。STM32F4的DMA控制器框图如图28.1.1所示:

54c549582d470b1b68602431fbad076c.png

DMA控制器执行直接存储器传输:因为采用AHB主总线,它可以控制AHB总线矩阵来启动AHB事务。它可以执行下列事务:

1,外设到存储器的传输

2,存储器到外设的传输

3,存储器到存储器的传输这里特别注意一下,存储器到存储器需要外设接口可以访问存储器,而仅DMA2的外设接口可以访问存储器,所以仅DMA2控制器支持存储器到存储器的传输,DMA1不支持。

图28.1.1中数据流的多通道选择,是通过DMA_SxCR寄存器控制的,如图28.1.2所示:

f06e7d695504acaa74b438aad1208dc0.png

从上图可以看出,DMA_SxCR控制数据流到底使用哪一个通道,每个数据流有8个通道可供选择,每次只能选择其中一个通道进行DMA传输。接下来,我们看看DMA2的各数据流通道映射表,如表28.1.1所示:

9d4a6371b5436a33b33f8ca23a7b84f3.png

上表就列出了DMA2所有可能的选择情况,来总共64种组合,比如本章我们要实现串口1的DMA发送,即USART1_TX,就必须选择DMA2的数据流7,通道4,来进行DMA传输。这里注意一下,有的外设(比如USART1_RX)可能有多个通道可以选择,大家随意选择一个就可以了。

接下来,我们介绍一下DMA设置相关的几个寄存器。

第一个是DMA中断状态寄存器,该寄存器总共有2个:DMA_LISR和DMA_HISR,每个寄存器管理4数据流(总共8个),DMA_LISR寄存器用于管理数据流0~3,而DMA_HISR用于管理数据流4~7。这两个寄存器各位描述都完全一模一样,只是管理的数据流不一样。

这里,我们仅以DMA_LISR寄存器为例进行介绍,DMA_LISR各位描述如图28.1.3所示:

24052568126cb7e12d6d7754287d40a0.png

如果开启了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值