东莞 网站推广,iosapp开发用什么语言,庐阳网站快速排名,网站推荐你了解我意思吧1 DMA简介
DMA#xff08;Direct Memory Access#xff09;,中文名为直接内存访问#xff0c;它是一些计算机总线架构提供的功能#xff0c;能使数据从附加设备#xff08;如磁盘驱动器#xff09;直接发送到计算机主板的内存上。对应嵌入式处理器来说#xff0c;DMA可…
1 DMA简介
DMADirect Memory Access,中文名为直接内存访问它是一些计算机总线架构提供的功能能使数据从附加设备如磁盘驱动器直接发送到计算机主板的内存上。对应嵌入式处理器来说DMA可以提供外设和存储器之间或存储器与存储器之间的高速数据传输无须CPU干预节省了CPU的资源。 1.1 DMA传输的4种情况
DMA涉及的数据传输分为四种情况 外设到内存 内存到外设 内存到内存 外设到外设 它们本质上是一样的都是从内存的某一区域传输到内存的另一区域外设的数据寄存器本质上就是内存的一个存储单元。
1.2 典型的DMA结构
典型的DMA控制器的结构示意图如下 DMA控制器内部包含4中寄存器/计数器 地址寄存器包括源地址和目的地址寄存器 状态寄存器用于寄存DMA传输前后的状态 控制寄存器用于选择DMA控制器的操作类型、工作方式、传输方向和有关参数 字节计数器用于控制传输数据块的长度
DMA控制器需要连接包括 与外设连接用于接受外设发出的DMA操作请求和在DMA期间对外设进行控制 与CPU连接用于请求总线的控制权 与三大总线连接用于进行总线控制
DMA控制器可以像CPU那样获得总线的控制权因此可以完成外设与存储器之间的数据高速交换。
如下图当外设需要与存储器之间进行DMA传输时由DMA控制器提出总线请求从CPU获得总线授权后由DMA控制器控制数据的传输。 2 STM32中的DMA
2.1 STM32的DMA资源概述
STM32F103内部有2 个DMA控制器 DMA1有7个通道 DMA2有5个通道仅存大容量产品中
每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。
此外每个DMA还有一个仲裁器来协调各个请求的优先权。
STM32F103中的DMA有以下一些特性 独立的源和目标数据区的传输宽度(字节、半字、全字) 每个通道都有3个事件标志(DMA 半传输DMA 传输完成和 DMA 传输出错) 存储器和存储器间的传输 外设和存储器存储器和外设的传输 闪存、SRAM、外设的 SRAM、APB1、APB2 和 AHB 外设均可作为访问的源和目标
2.2 STM32的DMA框图
STM32F103的DMA框图如下 ①代表DMA请求当外设准备通过DMA传输数据时需先给DMA控制器发送请求。 ②代表DMA通道DMA1有7 个DMA2有 5个虽然每个通道可以接收多个外设的请求但是同一时间只能接收一个。 ③代表总裁器用于处理当发生多个 DMA 通道请求时的响应顺序。仲裁器管理 DMA 通道请求分为两个阶段 第一阶段软件阶段可以在DMA_CCRx寄存器中设置有4个等级非常高高中低 第二阶段硬件阶段若两个及以上的DMA通道请求设置的优先级一样则取决于通道编号越低优先权越高
3 总结
本篇介绍了DMA的一些基础知识包括DMA传输的4种情况、典型的DMA结构以及STM32的DMA相关基础介绍。