- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.DMA-为CPU减负
DMA-为CPU减负1 DMA功能简介DMA (Direct Memory Access),直接存储器存取,是一种可以大大减轻CPU工作量的数据存取方式,因而被广泛地使用。早在8086的应用中,就已经有Intel的8237这种典型的DMA控制器。而STM32的DMA则是以类似外设的形式,添加到Cortex内核之外的。在硬件系统中,主要由CPU(内核)、外设、内存(SRAM)、总线等结构组成,数据经常要在内存与外设之间转移,或从外设A转移到外设B,或从内存C转移到内存D。例如:当CPU需要处理由ADC外设采集回来的数据时,CPU首先要把数据从ADC外设的寄存器读取到内存中(变量),然后进行运算处理,这是一般的处理方法。在转移数据的过程中会占用CPU十分宝贵的资源,所以我们希望CPU更多地被用在数据运算或响应中断之中,而数据转移的工作交由其它部件完成。DMA正为CPU分担了数据转移的工作。因为DMA的存在,CPU被解放出来,它可以在DMA转移数据的过程中同时 进行数据运算,响应中断,大大提高效率。直接存储器存取(DMA)用来提供在外设和存储器之间、外设与外设之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。 两个DMA控制器有12个通道(DMA1有7个通道,DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。DMA主要特性● 12个独立的可配置的通道(请求):DMA1有7个通道,DMA2有5个通道 。● 每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置。● 在同一个DMA模块上,多个请求间的优先权可以通过软件编程设置(共有四级:很高、高、中等和低),优先权设置相等时由硬件决定(请求0优先于请求1,依此类推) 。● 独立数据源和目标数据区的传输宽度(字节、半字、全字),模拟打包和拆包的过程。源和目标地址必须按数据传输宽度对齐。 ● 支持循环的缓冲器管理 ● 每个通道都有3个事件标志(DMA半传输、DMA传输完成和DMA传输出错),这3个事件标志逻辑或成为一个单独的中断请求。 ● 存储器和存储器间的传输 ● 外设和存储器、存储器和外设之间的传输 ● 闪存、SRAM、外设的SRAM、APB1、APB2和AHB外设均可作为访问的源和目标。 ● 可编程的数据传输数目:最大为655352 DMA工作分析 见上图STM32的系统结构,在这个图中,我们可以清晰地看到STM32内核、存储器、外设及DMA的连接。所有这些硬件结构最终都通过各种各样的线连接到总线矩阵之中,硬件结构之间的数据转移都经过总线矩阵的协调,使各个外设都能够和谐地使用总线来传输数据。例如:在不使用DMA的情况下,内核通过DCode 经过总线矩阵协调,使用AHB把外设ADC采集的数据读取到内核,然后内核DCode再通过总线矩阵协调,把数据存放到内存SRAM中。 DMA正好可以取代这样的工作。由DMA控制器的DMA总线与总线矩阵协调,使用AHB把外设ADC的数据经由DMA通道存放到内存SRAM。在这个数据传输的过程中,不需要内核的全程参与,所以,内核可以同时进行数据运算,而且,DMA的方式是点到点的数据转移,而不使用DMA的方式还要以内核来作为中转站,显然DMA的传输方式的效率更高。要使用DMA,需要确定一系列的控制参数,如外设数据的地址,内存地址,传输方向等,在开启DMA传输前还要先发出DMA请求。#.3 DMA处理在发生一个事件后,外设向DMA控制器发送一个请求信号。DMA控制器根据通道的优先权处理请求。当DMA控制器开始访问发出请求的外设时,DMA控制器立即发送给它一个应答信号。当从DMA控制器得到应答信号时,外设立即释放它的请求。一旦外设释放了这个请求,DMA控制器同时撤销应答信号。如果有更多的请求时,外设可以启动下一个周期。 总之,每次DMA传送由3个操作组成:● 从外设数据寄存器或者从当前外设/存储器地址寄存器指示的存储器地址取数据,第一次传输时的开始地址是DMA_CPARx(DMA通道x外设地址寄存器)或DMA_CMARx(DMA通道x存储器地址寄存器)寄存器指定的外设基地址或存储器单元。● 存数据到外设数据寄存器或者当前外设/存储器地址寄存器指示的存储器地址,第一次传输时的开始地址是DMA_CPARx或DMA_CMARx寄存器指定的外设基地址或存储器单元。● 执行一次DMA_CNDTRx寄存器的递减操作,该寄存器包含未完成的操作数目。#.4 仲裁器 仲裁器根据通道请求的优先级来启动外设/存储器的访问。 优先权管理分2个阶段:● 软件:每个通道的优先权可以在DMA_CCRx寄存器中设
文档评论(0)