第7章 DMA控制器.ppt

第7章 DMA控制器

第7章 DMA 控制器; 直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU任何干预,通过DMA数据可以快速地移动。这就节省了CPU的资源。 DMA控制器有7个通道,每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权 ;一、DMA的构成 ;支持循环的缓冲器管理; 每个通道都有3个事件标志(DMA半传输,DMA传输完成和DMA传输出错),这3个事件标志通过“或”可产生一个单独的中断请求; 可完成存储器和存储器间的传输,外设和存储器间的传输,存储器和外设间的传输的传输; 闪存SRAM、外设的SRAM、APB1和APB2外设均可作为访问的源和目标; 可编程的最大数据传输数目为65536。;2、DMA框图 ;二、DMA的功能描述;1、DMA处理过程 当发生一个事件后,外设要向DMA控制器发送一个DMA请求信号。 DMA控制器可根据通道的优先权来处理外设的请求。 当DMA控制器响应请求并开始访问外设的时候,它立即发送一个应答信号给外设。 当外设从DMA控制器得到应答信号时,外设立即释放DMA的请求,同时DMA控制器也撤销应答信号。 如果发生更多的请求时,外设可以按上述描述来启动下次DMA过程。;每个DMA传送由3个操作组成: 从外设数据寄存器或者从DMA_CMARx寄存器指定地址的存储器单元执行读操作。 存数据到外设数据寄存器或者存数据到DMA_CMARx寄存器指定地址的存储器单元。 执行一次DMA传送之后,DMA_CNDTRx(该寄存器包含未完成的操作数目)寄存器做一次递减操作。 注: DMA_CMARx为DMA通道x的存储器地址寄存器; DMA_CNDTRx为DMA通道x传输数量寄存器。;2、仲裁器 仲裁器根据通道请求的优先级来启动外设/存储器的访问。优先权管理分2个阶段: (1)软件:每个通道的优先权可以在DMA_CCRx(通道配置寄存器)中设置,有4个软件等级: 最高优先级 高优先级 中等优先级 低优先级 (2)硬件:如果2个请求有相同的软件优先级,则拥有较低编号的通道比拥有较高编号的通道有较高的优先权。;3、DMA通道 传送数据量:可通过对DMA_CCRx寄存器中的PSIZE和MSIZE位编程来设置传输个数(最大传输数目为65535),每次传输后自动递减。 地址指针增量:通过设置DMA_CCRx寄存器中PINC和MINC标志位,外设和存储器的地址指针在每次传输后可以有选择地完成自动增量,增量值取决与所选的数据宽度为1、2或4。双方的第一个传输的地址存放在DMA_CPARx/DMA_CMARx寄存器中。 通道配置为非循环模式时,在传输结束后(即传输数据量变为0)将不再产生DMA操作。;4、通道配置过程下面是配置DMA通道的过程 在DMA_CPARx寄存器中设置外设寄存器的地址; 在DMA_CMARx寄存器中设置数据存储器的地址; 在DMA_CNDTRx寄存器中设置要传输的数据量; 在DMA_CCRx寄存器的PL[1:0]位中设置通道的优先级; 在DMA_CCRx寄存器中设置数据传输的方向、循环模式、外设和存储器的增量模式、外设和存储器的数据宽度、传输一半产生中断或传输完成产生中断; 设置DMA_CCRx寄存器的ENABLE 位,启动该通道。;5、循环模式 循环模式用于处理循环缓冲区和连续的数据传输(如ADC的扫描模式)。当启动了循环模式时,数据传输的数目变为0时,将会自动地被恢复成配置通道时设置的初值,DMA操作将会继续进行。 循环模式配置方法: 在DMA_CCRx寄存器中将CIRC位置1,循环模式功能被启动。;6、存储器到存储器模式 DMA通道的操作可以在没有外设请求的情况下进行,这种操作就是存储器到存储器模式;存储器到存储器模式不能与循环模式同时使用。只有当DMA_CNDTRx寄存器变为0时,DMA传输结束。 存储器到存储器模式配置方法: 设置了DMA_CCRx寄存器中的MEM2MEM 位 设置了DMA_CCRx寄存器中的EN位启动DMA通道;7、DMA 请求映像 从外设(TIMx、ADC、SPIx、I2Cx和USARTx) 产生的7个请求,通过“或门”输入到DMA控制器,这意味着同时只能有一个请求有效。参见下图的DMA请求映像。 外设的DMA请求,可以通过设置相应外设寄存器中的控制位,被独立地开启或关闭。;DMA请求映像 ;三、DMA的固件库;typedef struct { vu32 ISR; /* DMA 中断状态寄存器 */ vu32 IFCR; /* DMA 中断标志清除寄存器 */ } DMA_TypeDef; ;函数原形;DMA_InitType

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档