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

使用 STM32F2 和 STM32F4 DMA 控制器

[复制链接]
STMCU小助手 发布时间:2022-7-21 14:31
前言
  x! l. F0 t/ W7 [8 r2 y+ ?' |本应用笔记对如何使用 STM32F2xx 和 STM32F4xx 系列直接存储器访问控制器 (DMA)进行了说明。STM32F2xx/F4xx DMA 控制器所具有的系统架构、多层总线矩阵和存储系统等,使其能够为应用提供很高的数据带宽,让用户可以开发出响应迅速的应用软件。, O; R& z' C6 d* u
本应用笔记还提供了一些使用DMA的技巧,以便开发者能够充分利用STM32F2和STM32F4DMA 的特性来为不同的外设和子系统的 DMA 请求保证足够快的响应时间。9 w7 C% B  ^% F' m
本文档中,使用 "STM32F2/F4 设备 " 代替 STM32F2xx 和 STM32F4xx,使用 “DMA” 代替DMA 控制器。  y: h- F# H% O: Y4 B5 i( ]7 H
本应用笔记适用于 1 中所列产品9 ~9 r- Q, Z! w4 e' f; _

6 H4 x5 }1 j, u9 w' i7 T3 c% B
GB7X63BU~~0_8O}2H)Z$$VA.png
  ~4 p' L, q: y7 O

" U1 ^- a( ]/ C  e! }1 DMA 控制器说明
. e, _" f" D- q# SDMA 是一种 AMBA 先进高性能总线 (AHB)模块,它具有三个 AHB 端口:1 个用于 DMA编程的从端口和 2 个允许 DMA 在从模块之间进行数据传输的主端口(外设和存储器端口)。
' M" {( C) d8 W* E: {DMA 使得数据传输在后台进行,而无需 Cortex-Mx 处理器干预。在数据传输过程中,主处理器能够执行其他任务,仅当需要处理一个完整数据块时才会被中断。8 m/ x+ J: ^+ d/ s
可以在不显著影响系统性能的情况下进行大量数据的传输。DMA 主要用于实现不同外设模块的集中数据缓冲存储 (通常在 SRAM 中)。在分布式方案中,每个外设均需实现其各自的本地数据存储,该解决方案从硅片面积的使用和功耗方面来说是比较便宜的。: w' {  I, c$ {5 ~: p
STM32F2/F4 DMA 控制器充分利用了 Cortex-Mx 哈佛结构和多层总线系统的优势,保证了DMA 传输和 CPU 中断响应的及时性。' a# m: j9 M* ^
1.1 DMA 传输属性1 `) y6 K4 F2 D1 Y% E) ]
DMA 传输的属性如下:
) C1 |, Q) y( d' E- |DMA 数据流 / 通道
1 p8 a" z/ _6 S" N# b数据流优先级
8 O  A, u; G& ^" {, R源和目标地址
2 b0 _' b& r6 {% t传输模式
  p. ^* `. f$ X8 v9 e传输数据量大小 (仅当 DMA 为流量控制器时)$ b4 V& u* g3 Q5 T% t+ p
源 / 目标地址递增或非增
) b+ Z. s  F/ _9 X. @源和目标数据宽度
7 ~2 ~! Y2 K" j; k, l传输类型9 h* S2 K* T& j4 D7 j. i, n( f
FIFO 模式, [$ H5 Z" e+ Y( h4 v0 w
源 / 目标批量传输数据量大小" S- o6 L4 B" T1 p5 I5 [) n+ n
双缓冲区模式$ O) }  ]2 o0 u2 a
流控
% L) s8 R, F2 B) {- }  Z; b' WSTM32F2/F4 器件集成了 2 个 DMA 控制器,每个 DMA 有两个端口,一个外设端口和一个存储器端口,它们可以同时工作。
4 U+ o" L( i, a, G 1 显示了 DMA 框图。# I0 y$ V. b' Q: s& D

