
使用 STM32F2 和 STM32F4 DMA 控制器 2 Q: }4 ]8 ]- p 前言 ! d) F8 b6 o5 { Y& _ 7 q, \0 G: y" l7 w 本应用笔记对如何使用 STM32F2xx 和 STM32F4xx 系列直接存储器访问控制器 (DMA)进行了说明。STM32F2xx/F4xx DMA 控制器所具有的系统架构、多层总线矩阵和存储系统等,使其能够为应用提供很高的数据带宽,让用户可以开发出响应迅速的应用软件。 , b+ d+ y) N3 o( t+ c8 }: V6 D3 L8 l* W 本应用笔记还提供了一些使用DMA的技巧,以便开发者能够充分利用STM32F2和STM32F4DMA 的特性来为不同的外设和子系统的 DMA 请求保证足够快的响应时间。 本文档中,使用 "STM32F2/F4 设备 " 代替 STM32F2xx 和 STM32F4xx,使用 “DMA” 代替DMA 控制器。 本应用笔记适用于表 1 中所列产品。; b3 g; `5 C8 i }2 O ![]() 本应用笔记应与 STM32F2/F4 参考手册 (RM0031、 RM0090 和 RM0368)共同阅读使用。 6 ~" S1 U( }# C: V5 F7 o1 K% U1 DMA 控制器说明 DMA 是一种 AMBA 先进高性能总线 (AHB)模块,它具有三个 AHB 端口:1 个用于 DMA编程的从端口和 2 个允许 DMA 在从模块之间进行数据传输的主端口(外设和存储器端口)。 DMA 使得数据传输在后台进行,而无需 Cortex-Mx 处理器干预。在数据传输过程中,主处理器能够执行其他任务,仅当需要处理一个完整数据块时才会被中断。 可以在不显著影响系统性能的情况下进行大量数据的传输。DMA 主要用于实现不同外设模块的集中数据缓冲存储 (通常在 SRAM 中)。在分布式方案中,每个外设均需实现其各自的本地数据存储,该解决方案从硅片面积的使用和功耗方面来说是比较便宜的。 , k& ~9 T: ~/ FSTM32F2/F4 DMA 控制器充分利用了 Cortex-Mx 哈佛结构和多层总线系统的优势,保证了DMA 传输和 CPU 中断响应的及时性。 1.1 DMA 传输属性DMA 传输的属性如下: • DMA 数据流 / 通道 $ b/ ]. n( j1 l# M3 q• 数据流优先级 8 L5 C5 e* B1 E4 N• 源和目标地址 ; b- y' v, I& W, Q. V• 传输模式 6 Z: ]; n, c: O4 m$ r2 T$ X• 传输数据量大小 (仅当 DMA 为流量控制器时) • 源 / 目标地址递增或非增 ' K; ~ a9 f# u( Q' C• 源和目标数据宽度 % T: B/ S F( W• 传输类型 • FIFO 模式 • 源 / 目标批量传输数据量大小 0 Q W" {# p& G* J7 E3 }• 双缓冲区模式 4 E: u" O& w/ D ]" s! w, t• 流控 1 ?$ }' w7 D) P5 X I5 NSTM32F2/F4 器件集成了 2 个 DMA 控制器,每个 DMA 有两个端口,一个外设端口和一个存储器端口,它们可以同时工作。 图 1 显示了 DMA 框图。 ![]() |
谢谢楼主分享 |
![]() |
【实战经验】基于STM32F7的网络时间同步例程
STM32硬件结构学习
STM32中BOOT的作用
STM32电路知识学习
STM32F429IGT6核心板原理图
【STM32F769I-DISC1】开发板刷入Micropython并完成点灯、读取内部温度测试
【STM32F769I-DISC1】测评01:创建STM32cube IDE 工程,点个灯
【STM32F769】创建deepseek本地服务,并实现http请求
Nucleo-F429ZI开发板体验LWIP功能
TouchGFX应用移植自定义屏幕