第九章STM32的DMA分析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章STM32的DMA分析

DMA概述 STM32的DMA结构和特点 STM32 DMA寄存器 STM32 DMA初始化配置 STM32 DMA应用举列 第九章 STM32的DMA 9.1 DMA概述 DMA的概念:Direct Memory Access,即直接存储器访问。其作用是无需经过CPU而进行数据传输。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,能使CPU的效率大为提高。 DMA控制器(DMAC)可代替CPU驱动产生数据访问的地址,并执行数据的读/写操作。 9.1 DMA概述 DMA传输的三大要素: 传输源:DMA控制器从传输源读出数据; 传输目标:DMA控制器将数据传输的目标; 触发信号:用于触发一次数据传输的动作,执行一个单位的数据传输。 DMA传输过程的四个步骤: DMA请求:CPU对DMAC初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求; DMA响应:DMAC对DMA请求判别优先级及屏蔽,向总线仲裁器提出总线请求。CPU执行完当前总线周期即可释放总线控制权。此时 9.1 DMA概述 总线仲裁器输出总线应答信号,表示DMA已经响应,通过DMAC通知I/O接口开始DMA传输。 DMA传输:DMAC获得总线控制权后,CPU立即挂起或只执行内部操作,由DMAC输出读/写命令,直接控制RAM与I/O接口进行DMA传输。 DMA结束:当完成规定的数据传输操作后,DMAC释放总线控制权,并向I/O接口发出结束信号。 DMA主要由硬件实现,是外设和内存之间交换数据是主要方式之一。 9.2 STM32的DMA结构和特点 STM32有2个DMA控制器,共12个通道:DMA1有7个通道,DMA2有5个通道。其中DMA2仅存在大容量产品中。每个通道可管理来自于一个或多个外设对存储器访问的请求。由一个仲裁器协调各个DMA请求的优先权。 STM32的DMA特征: 传输源和传输目标可分别是存储器和/或片上外设,也可同为存储器,或同为片上外设 一次数据传输的单位为:8、16、32位 数据传输的触发信号由硬件确定不能更改 9.2 STM32的DMA结构和特点 STM32的DMA具有以下特点: 每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置。 在七个请求间的优先权可以通过软件编程设置(共有四级:很高、高、中等和低),假如在相等优先权时由硬件决定(请求0优先于请求1,依此类推) 。 独立的源和目标数据区的传输宽度(字节、半字、全字),模拟打包和拆包过程。源和目标地址必须按数据传输宽度对齐。 9.2 STM32的DMA结构和特点 支持循环的缓冲器管理 每个通道都有3个事件标志(DMA半传输,DMA传输完成和DMA传输出错),这3个事件标志逻辑或成为一个单独的中断请求。 存储器和存储器间的传输 外设和存储器,存储器和外设的传输 可编程的数据传输数目:最大为65536 闪存、SRAM、外设的SRAM、APB1 APB2和AHB外设均可作为访问的源和目标。 9.2 STM32的DMA结构和特点 STM32 DMA传送由3个操作组成: 取数据 存数据 执行一次DMA_CNDTRx寄存器递减操作 从外设(TIMx、ADC、SPIx、I2Cx和USARTx)产生的DMA请求,通过逻辑或输入到DMA控制器,这就意味着同时只能有一个请求有效。外设的DMA请求,可以通过设置相应的外设寄存器中的控制位,被独立地开启或关闭。 9.2 STM32的DMA结构和特点 DMA1各通道请求一览表 9.3 STM32 DMA寄存器 DMA共有六个相关的寄存器 1) DMA中断状态寄存器(DMA_ISR) 如果开启了DMA_ISR中的中断,在达到条件后就会跳到中断服务函数中,即使没开启,也可通过查询这些位来获得当前DMA传输的状态。TCIFx是通道DMA传输完成与否的标志。该寄存器为只读寄存器,所以在这些位被置位后,只能通过其他的操作来清除。 2) DMA中断标志清除寄存器(DMA_IFCR) 该寄存器的各位是用来清除DMA_ISR的对应位,通过写0清除。DMA_ISR被置位后, 9.3 STM32 DMA寄存器 必须通过向该寄存器对应位写入0来清除。 3) DMA通道x配置寄存器(DMA_CCRx x=1~7) 该寄存器控制着DMA的很多信息,包括数据宽度、外设及存储器的宽度、通道优先级、增量模式、传输方向、中断允许、使能等都是通过该寄存器来设置。所以DMA_CCRx是DMA传输的核心控制寄存器。 4) DMA通

文档评论(0)

wbjsn + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档