使用 STM32F101xx 和 STM32F103xxDMA 控制器 6 X& [3 ^! n" I 1 前言 这篇应用笔记描述了怎么使用STM32F101xx 和 STM32F103xx的直接存储器访问(DMA)控制器。STM32F101xx和STM32F103xx的DMA控制器、CortexTM-M3内核、高级微控制器总线架构(AMBA)总线和存储器系统,使得STM32具有高的数据带宽,并能使用户开发出低延迟、快响应的软件。 5 }# R! b$ n* @" H+ U& z. v ( @) Y7 z: v6 ]4 N' [0 a. u 这篇文档也描述了怎样充分利用这些特性,以及对于不同的外设和子系统怎样保证正确的响应时间。 在下文中STM32F101xx和STM32F103xx都记作STM32F10xxx,DMA控制器都记作DMA。 * q! j7 g* N! s6 t, | 2 DMA控制器 ! {0 `+ z3 {1 w+ _* ~2 t6 J8 ~, W 5 Q( F# j. J9 Y DMA是AMBA的先进高性能总线(AHB)上的设备,它有2个AHB端口:一个是从端口,用于配置DMA,另一个是主端口,使得DMA可以在不同的从设备之间传输数据。 9 ?1 A$ N6 h8 @* I5 } 1 `! f: ^$ T/ i$ U/ F; i1 p% b- ] DMA的作用是在没有Cortex-M3核心的干预下,在后台完成数据传输。在传输数据的过程中,主处理器可以执行其它任务,只有在整个数据块传输结束后,需要处理这些数据时才会中断主处理器的操作。它可以在对系统性能产生较小影响的情况下,实现大量数据的传输。 , I' S7 X3 v) \ 4 S4 M- z6 U0 U DMA主要用来为不同的外设模块实现集中的数据缓冲存储区(通常在系统的SRAM中)。与分布式的解决方法(每个外设需要实现自己的数据存储)相比,这种解决方法无论在芯片使用面积还是功耗方面都要更胜一筹。 3 E2 L( ~# [9 x STM32F10XXX的DMA控制器充分利用了Cortex-M3哈佛架构和多层总线系统的优势,达到非常低的DMA数据传输延时和CPU响应中断延迟。 ' z6 Q' |0 @* R9 a8 n - n' _' J7 w9 d 2.1 DMA的主要特性 / d) S/ l$ L& h& ] DMA具有以下的特性: ● 7个DMA通道(通道1至7)支持单向的从源端到目标端的数据传输: ^# c0 m2 D E+ f3 E ● 硬件DMA通道优先级和可编程的软件DMA通道优先级 ● 支持存储器到存储器、存储器到外设、外设到存储器、外设到外设的数据传输(存储器可以是SRAM或者闪存) ● 能够对硬件/软件传输进行控制$ f7 F% f$ |" j) A5 k% a1 h ● 传输时自动增加存储器和外设指针! K8 m2 R# K( c/ Y ● 可编程传输数据字长度 ● 自动的总线错误管理4 J. t- r& D% n( D ● 循环模式/非循环模式 ● 可传输高达65536个数据字 " Z j( H* x$ r" @$ q% s& D0 v% I, } ) Y. `" W% d- U DMA旨在为所有外设提供相对较大的数据缓冲区,这些缓冲区一般位于系统的SRAM中。 0 {2 K; Z0 I) h* N4 l" C! q 每一个通道在特定的时间里分配给唯一的外设,连接到同一个DMA通道的外设(表1中的通道1到通道7)不能够同时使用DMA功能。 ) c" V+ N' N* m2 A h$ F) r . m( J! ~& j* C% J 支持DMA的外设如表1所示,DMA服务的外设和总线系统结构也在图1中所示。 , T9 t1 Z8 k# n 8 o% j9 Z; u# N6 M- m1 T2 q5 i4 y) l 表1 DMA服务的外设和DMA通道分配 ; V/ f2 W2 W2 C. Q/ e |
收藏 |
STM32固件库分享,超全系列整理
小马哥STM32F103开源小四轴RoboFly全部资料大放送
【MCU实战经验】+STM32F107的USB使用
基于STM32F103两轮平衡小车设计(开源)
STM32F107VCT6官方原理图和PCB
【福利】用STM32库的朋友有福了:STM32F10x_StdPeriph_Lib_V3.5.0chm...
基于STM32F10xx存储器和系统架构经验分享
基于STM32F1的CAN通信之BH1750
基于STM32F1的CAN通信之OLED
基于STM32F1的CAN通信之之串口IAP