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

【经验分享】STM32H7整体把控

[复制链接]
STMCU小助手 发布时间:2021-12-18 17:43
3.1   初学者重要提示
. N" s9 }8 U) H( J( h学习一款新的芯片,优先掌握系统框架是比较重要的,建议逐渐养成这种学习习惯,然后各个击破即可。" T) H- m7 H! k8 K
本章节提供了多张STM32H7的框图,这些框图都非常具有代表性。很多时候记忆知识点比较费脑子,记录这些框图是一种非常好的方式。
$ M- E4 b2 Y" f4 x$ }对于本章节提供的部分知识点,无法理解透彻,暂时没有关系。随着后面的深入学习,基本都可以掌握。( i  C* v6 L" S0 k5 l5 C
重要的MPU和Cache知识分别放在了第23章和第24章。
; p6 }. ~' ~1 N7 b. Q9 h6 C/ l3.2   STM32H7硬件框图
" {" ~) u$ f; p; Z: o' [" P3 Q
学习一款新的芯片,需要优先了解一下它的整体功能设计。需要的资料主要是来自官网和数据手册,比如我们V7开发板使用的STM32H743XIH6,直接在官方地址:链接(这是超链接)就可以看到对此芯片所做的介绍,页面中有一个如下的框图,对于了解STM32H7整体设计非常方便。
/ ?# e( }- U2 y5 u# {
7 `& e9 e* h" D# ]
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

+ o( n; U7 t# x5 i- B+ A$ q' O4 n
再稍微详细点,就需要大家读页面上的”Key Features”,就是下图所示的内容:( F8 E* P: r/ I9 g9 K  x6 h. ]

5 ]5 V( b% {: F" @6 }2 i
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
/ w+ O+ v& i% Q6 B, N9 E$ u2 l
! H5 e' I0 e. a1 s" z# i
或者直接看数据手册开头的章节即可,也进行了介绍,内容基本都是差不多的,如下图所示(部分截图):7 b% F7 p. F* r7 a. c& l7 n/ l
  i% r( n  w2 _2 n
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
$ }; s) s: {1 c( ?% k7 ^- [" T" H" r

; \9 |; W& m6 ]: H- q5 d+ a通过框图和Key Features,大家可以方便地了解STM32H7的FLASH、RAM大小以及各种自带外设的信息。. ~  ?" ~' T9 m1 m. A6 C: i. }2 n
/ n, U3 V8 s+ q+ o9 @2 j
3.3   STM32H7各个型号的区别
9 _: L2 w0 L' M涉及到芯片选型的时候,需要大家了解各个型号的区别。对此ST有一个专门的文件STM32H7x3 MCUs High-performance line,在链接(这是一个超链接)里面可以找到。此文件里面有简单的对比,只是内容比较简单,仅两页,不过也言简意赅。最主要的是下面的这个截图:- v2 q. z% ]( p. D1 j  }

# G9 X" V6 E; y. v
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
/ N' ]) v1 _7 o' m; r
) ?; t; h- A' z' I& E/ b# ?3 t
通过这个截图可以方便地了解不同型号的引脚数、封装、FLASH大小、RAM大小以及是否带HW CRYPTO硬件加密的区别。
: r; I3 d( ]) i4 ~; k2 r9 y6 D4 F
8 m* G* |  P: J7 b3 ^. a需要了解更详细的对比信息,可以看数据手册。任意下载一个型号的数据手册,在数据手册的的Table 2里面有详细的对比,如下图所示(部分截图):% E; ~, Y' A! E3 ~6 A6 u) T" h
; H* ~, u- N8 e. C8 r( r
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
" c9 m( I7 y5 w5 O7 {" m

4 b8 |' ?9 l# Q$ X* p3 I3 ]) P使用ST提供的软件STMCUFinder或者STM32CubeMX也可以做对比,只是没有上面的表格这么方便,可以一目了然。
1 V/ O4 Z! V$ T8 z1 E3 l1 s9 w
% |& b+ X) D# F6 G$ J/ r  R3.4   STM32H7总线框图和时钟* v- h; U! `' |/ a1 y2 Q. `
STM32H7的数据手册里面提供了一张非常棒的框图,大家可以方便地查看每个总线的时钟速度和这个总线所挂的外设。这个在大家配置外设时钟分频的时候还是非常有用的,因为外设的时钟分频就是建立在所挂的总线速度(大家直接在数据手册里面检索Figure 1就可以找到)。+ ]2 o* E" I( w) Q4 d) h& b/ q; e
6 |' J9 [9 t! p! T; u3 _: U3 c
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

