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

使用 STM32F2 和 STM32F4 DMA 控制器

[复制链接]
STMCU小助手 发布时间:2022-7-21 14:31
前言
; O8 x* r3 j$ ?本应用笔记对如何使用 STM32F2xx 和 STM32F4xx 系列直接存储器访问控制器 (DMA)进行了说明。STM32F2xx/F4xx DMA 控制器所具有的系统架构、多层总线矩阵和存储系统等,使其能够为应用提供很高的数据带宽,让用户可以开发出响应迅速的应用软件。) _5 C4 f/ c0 v5 @
本应用笔记还提供了一些使用DMA的技巧,以便开发者能够充分利用STM32F2和STM32F4DMA 的特性来为不同的外设和子系统的 DMA 请求保证足够快的响应时间。+ f9 ^) @7 h' x: W
本文档中,使用 "STM32F2/F4 设备 " 代替 STM32F2xx 和 STM32F4xx,使用 “DMA” 代替DMA 控制器。) e4 f- G% S6 B& y6 V
本应用笔记适用于 1 中所列产品
2 L2 l2 I& T+ R( w8 R9 m* b' C5 ^9 v1 b" c
GB7X63BU~~0_8O}2H)Z$$VA.png
8 p/ O$ W6 L, |" z; l' [
' m/ q. d9 L" v5 [) w7 u
1 DMA 控制器说明
: y* W5 D7 c3 _' jDMA 是一种 AMBA 先进高性能总线 (AHB)模块,它具有三个 AHB 端口:1 个用于 DMA编程的从端口和 2 个允许 DMA 在从模块之间进行数据传输的主端口(外设和存储器端口)。- H5 x% Y5 C  ^; S
DMA 使得数据传输在后台进行,而无需 Cortex-Mx 处理器干预。在数据传输过程中,主处理器能够执行其他任务,仅当需要处理一个完整数据块时才会被中断。  o% ]5 [+ n$ [7 i* H
可以在不显著影响系统性能的情况下进行大量数据的传输。DMA 主要用于实现不同外设模块的集中数据缓冲存储 (通常在 SRAM 中)。在分布式方案中,每个外设均需实现其各自的本地数据存储,该解决方案从硅片面积的使用和功耗方面来说是比较便宜的。& L. d% ]1 l1 l7 G
STM32F2/F4 DMA 控制器充分利用了 Cortex-Mx 哈佛结构和多层总线系统的优势,保证了DMA 传输和 CPU 中断响应的及时性。" z. {& l) ^% k4 g9 M
1.1 DMA 传输属性, o& M0 m. a  U* N1 c
DMA 传输的属性如下:, {% i2 s8 D" W4 t8 D2 b
DMA 数据流 / 通道
. q6 ]6 |8 q0 w数据流优先级
/ ^& I, a1 M: Q' |" x+ i源和目标地址  F1 R! c0 y% {' e
传输模式
7 C. c; Z1 ~9 _6 |: j传输数据量大小 (仅当 DMA 为流量控制器时)
. {7 J" a: F% F2 B' Z源 / 目标地址递增或非增
, L# C3 o. K7 o7 d源和目标数据宽度
- @1 \" [( H# A& H  Q. e* u传输类型: a$ ]  c8 V$ m; j3 s; E( ^
FIFO 模式2 H0 x, q5 ?: I% R" J- T+ N: G& r
源 / 目标批量传输数据量大小7 R3 p6 \9 U# n3 q4 r8 W
双缓冲区模式
; e" @1 a9 \7 n. S! C+ L. ^: x流控' i3 Z1 z& z0 @' Y
STM32F2/F4 器件集成了 2 个 DMA 控制器,每个 DMA 有两个端口,一个外设端口和一个存储器端口,它们可以同时工作。) Z, W6 l: \% h4 H5 T8 c
1 显示了 DMA 框图。. i. ^9 q0 z( o% |! Z

5 S2 Q( y, Q- ~  O
* W- i6 y! ~& a( ~' G
@4$QWE{LMG7AY}09(1Z0)`H.png
" b- J- a3 X! H; P, @7 `4 ~) k; b. h
( f, e7 {5 D3 o3 C% t

  ~' a+ p% m2 N- Y6 O* |+ |4 w1.1.1 DMA 数据流 / 通道: d8 z9 v$ ~" W% _
STM32F2/F4 器件集成了 2 个 DMA 控制器,提供了共计多达 16 个数据流 (每个控制器 8个),每个数据流都可用来处理来自一个或多个外设的存储器访问请求。
) \" X  R1 c+ Z每个数据流共有多达 8 个可选通道(请求),
$ `  m9 K# F6 e4 r5 S可由软件配置,允许多个外设启动 DMA 请求。
8 h& e) f, Q, u# S# w 2 描述了某个特定数据流的通道选择。# ^) @  k$ C) k0 d) }8 A+ ~

7 ~, K$ D* {4 K3 b
; o! @3 E/ z# O# R( M0 B% G
LUH)1WGRXKG**ADHG3~T.png 8 G1 V$ d- Z. U, E; q8 A+ e# a
( X1 _" |8 V6 f7 A3 `7 ]
DHF%)80B}[QQ1{OPB$%MMR0.png ) [1 b' n9 u/ U: H* l0 l5 J: C

4 ^3 o" f6 u$ J' ], l& b  N
& X/ V! {+ {! j& W  j ~K}O4[JC%AG_QHOUGZ[GCX3.png
; D/ @+ V+ T7 _  D% h2 P: e3 N: R
$@TKAUJE4FSP@OE(@R{GDSI.png 2 M9 [" G: _# t% H8 @2 G9 t

& c6 U6 F7 G9 v  @- _, H3 ESTM32F2/F4 DMA 请求映射经过了精心设计,软件应用可以更加灵活地为关联的外设请求配置 DMA 传输通道,并且通过复用相应的 DMA 数据流和通道可覆盖大部分应用。
% N2 C7 L  \8 ~! r3 a9 s* G5 x; A( w' E& O- c3 F' ^, e# d
1.1.2 数据流优先级( U: a$ J0 Y9 a$ y( u) r
每个 DMA 端口都有一个仲裁器来处理 DMA 数据流之间的优先级。数据流优先级可由软件配置(共有 4 个软件级别)。如果两个或更多的 DMA 数据流具有同样的软件优先级别,则使用硬件优先级 (数据流 0 比数据流 1 优先级高,以此类推)。
: A' @$ K# I5 h; C: o$ @* L2 d2 w+ t1 W* L& ]( \
1.1.3 源和目标地址7 M2 H/ Q, g/ T
DMA 传输由源地址和目标地址决定。源和目标 (地址)均应当在 AHB 或 APB 存储范围之内,并且与传输宽度保持一致。
; ^6 z" f% O, r6 V. q5 \) ^
3 S" q: l/ l0 T% z& ?( N5 S$ [& `8 b
1.1.4 传输模式$ J; M+ [+ H' b8 X3 p: o
DMA 能够实现 3 种不同的传输模式:
# V2 H, ~3 B$ q$ E$ B外设到存储器,
6 t! S# L3 G7 D' U% @存储器到外设," o" E+ D9 J; ~. N( j+ r
存储器到存储器 (仅 DMA2 能够实现该传输,在这种模式下,禁用循环和直接模式。)
+ T5 ^: A" d6 l2 V( e6 ^  l4 V1 k& z  t
5 B6 y' P$ h1 W5 q" x1.1.5 ! y  ~* }2 y1 J: L
传输数据量大小
/ _% h% w0 h6 D- ^仅当 DMA 为流量控制器时,才必须定义其传输数据量大小。实际上,传输数据量值决定了从数据源到目标传输的数据总量。& c3 z1 I; \2 A7 x$ m' V1 i# d, b* s
传输数据量大小由 DMA_SxNDTR 寄存器值和外设端的数据传输宽度决定。随着已接收的请求 (批量或单个的),传输数据总量减少,减少量为已传输数据量。% G5 g$ N2 N/ T1 P3 o- v  H8 s

/ N" ?* ^2 g, t  }  i% C
, s4 E1 u3 g# ?2 `. {# s- m6 ?

! l7 Q! d' U! E6 ]. f完整版请查看:附件' b/ b6 J! k6 g* t9 V( i
9 A8 R  g5 s! H& O/ x: k# s8 ^& C
2 y1 v; p! z. d! P& B

DM00046011_ZHV1.pdf

下载

1.47 MB, 下载次数: 2

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

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版