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

使用 STM32F2 和 STM32F4 DMA 控制器

[复制链接]
STMCU小助手 发布时间:2022-7-21 14:31
前言/ G' Y  e- g* {# U  k* c" N, n
本应用笔记对如何使用 STM32F2xx 和 STM32F4xx 系列直接存储器访问控制器 (DMA)进行了说明。STM32F2xx/F4xx DMA 控制器所具有的系统架构、多层总线矩阵和存储系统等,使其能够为应用提供很高的数据带宽,让用户可以开发出响应迅速的应用软件。* S7 n. k! D  b! ?
本应用笔记还提供了一些使用DMA的技巧,以便开发者能够充分利用STM32F2和STM32F4DMA 的特性来为不同的外设和子系统的 DMA 请求保证足够快的响应时间。
4 C1 n. U8 N+ |. ?9 W本文档中,使用 "STM32F2/F4 设备 " 代替 STM32F2xx 和 STM32F4xx,使用 “DMA” 代替DMA 控制器。' A6 u( O0 d+ g
本应用笔记适用于 1 中所列产品
; d; E! ~+ _! Q  ~8 R$ |8 Y6 X- ?, w+ z$ `- @( c6 [
GB7X63BU~~0_8O}2H)Z$$VA.png
: \& ], G6 ]+ r: p
( r5 J. u7 L3 o# F# u! @, O
1 DMA 控制器说明
$ s$ b) S' T5 o1 RDMA 是一种 AMBA 先进高性能总线 (AHB)模块,它具有三个 AHB 端口:1 个用于 DMA编程的从端口和 2 个允许 DMA 在从模块之间进行数据传输的主端口(外设和存储器端口)。
. z, @8 Q8 v4 GDMA 使得数据传输在后台进行,而无需 Cortex-Mx 处理器干预。在数据传输过程中,主处理器能够执行其他任务,仅当需要处理一个完整数据块时才会被中断。( L& N' j' M* y) m+ y% x0 W; w
可以在不显著影响系统性能的情况下进行大量数据的传输。DMA 主要用于实现不同外设模块的集中数据缓冲存储 (通常在 SRAM 中)。在分布式方案中,每个外设均需实现其各自的本地数据存储,该解决方案从硅片面积的使用和功耗方面来说是比较便宜的。& n+ d- v. ~6 e/ [1 x( c: Y
STM32F2/F4 DMA 控制器充分利用了 Cortex-Mx 哈佛结构和多层总线系统的优势,保证了DMA 传输和 CPU 中断响应的及时性。- P# ]6 E# V5 A
1.1 DMA 传输属性! `* @9 `! W' _
DMA 传输的属性如下:# J& C$ d7 V1 B: @
DMA 数据流 / 通道
' Z& Y+ h5 q2 b- V0 l数据流优先级
! N1 [: y% l5 O$ Y7 h. r" P& n源和目标地址
* }& v4 H! H9 ?" r传输模式
4 T( Q. e- X6 I' l, ]$ W4 t传输数据量大小 (仅当 DMA 为流量控制器时)
* F! h# X! ^1 M$ M+ J4 E6 g3 S: z源 / 目标地址递增或非增0 A# D; W- k6 Y# a
源和目标数据宽度
0 c3 P% V: N- M- s8 V' S传输类型! `2 X$ w1 W3 o" M* N, w
FIFO 模式" ?6 P# }: D+ y/ s+ ?1 d  h! J1 |
源 / 目标批量传输数据量大小
( X  r4 f) r7 P: Y. T1 e5 z& d双缓冲区模式
6 G5 d6 P" z+ [# E1 a$ @" P流控
8 d3 G6 X, a# e7 _8 C! m2 O+ V+ ASTM32F2/F4 器件集成了 2 个 DMA 控制器,每个 DMA 有两个端口,一个外设端口和一个存储器端口,它们可以同时工作。' ~) T$ o# m1 @3 {
1 显示了 DMA 框图。
8 |. g# l. t' F8 t4 F7 Z' U6 k! |8 f
/ D8 f, n. j' n, @' [

3 l' _4 G3 D. p @4$QWE{LMG7AY}09(1Z0)`H.png
# f7 _: b; g3 B2 Q3 D7 V
. C! o$ u% k; c

5 w6 P1 R; E1 u. u1.1.1 DMA 数据流 / 通道& a2 u" d* d) m; d* N" W) W  }1 a
STM32F2/F4 器件集成了 2 个 DMA 控制器,提供了共计多达 16 个数据流 (每个控制器 8个),每个数据流都可用来处理来自一个或多个外设的存储器访问请求。
( R9 I( q7 t. U: I& \5 \每个数据流共有多达 8 个可选通道(请求),5 r$ F- p/ A' t& b0 ^5 T; T
可由软件配置,允许多个外设启动 DMA 请求。) K; E$ B% h5 G4 r+ E
2 描述了某个特定数据流的通道选择。
$ ]: c. O0 K8 u. a4 E; c( e0 s6 q3 k' S
1 k0 w6 Z" E$ [) d# F3 ^6 l
LUH)1WGRXKG**ADHG3~T.png   b$ @4 q1 H  A( N" S  s

6 R5 B5 z5 r, a' C6 E9 `) P DHF%)80B}[QQ1{OPB$%MMR0.png
+ ]5 n8 X' w5 [* i" b* `; T' P7 |# a. n/ e
% v) D/ `! s+ d6 l
~K}O4[JC%AG_QHOUGZ[GCX3.png
; G0 C$ L# v9 G4 y
4 F# ^) N" w  }% A3 e4 `' I' Q9 [ $@TKAUJE4FSP@OE(@R{GDSI.png   g7 w: t. z. H( j; e3 H

( j! n% l* X- Y' h( ~2 iSTM32F2/F4 DMA 请求映射经过了精心设计,软件应用可以更加灵活地为关联的外设请求配置 DMA 传输通道,并且通过复用相应的 DMA 数据流和通道可覆盖大部分应用。
4 P" G* g% Z' N: u; P
' E2 B; P- \8 \" ?' [( q# Y2 |6 n
1.1.2 数据流优先级
. d. Q4 b+ d7 T, \7 V7 ~; b每个 DMA 端口都有一个仲裁器来处理 DMA 数据流之间的优先级。数据流优先级可由软件配置(共有 4 个软件级别)。如果两个或更多的 DMA 数据流具有同样的软件优先级别,则使用硬件优先级 (数据流 0 比数据流 1 优先级高,以此类推)。* a+ x- l3 f2 p$ J/ r
" J# r$ T1 Y9 C4 d( I
1.1.3 源和目标地址( d. ^8 |- c8 K9 |7 ]( e
DMA 传输由源地址和目标地址决定。源和目标 (地址)均应当在 AHB 或 APB 存储范围之内,并且与传输宽度保持一致。5 ^/ i- k/ M* d, s( m8 @
0 d: g3 B& \4 ~7 |* j% R7 Z! f
1.1.4 传输模式
" b: D3 N2 T% s, F0 O, i4 ^6 XDMA 能够实现 3 种不同的传输模式:
) O# S( L' |" K7 t% M, u外设到存储器,( p6 _3 ~) S) ]& n5 ~. N7 V1 b
存储器到外设,# f( H1 }; w1 S" L) D, W9 I2 Q$ x
存储器到存储器 (仅 DMA2 能够实现该传输,在这种模式下,禁用循环和直接模式。)' w4 H- U1 l, u) ]" W3 S4 N

. M% z  E9 T5 M% o  B1.1.5 ; C4 S" q( |# N# p4 x; N, }4 ^
传输数据量大小
) K$ {2 o1 A0 u" E3 R# v; `仅当 DMA 为流量控制器时,才必须定义其传输数据量大小。实际上,传输数据量值决定了从数据源到目标传输的数据总量。# t5 e) k7 {2 T; u" E
传输数据量大小由 DMA_SxNDTR 寄存器值和外设端的数据传输宽度决定。随着已接收的请求 (批量或单个的),传输数据总量减少,减少量为已传输数据量。* X/ J3 L% ?8 H$ K
, j) o; K1 f( p/ D& [; F" i( F) J
4 Q  v$ g/ e& s1 Z

; y- m/ P. @0 X( G- @" m完整版请查看:附件5 N; z8 h5 c3 ^; X# A) `

' L; G* y. U9 C6 S$ u" H5 p5 P) i# X& p( F- u( [* {9 K) r

DM00046011_ZHV1.pdf

下载

1.47 MB, 下载次数: 1

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

举报

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