! B6 |) m  L7 r
6 {2 _0 |( R, l. u, u4 S1 C) ^+ o
@4$QWE{LMG7AY}09(1Z0)`H.png
2 }- J* ?4 |" U0 P# u6 A; F. n8 W# t# y6 f$ `0 I

1 o# j! n8 M" k8 M1.1.1 DMA 数据流 / 通道. E  D/ |# I# `# d
STM32F2/F4 器件集成了 2 个 DMA 控制器,提供了共计多达 16 个数据流 (每个控制器 8个),每个数据流都可用来处理来自一个或多个外设的存储器访问请求。3 G5 \1 s! R0 v
每个数据流共有多达 8 个可选通道(请求),
) O3 ?: e, m9 p3 D7 P  [. V- h6 z- W可由软件配置,允许多个外设启动 DMA 请求。! \1 N6 z/ f0 H
2 描述了某个特定数据流的通道选择。
2 Y: w7 Q9 u: c, J
5 Z( y" r6 v; d7 V

$ p  _3 W& g$ T LUH)1WGRXKG**ADHG3~T.png # [/ M" U5 @1 V5 y( S) t

4 |# W" k1 |7 S; M% f8 K9 w DHF%)80B}[QQ1{OPB$%MMR0.png
4 f1 Q8 c9 I; Q& ^8 u* f
+ H! F' L' B: u/ E/ U( z1 ~& N% y+ m4 O% ]5 W, Y# H
~K}O4[JC%AG_QHOUGZ[GCX3.png
* w5 }* R" N5 `8 S) c4 B, W, X  x( Q& s8 q$ j$ \
$@TKAUJE4FSP@OE(@R{GDSI.png
) m  M1 Y! @! B5 o2 v9 v 8 j! C) }5 J2 K2 U# Q0 m# h; B2 ]( K
STM32F2/F4 DMA 请求映射经过了精心设计,软件应用可以更加灵活地为关联的外设请求配置 DMA 传输通道,并且通过复用相应的 DMA 数据流和通道可覆盖大部分应用。) l$ ^  |3 C) S6 V* P9 f- d

9 g# D; o- R. h5 l
1.1.2 数据流优先级8 n$ \, p* W) z" I1 ]
每个 DMA 端口都有一个仲裁器来处理 DMA 数据流之间的优先级。数据流优先级可由软件配置(共有 4 个软件级别)。如果两个或更多的 DMA 数据流具有同样的软件优先级别,则使用硬件优先级 (数据流 0 比数据流 1 优先级高,以此类推)。8 A7 H9 H8 t- p) V  A! w9 @7 q

1 |/ D+ a8 S0 i7 j  ?: H
1.1.3 源和目标地址
8 Z/ K% c4 _7 `4 HDMA 传输由源地址和目标地址决定。源和目标 (地址)均应当在 AHB 或 APB 存储范围之内,并且与传输宽度保持一致。  G: T+ t! `  S) d9 c$ y& Z4 m
: P/ q- ]  O! B
1.1.4 传输模式- q' j- _. O& m$ [* h# o' a
DMA 能够实现 3 种不同的传输模式:  b6 d$ \: m) L: D
外设到存储器,9 x' e& u5 N) a3 a5 M7 {/ \
存储器到外设,
1 y; m0 u6 o) M' w存储器到存储器 (仅 DMA2 能够实现该传输,在这种模式下,禁用循环和直接模式。)
) e' P: N% E- ?  e) K/ E
& E8 ^2 ^% `& H! H% A4 k1.1.5
; K! Q) _# ~  n9 F) c! N传输数据量大小& S% [6 D' [3 _! h: L: j( M7 M
仅当 DMA 为流量控制器时,才必须定义其传输数据量大小。实际上,传输数据量值决定了从数据源到目标传输的数据总量。
4 ?. A0 K- I, y) N. L' `传输数据量大小由 DMA_SxNDTR 寄存器值和外设端的数据传输宽度决定。随着已接收的请求 (批量或单个的),传输数据总量减少,减少量为已传输数据量。
; q; m8 e; Y# g+ |& ]0 s$ C6 n0 m& G1 c9 R6 D9 G3 R
6 o" L; e' G- e8 h

( L0 ]2 B7 \: Q& \6 ?- ?完整版请查看:附件( B! S  Y1 E1 z& X( g4 J
: S5 t: J, \# g2 n8 b

& `( ~4 _6 F8 X2 m

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 手机版