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

使用 STM32F2 和 STM32F4 DMA 控制器

[复制链接]
STMCU小助手 发布时间:2022-7-21 14:31
前言% ^/ H" B6 P: G
本应用笔记对如何使用 STM32F2xx 和 STM32F4xx 系列直接存储器访问控制器 (DMA)进行了说明。STM32F2xx/F4xx DMA 控制器所具有的系统架构、多层总线矩阵和存储系统等,使其能够为应用提供很高的数据带宽,让用户可以开发出响应迅速的应用软件。1 q" l( M3 Y9 @4 Z+ N$ {
本应用笔记还提供了一些使用DMA的技巧,以便开发者能够充分利用STM32F2和STM32F4DMA 的特性来为不同的外设和子系统的 DMA 请求保证足够快的响应时间。: m+ z- \( c4 W' g' F) q* f
本文档中,使用 "STM32F2/F4 设备 " 代替 STM32F2xx 和 STM32F4xx,使用 “DMA” 代替DMA 控制器。
- s7 _0 N4 @5 W. Y( n0 p2 p! ]本应用笔记适用于 1 中所列产品
  t: f! N2 L/ e& A% F% n5 \. T* o6 X7 X8 z" u
GB7X63BU~~0_8O}2H)Z$$VA.png : \' \( X$ H! @5 a1 b0 [

