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

【经验分享】STM32H7整体把控

[复制链接]
STMCU小助手 发布时间:2021-12-18 17:43
3.1   初学者重要提示" m* C' r: u- T$ d7 E# g# o6 m( ?
学习一款新的芯片,优先掌握系统框架是比较重要的,建议逐渐养成这种学习习惯,然后各个击破即可。
2 a! a6 z- a( e, A5 z* O* \: S本章节提供了多张STM32H7的框图,这些框图都非常具有代表性。很多时候记忆知识点比较费脑子,记录这些框图是一种非常好的方式。
* Q& p8 W7 x, y+ ?; `( f) e( }8 a. c对于本章节提供的部分知识点,无法理解透彻,暂时没有关系。随着后面的深入学习,基本都可以掌握。
1 Q, G( x2 l9 a1 p* j$ _0 d- j重要的MPU和Cache知识分别放在了第23章和第24章。  }/ |" G- q+ N4 M* T' s2 P
3.2   STM32H7硬件框图
5 t# f' a- z' G& o5 |0 G6 l4 X+ `
学习一款新的芯片,需要优先了解一下它的整体功能设计。需要的资料主要是来自官网和数据手册,比如我们V7开发板使用的STM32H743XIH6,直接在官方地址:链接(这是超链接)就可以看到对此芯片所做的介绍,页面中有一个如下的框图,对于了解STM32H7整体设计非常方便。/ ~: p- l+ m0 ?) v1 u

8 }3 q1 H: K  t
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
- t/ r# G" U$ m; _2 }
# W4 X5 f, m  p) s/ p0 E6 r/ J8 ]
再稍微详细点,就需要大家读页面上的”Key Features”,就是下图所示的内容:. l* S" R3 R8 V7 m) Y1 M5 E
, S& ~& g9 p5 u' g
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
! j$ i5 y" C9 N3 K
4 J- O2 H. d0 x* i
或者直接看数据手册开头的章节即可,也进行了介绍,内容基本都是差不多的,如下图所示(部分截图):: C- |' p/ k+ W- p8 u
7 ^0 I2 b% J$ P: G5 O1 W+ N" ]
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
" f7 x. M9 v: K- O8 ~( X

