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

基于STM32H7使SDMMC1分散加载

[复制链接]
STMCU小助手 发布时间:2023-3-11 22:23
先来一张中文参考手册中的系统架构图,可以看到,STM32H7系列包含两个SDMMC控制器:SDMMC1和SDMMC2。
' M) m  a" L( ~7 N1 D8 ?8 H4 b  r2 k9 C" }0 E* t- x; L
2020042810074782.png
! C7 R8 c& b3 U6 K$ W/ Q

& c9 n. k1 i4 d: u# H& v在芯片手册中的架构图能够更直观地看出来:
, x1 i! R3 e4 W" V$ I8 e; o: S( s( p/ l: _9 Q
20200428103709907.png
+ N9 o1 q1 p4 O5 Y7 _$ d$ v1 e
0 A4 `3 W" g- i6 _% d: _" M9 p  ^SDMMC内部集成一个IDMA,H7系列有很多总线主设备,包括DMA1、DMA2、BDMA、MDMA、DMA2D,还包括IDMA和以太网DMA这种专用DMA。% G: y3 _# i0 C8 o+ B

! P; r  R' l8 @/ b
20200428101952116.png 6 T7 |2 |0 ~4 s4 c8 K/ v% @4 s+ {

6 v3 b/ N3 T" j) C' h4 x- y查看系统架构图和关于总线主设备的描述:
2 C. k# w: L; E% sSDMMC1和SDMMC2相比,和SRAM1、SRAM2都没有构成总线矩阵,只能访问AXI SRAM区域的内存。/ I+ g5 ^8 P3 H9 i4 A
! k1 u6 `$ q" O/ p1 u; ?
20200428102256498.png ( K6 k* K8 g) V+ Z: Q' m4 t' g5 {) E
202004281013193.png
# p$ d' x! w! Z0 v8 L3 q& S# t3 _: l, _: ?$ }9 g
, ~2 f1 X& w7 A2 d
所以我们的使用IDMA进行SD卡的访问时,buffer必须放在AXI SRAM上面。1 B$ o8 F3 Z; J1 B4 M
4 s3 D+ e6 A# H/ B  O
观察SRAM的分配,可以知道AXI SRAM分布在从0x24000000开始的512K区域上:
3 {2 I/ d2 p, _3 [: T8 ~
8 C5 I7 p+ Y1 J4 n. A) d3 k& j
20200428103349402.png
  E) I( n/ c& b' z/ B* i1 ?, R; t; `6 J$ |. d
202004281043205.png . P- t2 H% u; K5 Q; R* k) b4 [7 ?

" ]$ a( k; o2 |- o! ]! |  d- e( A3 T那么我们第一种情况,在编译器上只描述一部分内存DTCM:
  N+ n# K" N! [  F
$ s: Y# O4 v. H3 H+ a, t" O- j
20200428104636191.png 0 k% e) I9 x9 w( D; q, f
5 D; ^+ y3 i- Z" N; J
在进行变量定义的时候强制指定地址:
! U- t  o: ]3 A
  1. __attribute__((at(0x24000000))) uint8_t Buffer_Block_Tx[MULTI_BUFFER_SIZE/4];! d7 M+ \# U* i! P9 G9 s# m& q
  2. __attribute__((at(0x24040000))) uint8_t Buffer_Block_Rx[MULTI_BUFFER_SIZE/4];
    . v3 n' o7 C; d; p# G- \
复制代码

) w+ Q/ A& o( ^' s! x. s& w4 w* a可以看到指定的两个数组已经存在了AXI内存上,其他的都是DTCM内存上:8 C$ N8 \) U7 f2 }) K, i

$ u# Q0 Q! Z+ D: a! d/ [
20200428104916712.png * t, B' Y- y: \( ^& w! i* |9 x
4 ^) E) [) }2 j: V
如果我们的工程配置上直接分配好了内存区域,这里使能了DTCM和AXI-SRAM内存:! F9 K, v/ o% L: B( ~1 ~( ~

! P- f: G0 U7 B/ ?, D1 P5 H0 |
20200428102455716.png
0 m% j! F6 a# a7 d9 O

* Y% x# K! A" ?2 G; `2 n7 @这里我们并没有强制指定地址:, X3 X" z7 Q5 x* Z& ?( f) m
  1. uint8_t Buffer_Block_Tx[MULTI_BUFFER_SIZE/4];* P8 J  F* C5 K9 t6 ?
  2. uint8_t Buffer_Block_Rx[MULTI_BUFFER_SIZE/4];5 n6 I" {) w. [3 O$ l
复制代码
7 {8 w) j7 u0 K
但是因为SRAM2的size要大一些,所以优先分配到SRAM2:
! m7 Y+ }. ^+ r5 i- H0 i
' F4 {# y3 Z5 l. m
20200428105136958.png + x2 h5 V$ L: r$ y- n/ A4 p1 D

8 W6 c4 d& D0 B; n# J所以也是被分配在了AXI内存区域上。! k8 D( ]8 O& ?3 L. s
————————————————
% \; V/ n) W! b6 d# o版权声明:小盼你最萌哒
- c4 w3 X( G' B7 t: ?/ n
  ?9 @: p! O4 {+ O" ~+ a# h0 y
6 n  L) x. O; T2 n7 {- u$ @
收藏 评论0 发布时间:2023-3-11 22:23

举报

0个回答

所属标签

相似分享

官网相关资源

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