你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用 STM32F2 和 STM32F4 DMA 控制器

[复制链接]
STMCU小助手 发布时间:2022-7-21 14:31
前言- C* g, T$ Z" R5 A$ L
本应用笔记对如何使用 STM32F2xx 和 STM32F4xx 系列直接存储器访问控制器 (DMA)进行了说明。STM32F2xx/F4xx DMA 控制器所具有的系统架构、多层总线矩阵和存储系统等,使其能够为应用提供很高的数据带宽,让用户可以开发出响应迅速的应用软件。& \6 e( s% K! s* ~0 l# c- u
本应用笔记还提供了一些使用DMA的技巧,以便开发者能够充分利用STM32F2和STM32F4DMA 的特性来为不同的外设和子系统的 DMA 请求保证足够快的响应时间。
" w) X5 {) H$ F8 z3 f本文档中,使用 "STM32F2/F4 设备 " 代替 STM32F2xx 和 STM32F4xx,使用 “DMA” 代替DMA 控制器。
' ^$ t7 t# K' V& a0 e+ j2 J本应用笔记适用于表 1 中所列产品- q! w6 c2 \. ~. {; k$ H4 A

. e$ ?  c6 c3 M$ y
GB7X63BU~~0_8O}2H)Z$$VA.png 6 R1 C# l7 r  e  w

