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

使用 STM32F2 和 STM32F4 DMA 控制器

[复制链接]
STMCU小助手 发布时间:2022-7-21 14:31
前言
0 i% @% y! K" g5 t. P4 [! U$ o( b本应用笔记对如何使用 STM32F2xx 和 STM32F4xx 系列直接存储器访问控制器 (DMA)进行了说明。STM32F2xx/F4xx DMA 控制器所具有的系统架构、多层总线矩阵和存储系统等,使其能够为应用提供很高的数据带宽,让用户可以开发出响应迅速的应用软件。  ^+ e" c1 s7 O' o
本应用笔记还提供了一些使用DMA的技巧,以便开发者能够充分利用STM32F2和STM32F4DMA 的特性来为不同的外设和子系统的 DMA 请求保证足够快的响应时间。
" k$ ]' D: F! J8 S! e# j本文档中,使用 "STM32F2/F4 设备 " 代替 STM32F2xx 和 STM32F4xx,使用 “DMA” 代替DMA 控制器。
9 t  k) S) y0 Z# z- Q& ^) {- \本应用笔记适用于 1 中所列产品
; w! P) V+ \7 a6 u- x# z" e  G/ K9 P: z' d: \, B4 g9 f& @% {
GB7X63BU~~0_8O}2H)Z$$VA.png
( n1 r9 H% H( m& x: |2 A9 Q

- u9 b; p7 f9 t7 p% S1 DMA 控制器说明
! p1 X7 ^# f- o+ [" s1 \$ ^5 u& QDMA 是一种 AMBA 先进高性能总线 (AHB)模块,它具有三个 AHB 端口:1 个用于 DMA编程的从端口和 2 个允许 DMA 在从模块之间进行数据传输的主端口(外设和存储器端口)。- y4 n  m- w) q
DMA 使得数据传输在后台进行,而无需 Cortex-Mx 处理器干预。在数据传输过程中,主处理器能够执行其他任务,仅当需要处理一个完整数据块时才会被中断。
' P4 g" o& {: X* e3 U可以在不显著影响系统性能的情况下进行大量数据的传输。DMA 主要用于实现不同外设模块的集中数据缓冲存储 (通常在 SRAM 中)。在分布式方案中,每个外设均需实现其各自的本地数据存储,该解决方案从硅片面积的使用和功耗方面来说是比较便宜的。
: ]! v+ Q7 X+ j6 USTM32F2/F4 DMA 控制器充分利用了 Cortex-Mx 哈佛结构和多层总线系统的优势,保证了DMA 传输和 CPU 中断响应的及时性。' |0 e1 w# H5 g0 b' }9 X% u
1.1 DMA 传输属性
5 G* B3 ]! E) v$ b4 b+ UDMA 传输的属性如下:
9 t, P) i0 u, |, n& eDMA 数据流 / 通道+ j7 T2 S5 O( R# f! F
数据流优先级- y) E' ^( I6 j5 `
源和目标地址. N9 S; [' ~; a; ?& v7 m
传输模式; T7 K6 [1 c* [) D# m" w% v: {6 A7 R4 c) K
传输数据量大小 (仅当 DMA 为流量控制器时)
: M: r+ e1 D$ j! b. A- g$ \* `源 / 目标地址递增或非增
$ h* a  P1 r$ b& @( q2 e3 d7 b5 U8 @源和目标数据宽度, i: x5 G3 W0 G
传输类型# i) t9 M, {9 R3 U: s
FIFO 模式
! ]5 I3 W0 V& g: V' M源 / 目标批量传输数据量大小, N- B  M1 V3 W
双缓冲区模式% ?7 [# `" \, m! A% @; q  t
流控# K. q" k) N9 ]) i1 _
STM32F2/F4 器件集成了 2 个 DMA 控制器,每个 DMA 有两个端口,一个外设端口和一个存储器端口,它们可以同时工作。
0 F, J; ~2 d+ c% k2 K" N 1 显示了 DMA 框图。
8 q8 P/ {* S7 w7 i+ }1 p; l2 M5 u7 S" _9 v6 Q, z( H
! t% b8 b; ]  K1 r1 e
@4$QWE{LMG7AY}09(1Z0)`H.png 2 l4 V$ V/ S' c
0 e" f. H7 B; \' v

2 l# f6 I1 \+ x% I" {+ _1.1.1 DMA 数据流 / 通道
& @- j- M) S( c! }. y. aSTM32F2/F4 器件集成了 2 个 DMA 控制器,提供了共计多达 16 个数据流 (每个控制器 8个),每个数据流都可用来处理来自一个或多个外设的存储器访问请求。
* W% W2 S' ], n8 o+ k每个数据流共有多达 8 个可选通道(请求)," ?+ |3 r3 D( ?: B3 X. Q
可由软件配置,允许多个外设启动 DMA 请求。* C! B8 i; ]1 b0 D) {* W; |0 a0 S' F
2 描述了某个特定数据流的通道选择。- z9 }+ ?# N7 g+ A- w! m
3 o/ _% ?: f9 V/ o

% u& K1 Y# h3 i6 E+ o LUH)1WGRXKG**ADHG3~T.png / T( N7 e' D) C7 o

( N# I, L' u9 t4 c& F DHF%)80B}[QQ1{OPB$%MMR0.png ' w0 s+ y" y! n4 @

! o' t& ^% z7 j% O3 M/ c
1 }  ?8 u2 N1 H! w; M' ^ ~K}O4[JC%AG_QHOUGZ[GCX3.png " C- ]2 l. N7 M+ q* j% ^- |
; y! Q% v& J; J; y9 c: t) p
$@TKAUJE4FSP@OE(@R{GDSI.png
* d+ P* W' t+ d! c" r : w8 L8 w7 X1 ^) l) x, J$ K
STM32F2/F4 DMA 请求映射经过了精心设计,软件应用可以更加灵活地为关联的外设请求配置 DMA 传输通道,并且通过复用相应的 DMA 数据流和通道可覆盖大部分应用。
- j8 ?9 y" L0 L
8 H# f5 n! g) W( u1 n2 U
1.1.2 数据流优先级
2 e; H' |# V3 S) _; Z0 Y9 x每个 DMA 端口都有一个仲裁器来处理 DMA 数据流之间的优先级。数据流优先级可由软件配置(共有 4 个软件级别)。如果两个或更多的 DMA 数据流具有同样的软件优先级别,则使用硬件优先级 (数据流 0 比数据流 1 优先级高,以此类推)。
  i+ Z2 g$ _+ s& a. E5 C# Z* |& G, }, R9 V( J5 P8 S
1.1.3 源和目标地址* T7 Z2 {% i1 B! I: [  g
DMA 传输由源地址和目标地址决定。源和目标 (地址)均应当在 AHB 或 APB 存储范围之内,并且与传输宽度保持一致。' n7 D5 _0 X/ K; l  V$ t) L
* D: ~3 R8 Z0 {8 L. v3 ]" O
1.1.4 传输模式
% Q0 e4 V& i7 L' t! i( [' q  ?DMA 能够实现 3 种不同的传输模式:' U( B& e. D0 y* p0 W+ m
外设到存储器,
) a: C! F  k4 Q2 ~0 M" d2 x存储器到外设,* l1 B  a# i& \( a3 m
存储器到存储器 (仅 DMA2 能够实现该传输,在这种模式下,禁用循环和直接模式。)
& w& q$ Y( n. u4 P0 v6 {+ {
8 s" k8 Z* u4 d& r6 m1.1.5
' _7 L% G5 |# I# k% m传输数据量大小  l7 q9 I9 D# ~; @" O% m
仅当 DMA 为流量控制器时,才必须定义其传输数据量大小。实际上,传输数据量值决定了从数据源到目标传输的数据总量。
) I8 H. ~* |: L1 R传输数据量大小由 DMA_SxNDTR 寄存器值和外设端的数据传输宽度决定。随着已接收的请求 (批量或单个的),传输数据总量减少,减少量为已传输数据量。
) M1 p+ }& c* R* S; x. W& }2 f" z6 P( y" g5 N

2 g/ Q" F$ [2 f7 n

: Q" q; ^/ l0 F" t* K完整版请查看:附件
; i% a/ ^6 @, a3 x
8 W5 K0 U% q2 J. K$ V) H* K/ U" A! k  j: T

DM00046011_ZHV1.pdf

下载

1.47 MB, 下载次数: 2

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

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版