摘要:目录如何工作硬件架构硬件架构通道功能寄存器外观目的外观目的直接内存访问如何工作。 在传统的数据访问中,数据首先放置在高速缓存寄存器中,然后写入。 访问指定位置的数据的流程图经历三个步骤。 首先,输入内存中的指定位置。
目录
操作原理
DMA硬件架构
DMA 的作用通道
DMA 寄存器
DMA 的目的
操作原理
DMA 是,直接内存访问的完整版本。 传统CPU访问数据时,首先将其放入缓存寄存器中,然后进入指定位置并写入。
CPU访问数据流程图:
CPU经历了三个步骤。 首先,CPU将指定位置的数据取出到数据缓冲区中,并将数据缓冲区的内容写入内存。,两天内将数据写入内存中的不同地址,总共需要三个步骤。
使用 DMA,就容易多了。 DMA不会将其放入临时寄存器中,而是直接写入。 写入内存时,只需设置源地址、目标地址和传输量,DMA就会开始发送数据,但DMA会占用设备的总线。 这意味着在此过程中总线不可用,需要控制权限。 传输使传输速度更快,但 CPU 在传输期间基本上无法执行任何其他操作。 然而,某些架构为 DMA 提供了自己的一组总线。 即使在 DMA 传输期间,CPU 也可以控制外设。 该控制传输 DMA 并不总是启用。 为了让 CPU 通过系统总线成功控制外设,通常会在控制权返回给 CPU 之前给予 DMA 一定的时间。 CPU然后处理一段时间,然后返回DMA。 在 DMA 完成之前控制不会停止。 权利转让。
DMA硬件架构
以下摘自STM32芯片手册中DMA框架描述
p> 从上图中我们可以看出DMA是一个多频段控制器,并且有两个。 它挂在AHB总线上。 DMA1 CH1 - 可以看到CH7是可配置的控制通道,但DMA2只有5个,CPU通过配置DMA来完成数据传输。 可以看到它并没有使用系统总线,而是使用了DMA自己的控制总线。 因此,这种架构比使用系统总线的架构要快得多,但比使用系统总线的架构消耗更多的功率。 系统总线架构
下面是两个DMA控制器的结构图。 您可以清楚地看到每个通道的用途。
DMA1
DMA2
DMA 通道的作用
通道是小型 IO 控制器,每个通道控制不同的外设和内存。 通过MCU数据手册,可以看到DMA的每个通道控制哪些外设。。
从上面的通道结构图可以看出,每个通道IO都支持Uart、SPI、I2C外设。 请注意,此处的外围设备已编号,可以在以下位置找到: 从通道图可以看出,不同的外设由不同的通道程序控制。 如果您使用 I2C2 外设,则必须找到并使用支持 I2C2 的通道。 您还可以检查 SW 触发(MEM2MEM BIT)的含义。 支持存储器到存储器的通信,例如内部 SRAM 之间的通信。 您还可以在上图中看到硬件请求 4。 这意味着该通道支持中断通知。 这意味着当该通道开始工作时,相应寄存器的值将被设置。 ,然后发生中断。 通过读取相应的中断标志寄存器可以了解哪个通道产生了中断以及发生了什么情况。
如果您正在控制外围设备,请记住它位于内部存储器之间。 如果你想在内存之间发送数据,你可以选择: 从上图结构可以看出,每个通道IO都支持内部存储器,因此可以自由选择通道。
通道可以理解为一个小程序,就是简单的IO。 控制程序可以: 它仅处理支持的外围设备之间的数据传输。 在继续之前,我们需要配置 DMA 使用的通道。 您可以选择多个通道或一个通道。 这些通道支持同时工作。
DMA 寄存器
可以看到,通过以上通道可以配置Uart、SPI、I2C的一些功能。 还可以看到Internal/Request有内部中断功能。 根据寄存器功能的不同,设定方法也不同。
寄存器介绍
①中断类
p>
寄存器名称
功能
DMA_ISR
中断状态寄存器
DMA_IFCRDMA中断标志清除寄存器
②控制传输类别
寄存器名称
功能
DMA_CCRxDMA 通道 x 配置寄存器 DMA_CNDTRx
DMA 通道寄存器控制集
DMA 可以简单地视为 CPU 的传输助手。 CPU告诉DMA要发送什么数据,DMA完成发送任务。
DMA是一个独立的控制器,由内部的一个小芯片控制,有自己的一套架构。 它通常集成在 MCU 内并与 CPU 紧密匹配。
DMA的目的
DMA的引入是为了解决CPU处理的问题。 发送大量数据既耗时又昂贵。 当发送大数据时,CPU首先将数据放入临时寄存器中。 这个速度会影响效率并减慢效率。 同时,如果CPU正忙于发送数据,它就无法做其他事情。 随着DMA的诞生,这个问题得到了解决。 注意,在使用DMA之前,需要检查架构以及DMA是否与CPU使用相同的总线。 使用同一总线影响CPU运行效率而不是传输效率。
评论前必须登录!
注册