DMA部分我用到的相对简单当然,鈳能这是新东西我暂时还用不到它的复杂功能吧。下面用问答的形式表达我的思路
直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作
数据从什么地方送到什麼地方?
DMA可以传递多少数据?
传统的DMA的概念是用于大批量数据的传输但是我理解,在STM32中它的概念被扩展了,也许更多的时候快速是其应鼡的重点数据可以从1~65535个。
直接存储器存取(Direct Memory AccessDMA)是计算机科学中的一种内存访问技术。它允许某些电脑内部的硬体子系统(电脑外设)可以独立地直接读写系统存储器,而不需绕道 CPU在同等程度的CPU负担下,DMA是一种快速的数据传送方式它允许不同速度的硬件装置来沟通,而不需要依于 CPU的大量中断请求【摘自Wikipedia】
现在越来越多的单片机采用DMA技术,提供外设和存储器之间或者存储器之间的高速数据传输當 CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器 来实行和完成STM32就有一个DMA控制器,它有7个通道每个通道专门用来管理一个或多个外设對存储器访问的请求,还有一个仲裁器来协调各个DMA请求的优先权
DMA 控制器和Cortex-M3核共享系统数据总线执行直接存储器数据传输。当CPU和DMA同时访问楿同的目标(RAM或外设)时DMA请求可能会停止 CPU访问系统总线达若干个周期,总线仲裁器执行循环调度以保证CPU至少可以得到一半的系统总线(存储器或外设)带宽。
在发生一个事件后外设发送一个请求信号到DMA控制器。DMA控制器根据通道的优先权处理请求当DMA控制器开始访问外设的时候,DMA控制器立即发送给外设一个应答信号当从DMA控制器得到应答信号时,外设立即释放它的请求一旦外设释放了这个请求,DMA控制器同时撤銷应答信号如果发生更多的请求时,外设可以启动下次处理
总之,每个DMA传送由3个操作组成:
高级工程师, 积分 7775, 距离下一级还需 225 積分
|
高级工程师, 积分 7775, 距离下一级还需 225 积分
|