- ]* K' _' N2 W" w8 B6 R0 g: @& `, l9 U# j2 J8 T8 D
比如我们想得到不同定时器的主频,通过上面的框图,可以方便地获得如下信息:) f: g7 Q9 |, M: y2 n
# g; R2 m& t) x/ N
SYSCLK(Hz)                     = 400000000 (CPU Clock)( s1 N% s$ G( N+ U9 J2 E

" V% l6 j. h2 F. @" V7 P9 X7 WHCLK(Hz)                       = 200000000 (AXI and AHBs Clock)" U& Y0 D9 D2 [4 y) Z

  e0 w; \4 Q9 p( i8 yAHB Prescaler                  = 2
: i/ y! y4 Q" r: x4 d
3 v2 e% o  P  f' D$ o4 ~D1 APB3 Prescaler              = 2 (APB3 Clock  100MHz)
! Q9 Y  y& v: B" u7 ?, p! E; ]; @
- V; M% v& ^) GD2 APB1 Prescaler              = 2 (APB1 Clock  100MHz)# ]/ }5 r9 k5 W/ g* U$ m

2 \1 V/ Z& p$ J, lD2 APB2 Prescaler              = 2 (APB2 Clock  100MHz)
% V+ i% L. O6 C; x! Y) e! \
+ H9 u$ P3 n6 a) GD3 APB4 Prescaler              = 2 (APB4 Clock  100MHz)% y- i( b, e" J! z

9 b. N1 |* i( ~2 A3 v8 s: E
, g  y  C0 f! n
" R% U: u* ^9 n5 s7 v0 T因为APB1 prescaler != 1, 所以 APB1上的TIMxCLK = APB1 x 2 = 200MHz;
  A$ x5 K' F9 `* P+ f4 {$ M
( V2 U* O! |1 X! K8 c因为APB2 prescaler != 1, 所以 APB2上的TIMxCLK = APB2 x 2 = 200MHz;
: C. a- P" }) e7 V" Q- x% o& g
0 P$ g1 g. f& A' M; a. sAPB4上面的TIMxCLK没有分频,所以就是100MHz;
6 a0 F7 [( k7 @" \1 s. |2 f# n9 U! {
. ]+ p; P# Z+ I! P5 z! T2 y  {3 y

( O, p+ Y4 R* j( O6 ^- T/ g; tAPB1 定时器有 TIM2, TIM3 ,TIM4, TIM5, TIM6, TIM7, TIM12, TIM13, TIM14,LPTIM1
+ h5 Y& x- W( Y' _: Q; x
: S: L2 Z9 K3 [+ h: dAPB2 定时器有 TIM1, TIM8 , TIM15, TIM16,TIM17
+ T% b* j8 o( S- o; j! P- \2 J
APB4 定时器有 LPTIM2,LPTIM3,LPTIM4,LPTIM5* ]( b9 i9 K1 B. W! ]' L: l

6 G3 Q+ {, i0 |, n3.5   STM32H7的AXI线
& A! {! `; f) j1 R* H  nA**线在STM32H7中有着举足轻重的作用。高并发性全靠这个总线了,先来看下A**线的框架:
- g- K7 i! }1 h3 M* F9 |% L( H+ M! D  g4 T1 f# @  x
3.5.1      总线系统框架6 j1 N8 l% {/ }1 \# ^  ]2 \* [5 ?3 m
下面这个截图比较有代表性,可以帮助大家理解STM32H7总线系统。
  H9 n" J+ _" q; z! n( X% Y8 y: s$ k2 h6 R% B8 s5 q: ^
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
) t' ?7 z, K" D& ~0 T; d
/ l( F2 O) D* a: d' f
这个图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。
! [8 ]1 n( ]9 C8 d$ F& y$ |* V
! c2 e' v1 j6 S7 qD1 Domain
3 {* k  ^; ~4 x" [- `( A1 r* S4 p8 x# q9 d
D1域中的各个外设是挂在64位A**线组成6*7的矩阵上。& X3 Q, v- o- d. @
- ~8 S4 n/ ~; C, T: y- h
6个从接口端ASIB1到ASIB60 a& i6 A! P0 {
外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。
1 P  I: @2 a" N; k- q4 n! P7 q1 l& ]  L1 b7 i0 t
7个主接口端AMIB1到AMIB7' b0 y; O' P/ K# B- k/ q$ X: o
外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由A**线分支出来的,然后再由AHB3分支出APB3总线。6 G1 E5 B8 ^+ m' ]$ u: L* K; P
2 n- c1 E/ ~! @5 g! D
D2 Domain
$ p8 }9 j1 d5 A- ~: N
) o/ f! O, [8 \D2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。
0 y# H" ?3 E5 G; V( f8 f- A% {6 c& z6 y/ F' N; ~
10个从接口
4 W' Z8 G, P1 g. N- x7 N外接的主控是D1-to-D2 AHB 总线,AHBP总线,DMA1,DMA2,Ethernet MAC,SDMMC2,USB HS1和USB HS2。; n9 w+ C4 S% R) Y

* B2 H( W* L) `5 j% ?9个主接口
- V; v4 d# S2 x, E+ I外接的从设备是SRAM1,SRMA2,SRAM3,AHB1,AHB2,APB2,APB3,D2-to-D1 AHB总线和D2-to-D3 AHB总线。% B  t6 V0 S; o% K3 ?* ?
1 l! N$ U% U8 g, i
D3 Domain
- }% c1 ~5 r" Y' f. m* s- W- p$ c$ t& b! R/ D- X& P, g
D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。
/ t5 r' b2 O0 [  \) z: e; z) p9 T. B5 K; f7 b% Q7 \8 R5 r8 v
3个从接口
/ G- y; j8 \. W$ F) w. ]( n" n- A外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。
" Q6 B- l7 Q& f) a) B& Q( G+ {& z7 w4 Q5 e; O1 {
2个主接口0 n; M" D$ V/ H% y/ I" M8 Z
外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线。/ m  h1 z  `5 D0 G* N: e$ t* K
, {9 ^2 g' D' L" P4 h2 u
这三个域之间也是有互联的,可以是:( f+ J' l( V) Y. |! R
/ E1 I/ ^0 a0 z9 n
D1域到D2域的D1-to-D2 AHB bus% I8 O- ~. m. f5 g2 u! [' |9 u
允许D1域中的主接口外设访问D2域里面的从接口外设。比如D1域里面的DMA2D访问D2域里面的SRAM1。) I* C$ U0 L; Z) u2 @+ T  O
* H1 N$ c/ v0 L+ F$ t8 N; y5 O
D2域到D1域的D2-to-D1 AHB bus
3 ?& ?' H6 {+ V* q0 O9 J$ P3 ?" {允许D2域中的主接口外设访问D1域里面的从接口外设。比如D2域里面的DMA2访问D1域里面的AXI SRAM。
6 Y/ T& ?: w1 w  \9 c! w; U' |9 k
D1域到D3域的D1-to-D3 AHB bus1 ~' ^  t* U; B& j$ T; i
允许D1域中的主接口外设访问D3域里面的从接口外设。比如D1域里面的DMA2D访问D3域里面的SRAM4。9 L( B; G$ C: L4 q1 u: ?

( k7 {1 Z1 U2 r; D' m/ |2 SD2域到D3域的D2-to-D3 AHB bus。; a2 B8 \. f, ~  Y: ~: y/ O6 g
允许D1域中的主接口外设访问D2域里面的从接口外设。比如D2域里面的DMA2访问D3域里面的SRAM4。
1 O$ j  k' ^; E' L; p% k, E7 @; f8 u/ \0 U$ \6 Z- [, l
有了这些知识后,下面我们重点了解A**线矩阵。
0 J! Q  ~8 l3 X$ O7 o; q* [
* {, k! N( p6 _3.5.2      AXI线特色
6 i" H+ T. u  U/ v5 y% F3 GAXI支持高频率、高性能的系统设计:% W: G+ C9 z9 T* l, D
$ g. P! ~% j/ a
支持高带宽,低延迟设计。$ e' n0 Q6 z) k* p  j4 o
提供高频操作,无需复杂的总线桥。7 H+ B( p* _+ p0 u1 n! X
满足各种组件的接口需求。
/ H9 J, A5 G3 J! E9 H4 y5 U  a适用于具有高初始访问延迟的内存控制器。! c3 b( V9 H: |5 W; T! U& ?' D' U% e
为互连架构的实现提供了灵活性。, G( U' A: E( h' B6 S6 E
与现有的AHB和APB接口向后兼容。5 s0 Y* ]  e* z
; Q% {, q! h# B2 k) o6 b; R: L
$ M7 o$ x# `8 F1 l3 ^: O
AXI线的关键特性:
! G& F- c. H5 Z5 l8 `, C% M7 n独立的地址、控制和数据线。
( P, q3 s# Y/ u1 E- A' i# y  |支持非字节对齐方式传输。0 [& Z; V# v* x3 ?: K) A1 g
基于起始地址的突发传输。
6 z% |' w. p5 `8 r& v" ]分开的读和写数据通道,且提供DMA传输。# J2 x5 A* q) Y6 `; P
支持发起多个地址。* A5 a) _  ]% a9 n; r0 @- S
支持无序传输。
4 X! y8 o0 g# ~3 O0 p* s允许添加寄存器,以提供时序收敛。$ X; @9 S( O  ]' D6 }& s

: ^4 b3 x: m0 ]9 Q- e# Z3 X
3 T; F: H2 z( f' Z, tAXI线& i: R; d9 D. c. R) q, o6 t

( ?) A+ B  L9 v4 S- G. F3.5.3      AXI线简介
5 B1 {8 t# x: R1 o& d通过下面的框图,我们再进一步的认识一下A**线。* N) u2 Y, V, ^9 H; a

% D4 h  S: M3 K9 Z  u
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

  c6 z0 z7 d/ n
* z6 n# J8 R4 Q2 I5 m4 ^  w通过上面的截图,我们可以看到,A**线有6个从接口ASIBs(AMBA slave interface blocks)和7个主控接口AMIBs(AMBA master interface blocks)。0 z6 c# t6 H/ U: Q# f

# `" ~! M( O$ n$ X- _) u针对从接口ASIBs,描述如下:* a+ w4 {! O* p) x

0 L  I/ z5 K& g, V0 Z
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
. c' d! t# D8 d. d$ t  h
* M7 z. j. o" }
重点注意最后一列,STM32H7参考手册里面原始的描述是R/W issuing,这里将其翻译为读/写发起能力。比如输入通道IN5连接的主控DMA2D,支持的读发起能力是2,写发起能力是1。读发起能力是2该如何理解呢?这里的含义是存在两路读信号同时进行(因为AXI接口有一个FIFO的功能,可供同时进行,更深入的认识有待研究),反映到DMA2D的实际应用中,就是DMA2D同时读取前景色和背景色的缓存区做Alpha融合之类的操作。写操作同理,DMA2D的写发起能力仅支持一路。
! E; O' \/ V! ~! X  I+ b! A8 T2 C* B: ]6 S; j$ }) z& @% ?
针对主控接口AMIBs,描述如下:
7 a0 D" z" ?! \  H
) X" K5 j3 p' e! q
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

2 H' q7 o% N8 q% C3 _9 o& L2 A
4 g% ^9 [9 e' ]% |0 w, ^# p' O跟上面表格的含义是一样的,同样重点注意最后一列,这里多了一个总接收能力(Total acceptance),也就是读发起能力和写发起能力同时执行的情况。
2 l9 [$ a; K4 ^! K6 X+ U7 m1 k' a- M/ b/ e! s- \$ `6 v
3.5.4      AXI线优先级编程+ C& ?) {9 J1 f
由于存在多个ASIB从接口访问AMIB主控的问题,这就涉及到谁先谁后等问题。所以A**线矩阵就做了一个基于优先级的仲裁方案。每个ASIB接口支持读通道和写通道分别设置,优先级从0到15。数值越大,优先级越高,默认情况都是优先级0。如果有两个传输同时到达AMIB主控接口,那么优先级高的ASIB接口传输优先处理;如果优先级相同的话,根据LUR方案选择(least recently-used最近最少使用情况)。. ~$ p2 G/ n4 R+ e9 B' H

6 m0 z9 o( H% |: u大家在实际应用中,可以根据实际情况进行设置,一般情况下使用默认值即可。7 N; V6 h/ g) P# J- i

* i2 P. g7 Q+ V9 c3.6   STM32H7的总线互联
. {7 O1 O2 F9 ^4 T3 e: c1 aSTM32H7的总线矩阵四通八达,但不是任意Bus Master总线主控端和Bus Slave设备端都可以相互通信的:
) _+ I' J: l" J3 @  p) ~
8 C" m9 f! U4 I: [
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
, s8 b7 C. t3 t& Y

/ s7 G4 q5 Y- w  N" r7 ^  Z8 ?黑色加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。
: p" J  k& G3 J+ z6 f
  p; X. Z) {! m/ D  q. m- d! ]访问通路(每个小方块里面的字符)
) D* P/ \1 P8 ~/ r4 t9 ~5 T( ]* ^5 I, F5 D' A
    任何有数字的表示有访问通路。9 V, X* j5 @! ]. ]- \* a* ~- E
+ b$ g0 Q( W& c# J3 C3 w  h" ]
    短横杠“-”表示不可访问。
! T6 I/ h6 i2 P9 L$ ^: s; ]4 l) X! |) |5 M& ^1 K
    有灰色阴影的表示有实用价值的访问通路。
; A0 S' O+ o4 C9 v+ i& {$ ^' I+ z# m5 A$ A, p
表格中具体数值所代表的含义% \+ `# H; U) A6 J

0 o1 _! ^5 S0 K  @    D=direct* y  U" Q8 o; \( B7 P# }4 [# F
9 v/ d( [! O* X6 m# S* o
    1=via AXI bus matrix! G/ [# h! f4 v9 y: T1 W* f

. a4 @. ~! h' R- M2 b    2=via AHB bus matrix in D2* ^9 l% U% W2 z+ k( ^5 w
) Z$ x/ p7 Z% ^8 c0 R3 q
    3=via AHB bus matrix in D31 m! Q& g2 t4 J2 O
1 V2 u0 P$ M# F! G* D6 T
    4=via AHB/APB bridge in D17 H8 A3 x+ u0 \+ j3 @

' U" y+ A1 x; e  U* u* \# E& p    5=via AHB/APB bridge in D2
" u( M3 Y3 [8 N8 p
1 S: A/ S4 e1 H7 J! b$ w    6=via AHB/APB bridge in D3
/ T( E& _6 i) ?# a3 D1 s/ u! x( Q& Y5 l0 ]$ N, l/ i5 ]# S7 \
    7=via AHBS bus of Cortex-M7
" |  L3 G4 J0 Q9 B5 w' z! G* s0 S, t/ j( s' w% ]8 R1 u& {
    多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。" [" Z1 j  m- Z* t+ m9 m3 V5 b
' A* t5 Q/ T) W+ _
总线访问类型: B2 Z0 b7 H' V9 A9 ]
, u* @, j* w) n1 M6 s
普通字体表示32位总线。4 A7 Z- |8 B1 n

+ I# y0 u. a+ S* ~# k; S斜体表示32位总线主机端/ 64位总线从机端。6 d3 E# l0 x, w+ M: P

# g% L4 @% D( `粗体表示64位总线。
( Y0 F8 o, M% b) h% l. Y  S  }/ a1 O/ F
当前要对这个图有个了解,后面章节讲解各个外设的时候要用到,比如DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。
, o+ Y# ?8 J* Z7 P5 a
# w9 b' R* h) g" o" `3.7   STM32H7的FLASH9 `# Y0 V- r7 U, ^4 y5 B2 W
首次学习STM32H7,要掌握以下几点认识即可:1 c+ _  \3 i& v+ l  \/ d
, B1 U2 d' z$ a6 |  c
1、双BANK,每个BANK的带宽都是64bits,如下图所示:( L& Q6 D! r7 |: k& X: j$ \

; z& b5 e4 }# F  P
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
( U& d3 @  G# H
1 C8 e1 P$ [% \7 r4 [9 T
2、H7中Flash的延迟和主频关系。/ \6 K- Z6 p% G
# U4 v: g- [3 h+ ~1 V# j
H7中已经没有F1和F4系列中的ART Chrome加速,通过H7中的Cache加速即可。具体延迟数值和主频关系如下:2 H1 l, X# y7 g7 R* F7 i6 d
4 _: U8 M$ Q$ b2 r6 S  M9 U
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
7 f  x- U, N' C6 T8 j

3 o% E  W1 }; Y$ F( i3 w对于上面的表格,大家可以看到,当延迟等待设置为0的时候,即无等待,单周期访问,速度可以做到70MHz。增加1个Flash周期后,访问速度可以做到140MHz。当增加到3个或4个Flash周期后,最高速度可以做到225MHz。
5 x, Q, \4 U+ T2 H  }5 Y- v
$ B1 f7 s1 \0 O* A) I3、Flash编程操作(写)最好以256bits为单位进行,应用中也可以小于256bits,但是容易造成ECC校验出问题,所以不推荐。Flash读操作支持64bits,32bits,16bits和8bits。
( l6 n. R( k) A! n8 q( J, u6 C/ v) e% A- C- r8 W
4、Flash支持ECC校验,每256bits配10bit的ECC位,可以检测到1个bit并纠正或者检测2个bit。随着芯片的制造工艺水平越高,带电粒子能产生的位翻转就越多,此时的ECC是必须要有的,一般可以纠正1-2个bit。安全等级高的Flash类存储器和RAM类都是必须要带ECC的。
6 e4 d0 T6 J5 F; L0 t
  Q$ j9 u7 y7 m4 t5 [( V/ Z% y- j/ j2 w9 S9 \. G% A3 B' j, C
3.8   STM32H7的RAM
/ `* K! a. @+ R' b(注,学习本小节,优先回顾本章节3.5.1小节的框图,另外H7的RAM区也是支持硬件ECC的)! X& G. v  o! K0 u# P! h

& ?6 i; s1 q  M5 \% t) mSTM32H7的RAM区分为好几个部分,下面分别进行说明:) D* E0 y  F9 m4 ?8 d
. t* p+ Y+ n& t" b# p( c9 `4 f
TCM区+ u' {( ?. }0 f3 c) y  B: @
/ p) G: g# @9 K3 D
TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。
2 n. b: \2 C# W# G3 m* m
1 m/ n0 l$ |6 C1 D$ J! d' G, u2 B$ L& }速度:400MHz。/ J8 U+ G" s& X2 y% a
) o. {% }0 t% `2 `1 K: c
DTCM地址:0x2000 0000,大小128KB。/ }$ T) a! j8 h, k
0 L: e  q! h, f, t
ITCM地址:0x0000 0000,大小64KB。
# W9 Q2 i" W: I) b& W9 t# j+ ?/ u" \
AXI SRAM区
+ h- W, `7 _# O( Q: g- _* \  S
' I% C8 F, e$ U7 A" v2 N1 S+ s位于D1域,数据带宽是64bit,挂在A**线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。  |* [" F7 Z1 j* l0 L: A7 u# p
3 B; v6 e+ h8 b- W
速度:200MHz。9 N" F5 F+ w' a: K; q3 k% E0 Z
' Q' U- P% h1 |5 _- j: ?
地址:0x2400 0000,大小512KB。9 h0 p* O. e: E5 v* x+ S
* i2 `$ a: n- Q8 W, g$ W
用途:用途不限,可以用于用户应用数据存储或者LCD显存。9 z, P" I7 [& R

6 N2 e1 L& J0 C SRAM1,SRAM2和SRAM3区
5 M, {9 F6 a6 a) g4 Z' w. E
: b0 f1 L$ f5 P  }位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。
8 {2 M: a4 r4 S& H1 `9 W1 e4 l0 e2 f) q9 i$ M9 S
速度:200MHz。7 E) U. d! @4 o6 b6 ~( }* z
5 l. ?. l0 c% i
SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。
( N- r* l: h2 j- @1 \0 R' u5 }- w& Z  @, @" s
SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。8 F/ f. H4 ^" D  ~! V
3 |* A# I" f# O5 x& o3 {
SRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。
. H" @7 f& ?( P, ?$ S. X" T# R, `! O! J/ [, [
SRAM4区
: O! d9 ]/ W4 ]+ |2 P7 _: |" ~- v, \" @
位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。
" O  R5 C( l8 h: T) z& F
, V2 S5 q4 G0 w& y3 [速度:200MHz。
: P; U3 y" E2 t* k
$ F2 L$ d- g7 {; L地址:0x3800 0000,大小64KB。+ k* E6 H. H  o; Y7 ^
" O# B  [7 \/ v; `2 b
用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。) _' j, p: ]1 n2 f  R3 d% u
. K# |9 I' ?* k" ]7 t  `
Backup SRAM区9 p7 ^$ a' s% d/ i/ {2 t$ ~- h
1 P: }0 b& p! u+ i3 w! f) {
备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。: C" r- B* J9 j9 R( `# o

; a4 f. j* P" a. ~, q速度:200MHz。! l; Q1 s) K$ O+ H) ~7 \
! S. E- g) X! X
地址:0x3880 0000,大小4KB。8 Z  u  U# e1 e" A+ c9 A/ @
' u. c. T- e$ d9 _4 _/ k
用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。( T4 d: K6 v0 r% J8 u

$ t4 p' e8 c/ A3.9   总结  x2 n8 N0 S/ J/ q, H
本章节就为大家讲解这么多,让大家对STM32H7有个整体的认识,后面章节将逐个进行学习。7 r& f8 ~$ v8 e$ w7 V5 Z; M9 z

* D3 N2 D. D- i
8 C+ F9 v9 P/ l! p8 z9 a  _: v* H# b/ G3 J
收藏 评论0 发布时间:2021-12-18 17:43

举报

0个回答

所属标签

相似技术帖

官网相关资源

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