《嵌入式系统原理与应用》 |(八)DMA 知识梳理

 

系列索引:《嵌入式系统原理与应用》 | 嵌入式系统 重点知识梳理


 

目录

 

 

DMA的定义及传输要素

DMA的传输过程

DMA的优缺点及其适用场景

STM32中DMA的特点

STM32中DMA的优先级机制

STM32中DMA的传输模式

STM32中DMA的常用初始化过程

DMA的常用库函数(主要在初始化时结构体变量的设置)


DMA的定义及传输要素

DMA的引入——让CPU做更有意义的工作

CPU——经理

数据——物品

外设——销售或采购

存储器——仓库

定义

DMA控制器  —— 仓库保管员

DMADirect Memory Access,直接存储器存取),是一种完全由硬件执行数据交换的工作方式。它由DMA控制器而不是CPU来控制在存储器和存储器、存储器和外设之间的批量数据传输

传输要素

传输源   传输目标   传输数据量   触发信号

 

DMA的传输过程

DMA请求

  CPU初始化DMA控制器,外设(I/O接口)发出DMA请求。

DMA响应

  DMA控制器判断DMA请求的优先级及屏蔽,向总线仲裁器提出总线请求。

   当CPU执行完当前总线周期时,可释放总线控制权。此时,总线仲裁器输出总线应答,表示DMA已经响应,DMA控制器从CPU接管对总线的控制,并通知外设(I/O接口)开始DMA传输。

DMA传输

    DMA数据以规定的传输单位(通常是字)传输,每个单位的数据传送完成后,DMA控制器修改地址,并对传送单位的个数进行计数,继而开始下一个单位数据的传送,如此循环往复,直至达到预先设定的传送单位数量为止。

DMA结束 

    当规定数量的DMA数据传输完成后,DMA控制器通知外设(I/O接口)停止传输,并向CPU发送一个信号(产生中断或事件)报告DMA数据传输操作结束,同时释放总线控制权。

 

DMA的优缺点及其适用场景

优点

CPU利用率  数据传输效率  用户软件开发代码

缺点

在一段时间内独占总线

数据传输量过大,会导致中断延时较长,实时性强不适用

适用

高速、成组数据的传输

 

STM32中DMA的特点

 

STM32中DMA的优先级机制

仲裁器根据通道请求的优先级来启动外设/存储器的访问。

优先权管理分2个阶段:

软件:每个通道的优先权可以DMA_CCRx寄存器中设置,4个等级

─ 最高优先级

─ 高优先级

─ 中等优先级

─ 低优先级

硬件通道编号越小优先级越高,如果2个请求有相同的软件优先级,则较低编号的通道比较高编号的通道有较高的优先权。举个例子,通道2优先于通道4。

 

STM32中DMA的传输模式

STM32微控制器支持循环模式普通模式两种工作模式,

循环模式用于处理循环缓冲区和连续的数据传输(如ADC的扫描模式)。在DMA_CCRx寄存器中的CIRC位用于开启这一功能。当启动了循环模式,数据传输的数目变为0时,将会自动地被恢复成配置通道时设置的初值,DMA操作将会继续进行。

 

STM32中DMA的常用初始化过程

初始化参数

 

DMA的常用库函数(主要在初始化时结构体变量的设置)

DMA_DeInit:将DMAy的通道x的寄存器恢复为复位启动时的默认值。

DMA_Init:根据DMA_InitStruct中指定的参数初始化指定DMA通道的寄存器。

DMA_GetCurrDataCounter:返回当前指定DMA通道剩余的待传输数据数目。

DMA_Cmd:使能或者禁止指定的DMA通道。

DMA_GetFlagStatus:查询指定的DMA通道的标志位状态。

DMA_ClearFlag:清除指定的DMA通道的待处理标志位。

DMA_ITConfig:使能或禁止指定的DMA通道中断。

DMA_GetITStatus:查询指定DMAy的通道x的中断的状态。

DMA_ClearITPendingBit:清除DMAy的通道x的中断挂起位。

 

 

 

发布了112 篇原创文章 · 获赞 975 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/qq_41523096/article/details/103788915