! A4 `% G7 k  G通过框图和Key Features,大家可以方便地了解STM32H7的FLASH、RAM大小以及各种自带外设的信息。6 C( h; Z# D6 Z# k1 @* g$ j4 w
7 C( w- M: n. f( H! ]8 w
3.3   STM32H7各个型号的区别
2 e4 P7 v1 B" ^+ n涉及到芯片选型的时候,需要大家了解各个型号的区别。对此ST有一个专门的文件STM32H7x3 MCUs High-performance line,在链接(这是一个超链接)里面可以找到。此文件里面有简单的对比,只是内容比较简单,仅两页,不过也言简意赅。最主要的是下面的这个截图:
7 w8 r) F( @/ d/ g
% _) {1 J4 ^4 a
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

+ P. \  o* s8 F) c+ X2 Z/ x# R% v9 H! z4 i" T+ b" H
通过这个截图可以方便地了解不同型号的引脚数、封装、FLASH大小、RAM大小以及是否带HW CRYPTO硬件加密的区别。3 T; t$ |' q7 b, c6 `1 E( ?+ T
3 S1 R5 C( I0 a
需要了解更详细的对比信息,可以看数据手册。任意下载一个型号的数据手册,在数据手册的的Table 2里面有详细的对比,如下图所示(部分截图):
% l8 g, X/ p; e# ]% ]
2 ?) Z5 H4 Z3 S) H. q* H( T
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

6 Y$ A2 e1 D1 I/ B  `: L1 U  U4 C+ i. H# d+ c3 B! i
使用ST提供的软件STMCUFinder或者STM32CubeMX也可以做对比,只是没有上面的表格这么方便,可以一目了然。6 ]+ y( _! g9 b/ M* j) Q( c

+ k* S- O& p( C1 Y: w) x3.4   STM32H7总线框图和时钟4 S! _4 u+ n; Z1 ]- Y
STM32H7的数据手册里面提供了一张非常棒的框图,大家可以方便地查看每个总线的时钟速度和这个总线所挂的外设。这个在大家配置外设时钟分频的时候还是非常有用的,因为外设的时钟分频就是建立在所挂的总线速度(大家直接在数据手册里面检索Figure 1就可以找到)。
7 F. U( o% ]5 s6 b  A  j: y! \. p% y" {
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
4 B* l& Y% O1 B+ ]
0 |1 l- l9 P0 S3 ^+ j
比如我们想得到不同定时器的主频,通过上面的框图,可以方便地获得如下信息:
0 m+ y/ b& q; K. I. R  J( v9 W3 ]  c& h7 V
SYSCLK(Hz)                     = 400000000 (CPU Clock)
8 [  ~3 ?1 W0 R' @5 w  k& @! R+ w, y
HCLK(Hz)                       = 200000000 (AXI and AHBs Clock)7 }- I" O/ V0 h7 s9 f
) F  D# f( @4 Z+ j0 Y
AHB Prescaler                  = 2
. x4 O' c/ E. l6 q" y7 z2 p9 F4 d* N% I' _, d% C
D1 APB3 Prescaler              = 2 (APB3 Clock  100MHz)
# G: j- d7 W+ F* w, E' v1 G
) z( o* x& n/ w, W: Y" ID2 APB1 Prescaler              = 2 (APB1 Clock  100MHz)# i! E# Q. ^/ y7 e$ e* X  Q
' F$ U8 |2 o" u
D2 APB2 Prescaler              = 2 (APB2 Clock  100MHz)
$ h0 }0 ]7 M9 V3 A( h
; X1 b) T' n: q5 w$ v6 l: [7 kD3 APB4 Prescaler              = 2 (APB4 Clock  100MHz)
. ^; v! v4 Z* t& ^, T$ P% C3 Z8 p$ |: ~" o: T% Q

: k8 a$ E8 \6 I7 k% K6 L5 C
6 l: |0 c- r. h; W* f* a因为APB1 prescaler != 1, 所以 APB1上的TIMxCLK = APB1 x 2 = 200MHz;: h6 F( [" H) x8 L6 \/ y. ^1 s4 @& A

/ @- {, z! M" k: Q0 z9 I/ l7 T: V4 `因为APB2 prescaler != 1, 所以 APB2上的TIMxCLK = APB2 x 2 = 200MHz;
5 X& G+ t# r0 `4 w
$ {" ^$ F7 _+ p: r* y- F' o8 D; o5 _- K  @APB4上面的TIMxCLK没有分频,所以就是100MHz;+ ~4 `0 [2 H9 T: {. R5 V0 p

; p8 p2 h: Y- f: G* j$ q
+ c9 \/ E6 S1 ^! ^" u5 }
* ]* B1 X( o' B* wAPB1 定时器有 TIM2, TIM3 ,TIM4, TIM5, TIM6, TIM7, TIM12, TIM13, TIM14,LPTIM1& _, {* g( B! b4 s% X2 K, P

, B* K( e6 ^2 Y+ j' h  e. KAPB2 定时器有 TIM1, TIM8 , TIM15, TIM16,TIM17% i7 \6 I& H/ X6 E! P+ m' u+ O
$ ^2 D6 Z4 x  O8 O2 Z: A, D
APB4 定时器有 LPTIM2,LPTIM3,LPTIM4,LPTIM51 G; ]6 B* ^: ^# `- J, g0 K% v
& S" C4 h+ `- e. q3 P' P+ s  ?
3.5   STM32H7的AXI线! _2 G* |% `* p! s3 F+ ]* _
A**线在STM32H7中有着举足轻重的作用。高并发性全靠这个总线了,先来看下A**线的框架:' f0 H" u1 x1 ~. x

. ^' N* V' C) ?0 E3.5.1      总线系统框架
8 I8 B+ w4 ]! A1 d) z7 ]下面这个截图比较有代表性,可以帮助大家理解STM32H7总线系统。9 I9 N6 }6 B0 L% b' Z9 M* z2 p1 ~& a

/ ]8 V8 C7 L9 k, `7 R& o
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
- P1 C" M$ C; B

8 p0 w/ l+ H! N; V这个图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。. ~$ w2 l8 C5 U" J1 R

2 r9 ^* u. B9 iD1 Domain3 q0 W) s8 R, m9 ^4 g" i$ i
( G9 v$ r( N4 h9 _$ K
D1域中的各个外设是挂在64位A**线组成6*7的矩阵上。
, `9 {* Z# ]. E) h* i* X3 F3 Q# p" X% Z5 a! E
6个从接口端ASIB1到ASIB60 ?" X8 }5 {$ |% ?5 b% z
外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。/ d( m, h. X4 U9 ]) K) e/ [2 J& S

/ U; [! W, a% ]3 r( ~' |+ o) Y7个主接口端AMIB1到AMIB7% n/ k, j! Y  [4 _
外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由A**线分支出来的,然后再由AHB3分支出APB3总线。
5 S+ I1 L" B5 c! I" C2 o+ \5 H6 F! G
D2 Domain
/ ]& }" ?* @( t2 Z$ L8 @6 u% L. n; F0 A* Q: N, ~
D2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。( ]/ L# F1 C' k
3 B( X# }+ s7 t" A, Z$ M
10个从接口
% M. j% R- P2 [3 j  Y外接的主控是D1-to-D2 AHB 总线,AHBP总线,DMA1,DMA2,Ethernet MAC,SDMMC2,USB HS1和USB HS2。
7 y+ G/ Y6 q+ x  A0 j4 a8 e# @9 J1 p4 b, ~6 N9 b
9个主接口! a# H8 B( f) \: q9 I
外接的从设备是SRAM1,SRMA2,SRAM3,AHB1,AHB2,APB2,APB3,D2-to-D1 AHB总线和D2-to-D3 AHB总线。& f/ U9 S% `/ J2 Y! M- |( ]
0 ]9 c5 x5 k; h9 G, j5 g
D3 Domain
5 t3 k3 b3 Z' D6 d1 B- I( ]& L& `
D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。
) ]) ~1 w) e) ^, U5 g4 i# s( l# m- ^; E% T1 I3 T* q. Z
3个从接口
6 h8 t( B, [/ M外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。& R$ l+ `. T! i

( t  M0 N+ G& g% I2个主接口
, F1 S/ ~3 K  n4 @% ], F# @外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线。
/ e1 w4 R0 _3 h" X% Z- i* R, c2 _  n9 O) l7 m( @( B
这三个域之间也是有互联的,可以是:! @, k: t4 n& U6 A

. ~  r8 V, A- v  Q) zD1域到D2域的D1-to-D2 AHB bus
& R. h: E3 R( V' B4 S允许D1域中的主接口外设访问D2域里面的从接口外设。比如D1域里面的DMA2D访问D2域里面的SRAM1。9 v$ D' k# g. P# \# }0 @) S+ j" d
# H. a9 h% N& s# f* P4 }
D2域到D1域的D2-to-D1 AHB bus4 X' {& [: e' Q4 |/ j" V+ ]
允许D2域中的主接口外设访问D1域里面的从接口外设。比如D2域里面的DMA2访问D1域里面的AXI SRAM。9 t: `+ V6 d+ J( u

- `4 f# t5 }. ]D1域到D3域的D1-to-D3 AHB bus
, X; F0 F2 a3 k允许D1域中的主接口外设访问D3域里面的从接口外设。比如D1域里面的DMA2D访问D3域里面的SRAM4。9 `; Y1 e$ Z2 M* k2 o* W. e) n

3 @0 J7 V. n( W3 vD2域到D3域的D2-to-D3 AHB bus。
% y( t( x0 C- Y1 C/ D8 {* K- {允许D1域中的主接口外设访问D2域里面的从接口外设。比如D2域里面的DMA2访问D3域里面的SRAM4。
1 l4 K5 K& C6 L2 n7 y
: \7 X9 b: E: o5 Y7 Z有了这些知识后,下面我们重点了解A**线矩阵。! `0 l# p0 L7 [) D

' a! @  |# ~, t- W- X& _& v  J# r3.5.2      AXI线特色
$ i9 C% ~, C$ EAXI支持高频率、高性能的系统设计:
" o# v4 x5 h& c) [" i1 T# n* b8 g! K
支持高带宽,低延迟设计。5 C! b; p7 m. a. P* ?  d
提供高频操作,无需复杂的总线桥。* u. c1 v3 Z1 \- [7 l/ ]  S
满足各种组件的接口需求。- @  u  ]$ f9 v- K
适用于具有高初始访问延迟的内存控制器。& c5 V3 d* w  A% I* n
为互连架构的实现提供了灵活性。
/ g1 D+ X3 n8 ^- K4 y与现有的AHB和APB接口向后兼容。
' R1 O+ ]4 |: o9 R7 ?( X/ {' s3 b+ f

) C( I5 ~7 n* ?3 `8 s! HAXI线的关键特性:7 P+ K. Z! D8 w5 q$ v
独立的地址、控制和数据线。
& C' S; q& Z$ R. C7 R8 p" ?支持非字节对齐方式传输。
) V5 k& _+ e2 B: n6 z# Z) U基于起始地址的突发传输。
& O/ r( N; ]1 A9 J2 m分开的读和写数据通道,且提供DMA传输。8 E: C0 U* g. z0 T/ h& \
支持发起多个地址。
% {8 m" y- r$ R& y/ O2 ^4 m* t支持无序传输。$ E/ m" x$ i  |4 s( _# h* a7 ?! b
允许添加寄存器,以提供时序收敛。) _5 H3 e9 X. F0 T! `$ Z

7 j% I6 E2 [+ A0 e2 Y9 K
1 o+ q& N7 c# N8 a0 c2 ]1 yAXI线
+ s8 d3 E2 B+ x/ Z7 r- n8 D) H
; a/ s; F& X3 T# B& T2 A3.5.3      AXI线简介8 _( j( P  H/ P8 T# q+ Z
通过下面的框图,我们再进一步的认识一下A**线。
' T7 W& I2 }% R; s- I
2 j4 U. T; `$ r+ s/ ~5 U- z: r/ m
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
1 b( t# j5 p: h6 U: X1 ]& P

, f" @* }1 G: b  `- b6 ~- G0 n通过上面的截图,我们可以看到,A**线有6个从接口ASIBs(AMBA slave interface blocks)和7个主控接口AMIBs(AMBA master interface blocks)。7 T$ m' K1 M. S3 P- F* p+ ^$ Z% u
$ z3 y( B# }9 j" e  O
针对从接口ASIBs,描述如下:& Q8 u  I, H" U

9 M& l& K9 {& F1 H0 M" i; p) g5 y
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

+ e0 i  h8 y  a. M0 x/ C
. D9 {  b/ c- B9 C, {2 i, j; Q重点注意最后一列,STM32H7参考手册里面原始的描述是R/W issuing,这里将其翻译为读/写发起能力。比如输入通道IN5连接的主控DMA2D,支持的读发起能力是2,写发起能力是1。读发起能力是2该如何理解呢?这里的含义是存在两路读信号同时进行(因为AXI接口有一个FIFO的功能,可供同时进行,更深入的认识有待研究),反映到DMA2D的实际应用中,就是DMA2D同时读取前景色和背景色的缓存区做Alpha融合之类的操作。写操作同理,DMA2D的写发起能力仅支持一路。
& n$ M- I" Z& X; a7 |. H) z: j6 v& K6 j! g5 z. e2 |
针对主控接口AMIBs,描述如下:
6 ]1 X4 k9 q" Z9 n4 e9 ?) r" n4 T
1 ^3 I7 U8 D# ?) G+ z
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
; O0 h8 e; m% Y1 l

* j% Q" `! H! ]5 Y; l跟上面表格的含义是一样的,同样重点注意最后一列,这里多了一个总接收能力(Total acceptance),也就是读发起能力和写发起能力同时执行的情况。2 F: j$ [* A& E. L2 }' T1 q

0 K& s+ I- a6 \5 c3.5.4      AXI线优先级编程% {1 d4 c2 P: E& T* E
由于存在多个ASIB从接口访问AMIB主控的问题,这就涉及到谁先谁后等问题。所以A**线矩阵就做了一个基于优先级的仲裁方案。每个ASIB接口支持读通道和写通道分别设置,优先级从0到15。数值越大,优先级越高,默认情况都是优先级0。如果有两个传输同时到达AMIB主控接口,那么优先级高的ASIB接口传输优先处理;如果优先级相同的话,根据LUR方案选择(least recently-used最近最少使用情况)。4 z, d& q, O) P1 L, I* l
; v* N. C- D9 `! n
大家在实际应用中,可以根据实际情况进行设置,一般情况下使用默认值即可。! D9 ^7 u9 `! q8 {+ R3 k3 ]  i

  F, q& W0 m) x& o0 x3.6   STM32H7的总线互联* k* v' `/ F+ k. s8 M8 P
STM32H7的总线矩阵四通八达,但不是任意Bus Master总线主控端和Bus Slave设备端都可以相互通信的:
3 l% Z3 ?" J4 m) r# ?( j) ^" E* q* F1 z
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
; A- ~; ?8 K/ i7 ]
5 O- q+ N/ C/ I% n9 d
黑色加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。
6 y- P4 w9 \  v7 F8 u4 z" O4 `$ h& Z2 }$ J% I
访问通路(每个小方块里面的字符)0 M. {5 {8 e, Z; V! s

( L8 _* w0 K  }3 W( I2 Y+ e7 ^  ^$ @" |0 ?    任何有数字的表示有访问通路。. b; v7 j( H, j: `: X& |
, @& Q1 `# y" K, b# f+ Q
    短横杠“-”表示不可访问。6 F( P, |5 a+ C- M$ D
% n+ I* {7 A% t7 i) g8 H
    有灰色阴影的表示有实用价值的访问通路。
2 i& [8 Q& D- Z' U- q6 d  {) C; y, N0 H5 x  g6 B/ E# Z0 c
表格中具体数值所代表的含义, C! X2 x( u( Q
) y2 y; ~0 w: {$ y, y$ H
    D=direct
" i6 s$ B& d- s5 P
' B* N  g& T5 m/ f" J% X6 t    1=via AXI bus matrix
. @4 U% I9 M6 j1 p
+ o" a/ q- O8 u* N0 k8 T    2=via AHB bus matrix in D2
! X% q, \- R+ q
0 O6 Z. ]( h2 S/ k6 w' C    3=via AHB bus matrix in D3
, \/ r5 h3 f) D) |
/ `  C! r/ \1 Z% l    4=via AHB/APB bridge in D1
# J3 f$ D9 n# H0 o& z: I
" C' B0 y( W' T    5=via AHB/APB bridge in D2& l5 n& P6 A6 A  f& b3 p
' C- x% H; i( ^% g* {* i
    6=via AHB/APB bridge in D3
0 a8 q4 z) @4 t4 ~
. i/ Z% s+ X6 X    7=via AHBS bus of Cortex-M7+ A7 J; }  {* {; l0 ]" c: L

1 T7 W* l9 V  A    多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。
' Q2 S' N' l0 V9 e  w7 M0 J! Q  Y$ Q# S  [' z7 _" b
总线访问类型& U  r6 {! W3 J4 f4 h  H, M$ Z" Z
) M) o4 Y( E# l
普通字体表示32位总线。
% k2 Q3 ]) j6 r+ ~0 a) w  n" j0 M- B4 g( X0 R8 h
斜体表示32位总线主机端/ 64位总线从机端。. [7 R. x1 {) I- u& M; s

. Z/ s8 Y# h; Z+ l5 \( G! j- H# S粗体表示64位总线。
* y, \. g# j- M9 f+ ?. F0 f+ s: O. M( X, ~9 K$ \9 y
当前要对这个图有个了解,后面章节讲解各个外设的时候要用到,比如DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。5 w- j  ~2 @& y: l* D: h

" `6 M$ x0 p, {% D6 m3.7   STM32H7的FLASH
! L! m$ n  A" Q  M1 u. X5 z首次学习STM32H7,要掌握以下几点认识即可:
, K& D( Z* I- h; j) [( X8 k3 b  d+ y$ Z2 l3 S6 L) h- o7 p" m
1、双BANK,每个BANK的带宽都是64bits,如下图所示:
2 W: k$ y  v5 w* m& ?4 N+ M" C( r
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
( O5 d1 b; z; P" w) W  p/ \9 L" m
( l1 Z5 S4 C5 I  I; Q1 w
2、H7中Flash的延迟和主频关系。
7 k+ Z; m; c* [, a/ `2 A4 P. k/ }/ r9 f, o4 N; K
H7中已经没有F1和F4系列中的ART Chrome加速,通过H7中的Cache加速即可。具体延迟数值和主频关系如下:
) D# P2 L2 ^# u7 {; ]9 B/ D5 `$ C0 U: W6 b! U. p4 \& r
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
5 v$ y, T9 U% f! `

  n' L- v' h; a2 N3 j  G对于上面的表格,大家可以看到,当延迟等待设置为0的时候,即无等待,单周期访问,速度可以做到70MHz。增加1个Flash周期后,访问速度可以做到140MHz。当增加到3个或4个Flash周期后,最高速度可以做到225MHz。/ e' r3 z  ^8 ?8 w2 K
& i7 |" D4 p% i* W& `
3、Flash编程操作(写)最好以256bits为单位进行,应用中也可以小于256bits,但是容易造成ECC校验出问题,所以不推荐。Flash读操作支持64bits,32bits,16bits和8bits。
' d6 S+ v0 h( Z/ q- Q0 @3 W$ D4 M4 U3 t' ~
4、Flash支持ECC校验,每256bits配10bit的ECC位,可以检测到1个bit并纠正或者检测2个bit。随着芯片的制造工艺水平越高,带电粒子能产生的位翻转就越多,此时的ECC是必须要有的,一般可以纠正1-2个bit。安全等级高的Flash类存储器和RAM类都是必须要带ECC的。
; _( z) o5 i  B3 F! I' ~
7 v& F( P$ G! x/ V  t% e! D9 [4 N5 @3 o! f+ A: u$ q
3.8   STM32H7的RAM
; b8 X. l3 c/ G5 `- B' n* K9 j(注,学习本小节,优先回顾本章节3.5.1小节的框图,另外H7的RAM区也是支持硬件ECC的)9 b1 P/ I, c/ f

5 \! m$ ^8 z+ B% n* GSTM32H7的RAM区分为好几个部分,下面分别进行说明:8 ^% m5 z6 C! A  s, R% m
, Y# L4 N, x0 o# }" [8 U( |* B8 Z
TCM区3 i0 }( Z9 K' \
7 Q8 K' j8 i; n# n  k/ t/ g% b
TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。7 S1 G6 z& w6 W' }  B# T' s% l4 @
6 X! E. M9 I' Q( o* P. p8 V& Y
速度:400MHz。
" [; z4 I0 y: v. }: g- v6 K
1 d0 c. ?! ]& A1 ^. e8 yDTCM地址:0x2000 0000,大小128KB。9 o. F+ }! n. i+ L- p" ?

" G9 T! h' y' K6 BITCM地址:0x0000 0000,大小64KB。* W" K, G" Y" X' C8 `
1 G* h0 a  f4 X+ N. G
AXI SRAM区* `4 i( U* P6 F
0 q+ q5 K  B6 b) M
位于D1域,数据带宽是64bit,挂在A**线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。
, _; ~7 ^7 H1 Z9 |! p
( [4 ?, @8 R9 d8 ~8 h$ d速度:200MHz。" f( n; o: W* c$ [4 f3 m* |* q
( S# |5 D  N0 c, f& M& i2 U: c- m, L
地址:0x2400 0000,大小512KB。
' m% \% W2 z( q: R  m' J; p3 r" z! O* F
用途:用途不限,可以用于用户应用数据存储或者LCD显存。
7 t$ |- n# r/ z+ ?4 |: t- [  ^1 q5 f- J
7 x9 _9 I/ e" i+ b SRAM1,SRAM2和SRAM3区
5 v9 ]6 i) [, j
5 k  r. @; E! \3 ^2 S位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。
  I/ v  a, t$ J, y/ p$ N& l- U% e3 T" e+ M( N6 O- E- _: e5 u1 ]
速度:200MHz。
$ S& ~+ S# P, y* B; r9 @6 t8 o+ x  i  U$ `* B7 @1 @7 |
SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。( k  z& Z/ E1 ?) }6 B$ A2 k
: L* q& \( h* Q  w
SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。6 O- I- T5 g* R) U' k# d' E- F

6 b) I+ J8 `2 }' g  tSRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。
" e* F1 |% j- D; A$ P2 Q4 b3 p: ?7 w+ `( b( T- d$ X
SRAM4区' w  E" ^& y2 m- Y& z

6 f7 h- d- P7 P- N位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。
( W4 |4 C8 N* B/ ?
" k+ G" b! s8 T+ K4 Q8 E! Z速度:200MHz。1 u( i+ S5 V5 M

$ h8 H# {% F# w" n7 M) o( p地址:0x3800 0000,大小64KB。/ {. ]; T* A( {, ^/ `8 Q; c

4 N! C3 k" A& X& J/ S7 d用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。
3 l6 \/ ]1 T2 F9 c* L7 h
7 C/ [% h6 R+ E$ |& O Backup SRAM区
4 y5 l7 {: \* a1 I4 X
1 r5 J* y4 x: \9 R4 z1 s% f% _  u: v备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。
! J* I$ x- B1 ~5 f! D  b* K- i/ t0 e) e" `
速度:200MHz。
$ K. E$ D5 n; F; e
. F3 J( ]: }5 [; J, J$ P- {2 W! L地址:0x3880 0000,大小4KB。! a$ ~* n. u6 x- S1 F1 A
4 i- k3 ^) o, g) ^2 d0 E$ L7 |
用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。
7 n0 G  O0 L! |; B1 t" ]- h
1 `4 L& ^7 f8 l" [) q' J3.9   总结4 y) o4 l. w7 u# B+ b+ b9 M0 r# m# M
本章节就为大家讲解这么多,让大家对STM32H7有个整体的认识,后面章节将逐个进行学习。- A. B, R6 K& Q8 A

* B+ O2 M& H8 ]0 Q1 s7 k, j5 y. \: N# Y$ A# d% G! H/ O
4 f' ]+ [$ X$ o, m/ q
收藏 评论0 发布时间:2021-12-18 17:43

举报

0个回答

所属标签

相似技术帖

官网相关资源

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