( k/ W  j; l  g4 Z! c1 DMA 控制器说明
8 F3 G$ j4 s+ n/ R+ G+ \DMA 是一种 AMBA 先进高性能总线 (AHB)模块,它具有三个 AHB 端口:1 个用于 DMA编程的从端口和 2 个允许 DMA 在从模块之间进行数据传输的主端口(外设和存储器端口)。
+ f! |1 F. V) ~0 K) |. ^DMA 使得数据传输在后台进行,而无需 Cortex-Mx 处理器干预。在数据传输过程中,主处理器能够执行其他任务,仅当需要处理一个完整数据块时才会被中断。3 v% T7 R# K& x+ B# ~" ~1 ^: a
可以在不显著影响系统性能的情况下进行大量数据的传输。DMA 主要用于实现不同外设模块的集中数据缓冲存储 (通常在 SRAM 中)。在分布式方案中,每个外设均需实现其各自的本地数据存储,该解决方案从硅片面积的使用和功耗方面来说是比较便宜的。: m5 n0 _- a$ C* M% f
STM32F2/F4 DMA 控制器充分利用了 Cortex-Mx 哈佛结构和多层总线系统的优势,保证了DMA 传输和 CPU 中断响应的及时性。
& I1 H, ]* V/ t7 J" g0 }; [
1.1 DMA 传输属性" v# i, L7 X9 T! ^" ?
DMA 传输的属性如下:
4 a. f5 b) a9 D* A- k- z- Z• DMA 数据流 / 通道
5 C4 P) a5 ?3 R$ ]' H, |• 数据流优先级' e8 P$ R( t/ k1 k/ U4 A/ H9 c
• 源和目标地址$ B$ f( }# o& H# n
• 传输模式% Z# p5 N7 g1 [
• 传输数据量大小 (仅当 DMA 为流量控制器时)
7 U. k, d8 ?5 x, J& E" f$ f! {+ L, P• 源 / 目标地址递增或非增# }( ?4 i1 Q  [: x# k- p
• 源和目标数据宽度
: c! O' i; y* J! \1 B• 传输类型
7 y& J2 {) i3 V. q$ q2 I• FIFO 模式2 \/ W* g' [  b
• 源 / 目标批量传输数据量大小
+ O5 d% g! o) b( m' T, |  F5 ?. \• 双缓冲区模式
6 Z# L% U: F. ?• 流控. _: l. q( I# D5 u) y
STM32F2/F4 器件集成了 2 个 DMA 控制器,每个 DMA 有两个端口,一个外设端口和一个存储器端口,它们可以同时工作。
' a8 w7 g9 Q9 E* p5 D图 1 显示了 DMA 框图。" ~: q8 m* ?2 p5 X! ?* C

8 a$ D; w3 z6 W7 F# H& h

/ V5 i8 Z& u) j2 N& A @4$QWE{LMG7AY}09(1Z0)`H.png " G9 f5 R! |. W
6 F. D& d% Y4 I# L/ Z  P% Z, o

$ D$ _* e5 a4 R; D1.1.1 DMA 数据流 / 通道
* M2 r9 }5 H7 _; D; x# u) WSTM32F2/F4 器件集成了 2 个 DMA 控制器,提供了共计多达 16 个数据流 (每个控制器 8个),每个数据流都可用来处理来自一个或多个外设的存储器访问请求。- o  F4 \+ S$ m$ ^  o! h
每个数据流共有多达 8 个可选通道(请求)," J; Z7 H( r: f& D
可由软件配置,允许多个外设启动 DMA 请求。+ ~; x8 O3 u4 V+ z" t
图 2 描述了某个特定数据流的通道选择。
' j1 j+ S" y3 C  |
0 U7 f4 r8 R( g5 D: Y, X( X- G
; ^$ t+ D& O- l
LUH)1WGRXKG**ADHG3~T.png , a! I2 k! a0 o/ n! t

* A7 t7 m3 n, Y- [7 o- _- T DHF%)80B}[QQ1{OPB$%MMR0.png 4 P3 B# i! E1 y# m; N4 Q. S4 _
$ a0 G; p: q4 ^) j) x' i: a* p9 A
/ U6 Q  e+ t" Z0 P, }3 `" Z7 z
~K}O4[JC%AG_QHOUGZ[GCX3.png % Q+ j% s1 ~9 g/ @& G
3 B2 t+ p. \8 y7 z
$@TKAUJE4FSP@OE(@R{GDSI.png
  P1 V' S$ d4 O- @4 T6 P 0 {& }' U# i$ F( g# n
STM32F2/F4 DMA 请求映射经过了精心设计,软件应用可以更加灵活地为关联的外设请求配置 DMA 传输通道,并且通过复用相应的 DMA 数据流和通道可覆盖大部分应用。
. n& m: g% H( L' J6 X' R1 k3 W; n: u2 v% S  r+ ]/ `& \, r7 G& I
1.1.2 数据流优先级
2 \7 b6 l) p- f3 a4 c8 {每个 DMA 端口都有一个仲裁器来处理 DMA 数据流之间的优先级。数据流优先级可由软件配置(共有 4 个软件级别)。如果两个或更多的 DMA 数据流具有同样的软件优先级别,则使用硬件优先级 (数据流 0 比数据流 1 优先级高,以此类推)。
# U: {) m- ~- N' y0 U8 }" U8 S$ q7 R9 j  W' z4 G! ~" u1 T
1.1.3 源和目标地址) \# j8 R* C, Q* m( q+ }$ @7 N
DMA 传输由源地址和目标地址决定。源和目标 (地址)均应当在 AHB 或 APB 存储范围之内,并且与传输宽度保持一致。' N' K* s0 c! O; v, e
' t- ^7 q& t4 Z4 K+ Q
1.1.4 传输模式1 d, o/ M$ x; O- c
DMA 能够实现 3 种不同的传输模式:" J) C* {: @. o8 r; J* \4 H
• 外设到存储器,' K' e: ^! V% L  L
• 存储器到外设,
0 d8 Q$ ?! T6 J7 P- W5 X• 存储器到存储器 (仅 DMA2 能够实现该传输,在这种模式下,禁用循环和直接模式。)' x; C8 d/ z5 }  c! Z
8 |7 ]4 K5 K; |9 H+ ~% O2 u& U
1.1.5 7 n6 Z" z- l4 u7 \! V: K
传输数据量大小
( L  M3 q* _) M仅当 DMA 为流量控制器时,才必须定义其传输数据量大小。实际上,传输数据量值决定了从数据源到目标传输的数据总量。8 r5 T3 M- ]# v& ]$ v- R
传输数据量大小由 DMA_SxNDTR 寄存器值和外设端的数据传输宽度决定。随着已接收的请求 (批量或单个的),传输数据总量减少,减少量为已传输数据量。
- p( A2 s, |' S( \" F9 a* n$ J6 c, M6 J

% [: M1 m4 f$ k) q6 c& d

2 U; C8 }; L+ L( u0 b$ I' T$ W' G完整版请查看:附件
% f' K  A9 m6 u' z5 e
7 `8 N9 {2 t! r
9 {. Y2 b1 U+ L9 a: V

DM00046011_ZHV1.pdf

下载

1.47 MB, 下载次数: 3

赞 收藏 评论0 发布时间:2022-7-21 14:31

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版