DMA

一.DMA

1.简介
DMA——Data Memory Access,直接存储器访问
属于Stm32的一个外设主要有两个(DMA1和DMA2)
功能是接到CPU命令进行数据的高速传输,传输时可以空出CPU干别的事
DMA1:从外设P( peripheral)将数据搬运到M(Memory,在此特指SRAM),也可以从M搬到P
DMA2:从外设P( peripheral)将数据搬运到M(Memory,在此特指SRAM),也可以从M搬到P,还可以从M(在此指FLASH)到M(在此指SRAM)。
2.功能框图
(1)通道+流:
流:是数据传输的一条链路,每个DMA控制器有8条独立的数据流,每次传输的数据量最大为65535,如果数据的单位为字的话,一次可以传输256KB。
通道:每个数据流有8个通道选择,每个通道对应不同的DMA请求。
每个不同的外设对应不同的流和不同的通道,具体如图

DMA1在这里插入图片描述
DMA2
注:使用M->M功能时不需要进行通道和流的选择,DMA可使用任意通道和数据流,但控制器只能用DMA2
在这里插入图片描述

使用DMA时需要配置的寄存器:
主要配置DMA_ SxCR(x=0…7)数据流x配置寄存器(x取0-7总共八个数据流)
配置位 27:25 CHSEL[2:0]:通道选择 (Channel selection)
这些位将由软件置 1 和清零。
| 000:选择通道 0| 001:选择通道 1| 010:选择通道 2
| 011:选择通道 3| 100:选择通道 4| 101:选择通道 5
| 110:选择通道 6| 111:选择通道 7|
这些位受到保护,只有 EN 为“0”时才可以写入(EN指第0位)
例如,可配置为

在这里插入代码片

(2)仲裁器:
处理多个DMA请求一起来的情况
处理阶段:
1.软件阶段:控制流控制寄存器的PL(第十七位Priority level)位(DMA_SxCR:PL)四个软件优先级
00:低 | 01:中 | 10:高 | 11:非常高
如果软件优先级一样进入硬件优先级阶段
2.硬件阶段,优先级: 数据流编号小的优先级大

同一个数据流/同一个时间点只能用一个通道,同一个DMA控制器可以使用多个通道

(3)FIFO:源和目标之间的中转站。例如,数据从A到B,必经过FIFO作为中转站
1.每个数据流有四字(即16字节)FIFO,阈值级别有1/4,1/2,3/4或满。数据从A到B时有直接模式和FIFO模式,通过DMA_SxFCR(FIFO寄存器来配置),具体配置位为DMDIS(Direct mode disable)。
直接模式,数据直接从A通过FIFO传输到B;FIFO模式,数据从A按照FIFO指定的储存阈值储存到FIFO,再从FIFO到B。
使用FIFO模式即意味着使用FIFO的突发模式,突发模式有MBURST(存储器突发传输设置)和PBURST(外设突发传输设置),设置如下
00:单次传输(一个单位一个单位传输)
01:INCR4 (4个节拍的增量突发传输)
10:INCR8

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值