使用 DMA 控制器指南

上传人:ji****72 文档编号:45500380 上传时间:2018-06-17 格式:PDF 页数:9 大小:251.30KB
返回 下载 相关 举报
使用 DMA 控制器指南_第1页
第1页 / 共9页
使用 DMA 控制器指南_第2页
第2页 / 共9页
使用 DMA 控制器指南_第3页
第3页 / 共9页
使用 DMA 控制器指南_第4页
第4页 / 共9页
使用 DMA 控制器指南_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《使用 DMA 控制器指南》由会员分享,可在线阅读,更多相关《使用 DMA 控制器指南(9页珍藏版)》请在金锄头文库上搜索。

1、 使用 STM32F101xx 和 STM32F103xx 的 DMA 控制器 AN2548 应用笔记应用笔记 使用使用 STM32F101xx 和和 STM32F103xx DMA 控制器控制器 1 前言前言 这篇应用笔记描述了怎么使用STM32F101xx 和 STM32F103xx的直接存储器访问(DMA)控制 器。STM32F101xx和STM32F103xx的DMA控制器、CortexTM-M3内核、高级微控制器总线架 构(AMBA)总线和存储器系统,使得STM32具有高的数据带宽,并能使用户开发出低延迟、快响 应的软件。 这篇文档也描述了怎样充分利用这些特性,以及对于不同的外设和子

2、系统怎样保证正确的响应 时间。 在下文中STM32F101xx和STM32F103xx都记作STM32F10xxx,DMA控制器都记作DMA。 译注: 本应用笔记配套例程下载地址: http:/ 本译文的英文版下载地址为: http:/ 参照2007年12月 AN2548 英文第2版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 使用 STM32F101xx 和 STM32F103xx 的 DMA 控制器 目录目录 1 前言 1 2 DMA控制器 3 2.1 DMA的主要特性 3 3 性能分析 5 3.1 轮询优先级方案 5 3.2 多层结构和总线挪用

3、5 3.3 DMA延迟 6 3.4 数据总线带宽限制 6 3.5 通道优先级选择 7 3.5.1 应用需求 7 3.5.2 内部数据带宽 8 4 DMA编程示例 9 4.1 使用SPI传输获得ADC连续采样的数据 9 4.2 SPI直接传输实现ADC连续数据的获取 9 4.3 使用DMA实现GPIO快速数据传输 9 2/9 参照2007年12月 AN2548 英文第2版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 DMA 控制器 2 DMA控制器控制器 DMA是AMBA的先进高性能总线(AHB)上的设备,它有2个AHB端口:一个是从端口,用于配置 DM

4、A,另一个是主端口,使得DMA可以在不同的从设备之间传输数据。 DMA的作用是在没有Cortex-M3核心的干预下,在后台完成数据传输。在传输数据的过程中, 主处理器可以执行其它任务,只有在整个数据块传输结束后,需要处理这些数据时才会中断主 处理器的操作。它可以在对系统性能产生较小影响的情况下,实现大量数据的传输。 DMA主要用来为不同的外设模块实现集中的数据缓冲存储区(通常在系统的SRAM中)。与分布式 的解决方法(每个外设需要实现自己的数据存储)相比,这种解决方法无论在芯片使用面积还是功 耗方面都要更胜一筹。 STM32F10XXX的DMA控制器充分利用了Cortex-M3哈佛架构和多层总

5、线系统的优势,达到非常 低的DMA数据传输延时和CPU响应中断延迟。 2.1 DMA的主要特性的主要特性 DMA具有以下的特性: 7个DMA通道(通道1至7)支持单向的从源端到目标端的数据传输 硬件DMA通道优先级和可编程的软件DMA通道优先级 支持存储器到存储器、存储器到外设、外设到存储器、外设到外设的数据传输(存储器可以 是SRAM或者闪存) 能够对硬件/软件传输进行控制 传输时自动增加存储器和外设指针 可编程传输数据字长度 自动的总线错误管理 循环模式/非循环模式 可传输高达65536个数据字 DMA旨在为所有外设提供相对较大的数据缓冲区,这些缓冲区一般位于系统的SRAM中。 每一个通道