% }, q& x5 o) w$ U4 S" W+ N1 DMA 控制器说明
* Z) _6 _- T( q5 O1 t- |: a8 pDMA 是一种 AMBA 先进高性能总线 (AHB)模块,它具有三个 AHB 端口:1 个用于 DMA编程的从端口和 2 个允许 DMA 在从模块之间进行数据传输的主端口(外设和存储器端口)。5 y, t# ?9 D8 c* I2 t1 @
DMA 使得数据传输在后台进行,而无需 Cortex-Mx 处理器干预。在数据传输过程中,主处理器能够执行其他任务,仅当需要处理一个完整数据块时才会被中断。  ?2 W6 @3 Q: O5 w/ L" z
可以在不显著影响系统性能的情况下进行大量数据的传输。DMA 主要用于实现不同外设模块的集中数据缓冲存储 (通常在 SRAM 中)。在分布式方案中,每个外设均需实现其各自的本地数据存储,该解决方案从硅片面积的使用和功耗方面来说是比较便宜的。% B/ U$ R0 I6 k% U$ K
STM32F2/F4 DMA 控制器充分利用了 Cortex-Mx 哈佛结构和多层总线系统的优势,保证了DMA 传输和 CPU 中断响应的及时性。* Z* R) p. [  V; u& ?4 \
1.1 DMA 传输属性# }: r4 B* G9 A* B% ~. S% N" h& ^
DMA 传输的属性如下:% R4 X8 [0 F+ m8 `  h1 ~
DMA 数据流 / 通道2 Z/ p- }5 f/ X, z5 g4 C
数据流优先级
6 e. v8 T* w. _" _6 R0 K, \0 a4 B源和目标地址4 i$ F! ?  {5 h% H; n; G
传输模式; i5 Y1 R1 I5 x6 s6 i
传输数据量大小 (仅当 DMA 为流量控制器时)6 h3 A9 R. V# ^  a/ d6 ?/ e5 y
源 / 目标地址递增或非增
! B, ?9 o' M1 b" u7 |, G: Q1 m: }源和目标数据宽度; [  @) ~. C% v* C6 p& \& l8 o
传输类型& B5 |, u7 Q8 e4 f
FIFO 模式
% e3 h3 B* B% ~) H源 / 目标批量传输数据量大小4 m) S, K  \' W
双缓冲区模式
% W9 W2 |) K) H' K流控
9 E, j! m! f. M# G$ u) t0 [STM32F2/F4 器件集成了 2 个 DMA 控制器,每个 DMA 有两个端口,一个外设端口和一个存储器端口,它们可以同时工作。
6 d# {' v5 i, E" ~* q 1 显示了 DMA 框图。' S( {" {/ A7 s: Z) s9 H

" ~" n9 I9 T- a- v& R% M

$ B' U/ r2 h$ L5 K6 H @4$QWE{LMG7AY}09(1Z0)`H.png
; f* @2 t+ A" b; I6 L. |
2 M/ X7 ?! C- S. M% i& a
8 f- J5 l0 b: s
1.1.1 DMA 数据流 / 通道
+ u) o; X& Q& h, N$ E/ ASTM32F2/F4 器件集成了 2 个 DMA 控制器,提供了共计多达 16 个数据流 (每个控制器 8个),每个数据流都可用来处理来自一个或多个外设的存储器访问请求。! P  X* w  H7 [" P  }0 j
每个数据流共有多达 8 个可选通道(请求),
: `* E. U) r$ l3 l7 G1 O可由软件配置,允许多个外设启动 DMA 请求。
' `  x- X+ T( W8 W6 _4 P9 N& [ 2 描述了某个特定数据流的通道选择。; \" t# X0 v% d# p" R* k# d) e

' ?9 Z+ Q6 U& I9 K! a: @
8 Q. f% F4 S  P8 V. H- W% l( A! Y
LUH)1WGRXKG**ADHG3~T.png
' d' f/ |7 c1 M4 k" E
; ^5 n, W5 F. \' e( f" H DHF%)80B}[QQ1{OPB$%MMR0.png : P" K$ y9 }4 _% ?
# a7 h# n# a/ N7 z5 Y8 E, I; X- p
+ }# i) y1 ?/ J  B$ G1 U
~K}O4[JC%AG_QHOUGZ[GCX3.png ( n% F( [& z2 \: H6 U  r
* w# G7 D  a6 b5 R7 P: h' A
$@TKAUJE4FSP@OE(@R{GDSI.png : z5 u0 J: c) T/ V
. r  e8 k/ j5 s2 Y
STM32F2/F4 DMA 请求映射经过了精心设计,软件应用可以更加灵活地为关联的外设请求配置 DMA 传输通道,并且通过复用相应的 DMA 数据流和通道可覆盖大部分应用。, I" x$ c1 Q( A
' G1 T) P6 Y2 J8 g6 W' X" X7 k
1.1.2 数据流优先级! A6 x* A' |1 _* R
每个 DMA 端口都有一个仲裁器来处理 DMA 数据流之间的优先级。数据流优先级可由软件配置(共有 4 个软件级别)。如果两个或更多的 DMA 数据流具有同样的软件优先级别,则使用硬件优先级 (数据流 0 比数据流 1 优先级高,以此类推)。
. t" g( s4 t3 ]7 _; L" ^* ~# t! q$ N! O4 J
1.1.3 源和目标地址
2 j0 J7 ]3 c& t! s  lDMA 传输由源地址和目标地址决定。源和目标 (地址)均应当在 AHB 或 APB 存储范围之内,并且与传输宽度保持一致。
& j) @5 S, o% w4 k6 J9 E" R8 _" G6 ]% Z7 @* i" N
1.1.4 传输模式, @+ C# @! ~( ^# n7 H
DMA 能够实现 3 种不同的传输模式:
: V) g/ b) T0 w. l; h4 g/ j% v外设到存储器,
  B7 U! A( V( A2 n( j# g  s存储器到外设,1 `, Q7 h6 e4 f2 w
存储器到存储器 (仅 DMA2 能够实现该传输,在这种模式下,禁用循环和直接模式。)- l  e% c- i8 a; f: @

8 Y' N  s  K! x1 Y! l2 N* X1.1.5
" L$ X* F. Z0 ?- Y3 P传输数据量大小
; F' t/ u( o4 P0 ^9 D5 L# y仅当 DMA 为流量控制器时,才必须定义其传输数据量大小。实际上,传输数据量值决定了从数据源到目标传输的数据总量。5 K. e6 ~7 v* S' z, ^; t
传输数据量大小由 DMA_SxNDTR 寄存器值和外设端的数据传输宽度决定。随着已接收的请求 (批量或单个的),传输数据总量减少,减少量为已传输数据量。
2 T3 p" u; r" q  z' c  j  ]! W
% ?0 T* P) J% `( \% U3 t( n" T) D/ l% j( N

: d9 {/ \6 a) g5 X, E完整版请查看:附件
  v0 H9 [+ ~6 [3 @3 p% F) k
! Z6 n6 G- S3 b. ]6 }# J
. q& n, E9 n$ l

DM00046011_ZHV1.pdf

下载

1.47 MB, 下载次数: 2

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

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版