学习Stm32--DMA

DMA


一、 DMA的简单介绍:

DMA( Direct  Memory Access ):外设与主存间不经过CPU  而直接进行数据交换的接口。

DMA控制器和Cortex™-M3核心共享系统数据总线,执行直接存储器数据传输。当CPU和DMA同时访问相同的目标(RAM或外设)时, DMA请求会暂停CPU访问系统总线达若干个周期,总线仲裁器执行循环调度,以保证CPU至少可以得到一半的系统总线(存储器或外设)带宽。
DMA支持从外设(ADC SPI I2C USART 等)到存储器(片内SRAM 外部存储器 片内FLASH 等)、存储器到外设、存储器到存储器传输的三种传输模式;
DMA 控制器独立于内核 ,控制器框图:

DMA框图

MDA 有两个DMA控制器 DMA1 和DMA2,其中DMA1有7个通道,DMA2 有5个通道.

  1. DMA 请求

    这里写图片描述
    这里写图片描述

  2. DMA 通道
    每个通道可以接收多个外设的请求,但是同一时间只能接收一个,不能同时接收多个。

  3. 仲裁器
    在收到多个请求时管理响应的先后顺序;这个过程分为两个阶段:
    第一阶段:通过设置寄存器,有4个优先级:非常高、 高、 中、 低
    第二阶段:在硬件上 当多个请求的优先级相同时,通过判断通道编号越小优先级越高
    DMA1 的优先级比 DMA2 要高

二、DMA 寄存器

这里写图片描述

  1. 配置方向 DIR
    存储器 <—-> 外设 :DMA_CCR 位 4 0:外设到存储器,1:存储器到外设
    存储器<—–> 存储器:DMA_CCR 位 14:MEM2MEM 置1 启动M2M模式
  2. 配置数据宽度(size)和增量模式
    外设数据宽度 : PSIZE[1:0] 可以设置为 8 16 32
    存储器数据宽度 : MSIZE[1:0] 可以设置为 8 16 32
    外设增量模式 : PINC
    存储器增量模式: MINC
  3. 传输完成模式
    1. 一次传输: 依次传输完成后 需要再次配置寄存器 CIRC 0
    2. 循环传输:一次传输完成后恢复第一次传输的配置 CIRC 1
  4. DMA中断状态寄存器(MDA_ISR)

    这里写图片描述
    X(1,2,3,….,7)
    TEIFx(transfer error flag) : 传输错误标志位 1 有错误 0 没有错误
    HTIFx(half transfer flag) : 半传送标志位
    TCIFx(transfer complete flag): 传送完成标志位
    GIFx (global interrupt flag) : 全局中断标志位

三、DMA库

这里写图片描述

                                        Stm32F10x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值