6、在特定的时间里分配给唯一的外设,连接到同一个DMA通道的外设(表1中的通道1到 通道7)不能够同时使用DMA功能。 支持DMA的外设如表1所示,DMA服务的外设和总线系统结构也在图1中所示。 表1 DMA服务的外设和DMA通道分配 外设模块 通道1 通道2 通道3 通道4 通道5 通道6 通道7 ADC ADC1 ADC1 SPI SPI1 SPI1_RX SPI1_TX SPI2 SPI2_RX SPI2_TX USART USART1 USART1_TXUSART1_RX USART2 USART2_TX USART2_RXUSART3 USART3_TXUSART3_RX I2C I2C

7、1 I2C1_TX I2C1_RX I2C2 I2C2_TX I2C2_RX TIM TIM1 TIM1_CH1TIM1_CH2TIM1_CH4 TIM1_TRIG TIM1_COMTIM1_UP TIM1_CH3 TIM2 TIM2_CH3 TIM2_UP TIM2_CH1 TIM2_CH2 TIM2_CH4TIM3 TIM3_CH3TIM3_CH4 TIM3_UP TIM3_CH1 TIM3_TRIG TIM4 TIM4_CH1 TIM4_CH2TIM4_CH3 TIM4_UP 3/9 参照2007年12月 AN2548 英文第2版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随

8、时注意在ST网站下载更新版本 DMA 控制器 4/9 参照2007年12月 AN2548 英文第2版 图1 总线结构和支持DMA的外设 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 性能分析 3 性能分析 性能分析 STM32F10xxx有两个主模块Cortex-M3处理器和DMA。他们通过总线矩阵连接到从总线、 闪存总线、SRAM总线和AHB系统总线。从总线的另一端连接到两个APB总线,以服务所有的 嵌入的外设(参见图1)。 总线矩阵有两个主要的特性, 实现系统性能的最大化和减少延时: 轮询优先级方案 多层结构和总线挪用 3.1 轮询优先级方案 轮询优

9、先级方案 NVIC和Cortex-M3处理器实现了高性能低延时中断方案。所有的Cortex-M3指令都或者是单周期 执行指令,或者可以在总线周期级上被中断。为了在系统层面上保持这个优点,DMA和总线矩 阵必须确保DMA不能够长时间占用总线。轮询优先级方案能够确保,如有必要,CPU能够每两 个总线周期就去访问其它从总线。因此,在CPU看来第一个数据的最大总线系统延时,就是一 个总线周期(最大两个APB时钟周期)。 3.2 多层结构和总线挪用 多层结构和总线挪用 多层结构允许两个主设备同时执行数据传输,只要他们寻址到不同的从模块。在Cortex-M3哈佛 架构基础上,这种多层结构提高了数据的并行性

10、,因此减少了代码执行时间并且优化了DMA效 率。由于从Flash存储器取指是通过完全独立的总线,所以DMA和CPU只是在需要通过同一个从 总线进行数据访问时才会产生竞争。 另外,在其它DMA控制器工作于突发模式时,STM32F10xxx的DMA数据传输只使用单个总线 周期(总线挪用)。使用总线挪用存取机制时,CPU进行数据访问所等待的最大时间是很短的(一 个总线周期) 。通常,CPU对SRAM的访问是与DMA操作交替地进行,CPU访问SRAM的同时 DMA就在通过APB总线访问外设。尽管使用DMA的突发模式可以提高(DMA访问外设)数据传输 速度,但不可避免地是CPU的执行速度被拖慢。下图显示

11、了总线挪用和突发机制的区别。 图2 DMA传输的总线挪用机制和突发机制 极端的情况发生在CPU从内存的一个地方复制一块数据到内存中的另一个地方。这种情况下, 软件的执行须等到整个DMA传输完毕才能进行。实际上,CPU大部分时间是在做数据处理(寄存 器的读/写),比较少地进行数据访问,因此CPU和DMA对数据的存取还算是交替进行着。 5/9 参照2007年12月 AN2548 英文第2版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 性能分析 STM32F10xxx总线结构固有的并行性,加上DMA总线挪用机制,保证了CPU不会长时间地等待 从SRAM中读取

12、数据。采用总线挪用机制的DMA因此能够更高效地使用总线,从而显著地减少 了软件执行的时间。 3.3 DMA延迟延迟 DMA完成从外设到SRAM存储器的数据传输有三个步骤: 1. DMA请求仲裁 2. 从外设中读取数据(DMA源) 3. 将读取的数据写入到SRAM中(DMA目标) 当DMA把数据从内存中传输到外设(例如SPI传送),操作步骤如下: 1. DMA请求仲裁 2. 从SRAM中读取数据(DMA源) 3. 将读取到的数据通过APB总线写入到外设中(DMA目标) 服务每个DMA通道的总时间, tS = tA + tACC + tSRAM 这里, tA是仲裁时间 tA = 1个AHB时钟周期

13、 tACC是访问外设时间 tACC = 1个AHB时钟周期(总线矩阵仲裁) + 2个APB时钟周期(实际的数据传输) + 1个AHB时钟周期(总线同步) tSRAM是读写SRAM的时间 tSRAM = 1个AHB时钟周期(总线矩阵仲裁) + 1个AHB时钟周期(单一的读/写操作) 或者 + 2个AHB时钟周期(先读SRAM再写SRAM的情况) 当DMA通道空闲或者是前一个DMA通道的第3步操作完成后,DMA控制器比较所有挂起的DMA 请求的优先级(先比较软件优先级;软件优先级相同时,再比较硬件优先级),高优先级的通道将 会被服务,DMA开始执行第2步操作。当一个通道正在服务时(第2、3步操作正

14、在进行),没有其 他的通道能够被服务,不管它的优先级如何。 当至少同时使能了两个DMA通道时,最高优先级通道的DMA延迟时间为正在传输的时间(不包括 仲裁阶段),加上下个将被服务的DMA通道(挂起优先级最高的通道)数据传输的时间。 3.4 数据总线带宽限制数据总线带宽限制 数据总线带宽限制主要是因为APB总线比系统SRAM和AHB总线速度慢。对于最高优先级的 DMA通道,必须考虑以下两种情况:(参见图3) 1. 当不止一个DMA通道被使能时,最高优先级的通道在APB总线上占用的数据带宽必须低 于APB最高传输率的25%。APB总线传输的所有时间必须考虑在内,即2个APB时钟周期 加上用来仲裁/

15、同步的2个AHB时钟周期。 2. 尽管高速/高优先级DMA传输通常发生在APB2上(更快的APB总线),但是CPU和其他 DMA通道可以访问APB1上的外设。大约3/4的APB传输是在APB1上完成的,最小的 APB2频率依赖于最快的DMA通道数据带宽。 6/9 参照2007年12月 AN2548 英文第2版 本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本 性能分析 最大的APB时钟分频因子由下列的等式给出: fAHB (2 x N2 + 6 x N1 + 6) x Bmax 如果 N2 N1 则 N1 (fAHB/ Bmax)/8 其中fAHB是AHB时钟频率 N1和N2分别是APB1和APB2的时钟分频因子 Bmax是APB2上的最大数据带宽,单位为传输次数/秒。 图3 DMA传输过程中APB总线的占用情况 注:DMA1是最高优先级通道 3.5 通道优先级选择通道优先级选择 为了实现外设数据的连续传输,相关的DMA通道必须能够维持外设数据传输率,确保DMA服务 的延迟时间少于连续两个外设数据的时间间隔。 高速/高带宽外设必须拥有最高的DMA优先级,这确保了最大的数据延迟对于这些外设都是可以 忍受的,而且可以避免溢出和下溢的情况。 在相同带宽需求的情况下,推荐给工作在从模式下(不能对数据传

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号