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

【经验分享】STM32H7整体把控

[复制链接]
STMCU小助手 发布时间:2021-12-18 17:43
3.1   初学者重要提示
# L  d# i0 [2 [( C6 H学习一款新的芯片,优先掌握系统框架是比较重要的,建议逐渐养成这种学习习惯,然后各个击破即可。) ^( Z/ V% |- _
本章节提供了多张STM32H7的框图,这些框图都非常具有代表性。很多时候记忆知识点比较费脑子,记录这些框图是一种非常好的方式。2 l' o; d# p4 N8 [
对于本章节提供的部分知识点,无法理解透彻,暂时没有关系。随着后面的深入学习,基本都可以掌握。5 E; w! K7 S1 x- [1 e8 h, Z, b
重要的MPU和Cache知识分别放在了第23章和第24章。% C& g- ~$ n( e; b4 w
3.2   STM32H7硬件框图

3 D* y  G: Q/ ~# k学习一款新的芯片,需要优先了解一下它的整体功能设计。需要的资料主要是来自官网和数据手册,比如我们V7开发板使用的STM32H743XIH6,直接在官方地址:链接(这是超链接)就可以看到对此芯片所做的介绍,页面中有一个如下的框图,对于了解STM32H7整体设计非常方便。
3 M# f/ v) O( U, J2 a  i8 ~8 d' I
" ~4 ]2 `6 I# J; z. F  L. a3 g9 `
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

' o2 r/ t3 W( Y8 z9 g+ ^/ _) v/ [0 I2 t. b& S, D0 {7 I9 t
再稍微详细点,就需要大家读页面上的”Key Features”,就是下图所示的内容:
5 O  V7 u! A6 @9 O8 P' z! ?5 g# m# n
/ [3 ]4 N& V3 `* t  H
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
8 E" j: L8 B, M; i: H- [

# e, j1 @+ L0 ], G: o# k" y7 G0 |& d或者直接看数据手册开头的章节即可,也进行了介绍,内容基本都是差不多的,如下图所示(部分截图):
  z* s: T4 a7 a2 m& Q9 S; }' u6 O5 x! _7 u" M! t
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
$ h5 Q* z1 q6 W: j' p: {

) P  r: O9 J2 A' u' v通过框图和Key Features,大家可以方便地了解STM32H7的FLASH、RAM大小以及各种自带外设的信息。9 I* ^( R/ o: a
. w( b4 w& T* S
3.3   STM32H7各个型号的区别
2 z/ N' I* i% N0 n' l, J/ I' q" `; P涉及到芯片选型的时候,需要大家了解各个型号的区别。对此ST有一个专门的文件STM32H7x3 MCUs High-performance line,在链接(这是一个超链接)里面可以找到。此文件里面有简单的对比,只是内容比较简单,仅两页,不过也言简意赅。最主要的是下面的这个截图:2 ?0 |) x3 M, }6 D$ q

0 d. T2 w- F% o- n! _' I
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
" P9 ~8 X* V. v% }

, b( b) O0 \3 l* B9 m; e: W4 b通过这个截图可以方便地了解不同型号的引脚数、封装、FLASH大小、RAM大小以及是否带HW CRYPTO硬件加密的区别。
) K9 a9 p# M2 _- ~  _. F
2 F. X& \# t; m! k4 ~- Y4 B$ |8 a需要了解更详细的对比信息,可以看数据手册。任意下载一个型号的数据手册,在数据手册的的Table 2里面有详细的对比,如下图所示(部分截图):
, W' W; v3 B, X, B- {/ H( |
. N, Q5 `) l8 z* ], ]
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

+ k: w' c+ S9 ^1 T* I7 w
& p* {- E! a0 v, ^' n使用ST提供的软件STMCUFinder或者STM32CubeMX也可以做对比,只是没有上面的表格这么方便,可以一目了然。
/ I& S3 g* n3 J; ?5 M- w$ `% U! T, H, V
3.4   STM32H7总线框图和时钟4 q7 a) S; f2 Y& E* b8 G% A
STM32H7的数据手册里面提供了一张非常棒的框图,大家可以方便地查看每个总线的时钟速度和这个总线所挂的外设。这个在大家配置外设时钟分频的时候还是非常有用的,因为外设的时钟分频就是建立在所挂的总线速度(大家直接在数据手册里面检索Figure 1就可以找到)。
; M" u/ g# C2 v9 e0 _
2 g, u5 T% c* l. w7 e  l
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

8 i+ H, i: Q! q# r5 n  ~  q7 Y! c- E6 Y7 w! Y% j+ C
比如我们想得到不同定时器的主频,通过上面的框图,可以方便地获得如下信息:/ p4 T/ b1 h$ I: ^7 \; Y# k

/ \' ^5 T8 y6 P" t, X% qSYSCLK(Hz)                     = 400000000 (CPU Clock)+ U: ?, B! p$ t4 H5 U  _$ d

! G4 W5 m1 v' e$ W- F" MHCLK(Hz)                       = 200000000 (AXI and AHBs Clock)
* o  F0 a' d( {
4 n. s" {4 S% t+ Q% z( @. [3 R) JAHB Prescaler                  = 2
& }; m# X5 h- `/ c% o
, s0 i# }; W( @  f1 f- XD1 APB3 Prescaler              = 2 (APB3 Clock  100MHz)  ~, p+ E% U) b5 w& R8 j

% D3 y) H8 c- [/ u8 L+ AD2 APB1 Prescaler              = 2 (APB1 Clock  100MHz)) O) l5 s* P6 A7 @! _- i' `  ^
3 Y" F! t/ m, j1 Z' M, x
D2 APB2 Prescaler              = 2 (APB2 Clock  100MHz)$ a/ i" O7 P2 G
+ b& H# F$ R) h9 F# T. f
D3 APB4 Prescaler              = 2 (APB4 Clock  100MHz)$ _" ?3 P1 \5 W( Q3 R5 N
. P3 t* Y' i+ G# ~3 N
' I& J1 t0 B" {1 ^/ P; @& S

  z% j+ s3 B/ J9 v  _- d5 r因为APB1 prescaler != 1, 所以 APB1上的TIMxCLK = APB1 x 2 = 200MHz;7 P2 f+ x4 t' \* T

- i) t2 y) u' ?因为APB2 prescaler != 1, 所以 APB2上的TIMxCLK = APB2 x 2 = 200MHz;
! E& I0 o, e/ Z5 m8 ^5 }) a1 a! V4 S2 j7 S: @! q/ T$ A& C5 X
APB4上面的TIMxCLK没有分频,所以就是100MHz;
3 N& q- U3 T' a* \9 D! ~* r5 Q5 z" b; ?

: N( |. S& X8 d- s) M/ h! ^6 d% l7 r8 b2 Z1 b
APB1 定时器有 TIM2, TIM3 ,TIM4, TIM5, TIM6, TIM7, TIM12, TIM13, TIM14,LPTIM15 y# s, y0 I: O1 O# @

/ u# G  |1 f$ V4 L. ^5 gAPB2 定时器有 TIM1, TIM8 , TIM15, TIM16,TIM17% G- U9 I/ o$ M, a: f

% q1 b( Z: @8 h* _APB4 定时器有 LPTIM2,LPTIM3,LPTIM4,LPTIM5
# k( k3 _% w0 A' U  ~0 P1 b0 Q" V/ [' @1 T
3.5   STM32H7的AXI线. d% _+ ~: K3 A9 B
A**线在STM32H7中有着举足轻重的作用。高并发性全靠这个总线了,先来看下A**线的框架:8 d1 ~6 l; z( N& o

' f5 K9 H) Y& u9 n3.5.1      总线系统框架
# d7 K* s+ d1 R7 |- {* I下面这个截图比较有代表性,可以帮助大家理解STM32H7总线系统。4 V; H# t. A# f6 C

9 V9 }  f' C3 V
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
2 T/ }1 C9 q/ b2 u/ _) |

- v- c6 ~* S4 f. Y这个图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。. n' R/ s) R/ W+ U
$ H2 v' k- X$ `* @2 @4 ^. {/ y! r
D1 Domain. m1 Q$ d$ Y! E" y% H
4 ]) W% W5 f4 j* k4 M$ i% M% J
D1域中的各个外设是挂在64位A**线组成6*7的矩阵上。4 l  |5 `9 L  J0 [3 y; B- A
, {1 t4 [( |. p- j3 u
6个从接口端ASIB1到ASIB6. L: ], y2 d2 ^% L' X& `: V! O
外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。
+ }6 l- u" e1 s% J
7 @+ c1 ^  {. |8 @7个主接口端AMIB1到AMIB7" n6 V6 V; f7 L, t
外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由A**线分支出来的,然后再由AHB3分支出APB3总线。6 e# L' J: [+ t% w) c  Z) I6 {4 K$ C
+ R0 F* F! ^) a# U
D2 Domain( [8 P3 j% ?2 c6 F# `

8 I, D/ Z: o2 {  G" o4 h4 Z- g  XD2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。: m* r' J  N" L) i- l: W4 v$ l% ^8 L
5 E4 h% H" o% r0 g
10个从接口: d1 A% F( ~& b+ R; J
外接的主控是D1-to-D2 AHB 总线,AHBP总线,DMA1,DMA2,Ethernet MAC,SDMMC2,USB HS1和USB HS2。
/ i! D7 r) \5 O' n% ?" y# E1 x8 ^4 a: o/ i
9个主接口
* N6 l0 z3 N9 e' K2 @/ S7 ^外接的从设备是SRAM1,SRMA2,SRAM3,AHB1,AHB2,APB2,APB3,D2-to-D1 AHB总线和D2-to-D3 AHB总线。9 H: `, Y: M0 ]) j

4 E/ D  Q) ~1 N7 z8 m$ l, GD3 Domain
7 r* ^- }1 U: ~, V7 H# C: k0 \  \4 S7 V: N) Z( B$ c. E) T5 ~
D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。1 _# c+ E: n' _5 B. D) r

! w8 [  m% B# O  u0 O4 U: g7 d3个从接口
3 ]3 P: H' p$ y外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。
: |2 u, f0 M: B1 w& |% n% h; ^# o# ?4 k, ]( b( _* l
2个主接口0 U( A# I& ?4 Z
外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线。
3 U+ m, L3 w- R2 i+ [4 E% o2 x% V; I# I! s, v
这三个域之间也是有互联的,可以是:
* |$ x  ~7 `7 n* ~
* i0 p0 D, U1 Q/ q$ o! J1 s; mD1域到D2域的D1-to-D2 AHB bus: P& l6 b$ a6 W& |8 v
允许D1域中的主接口外设访问D2域里面的从接口外设。比如D1域里面的DMA2D访问D2域里面的SRAM1。
. b" a& v. v2 O  S
9 u$ e$ s( M; ND2域到D1域的D2-to-D1 AHB bus
( B# V( e" J4 T$ w9 h' e) \# h允许D2域中的主接口外设访问D1域里面的从接口外设。比如D2域里面的DMA2访问D1域里面的AXI SRAM。1 T" B- e7 X; M+ ?& d

0 w  {( \: |/ |/ s9 s8 rD1域到D3域的D1-to-D3 AHB bus
% k6 C! z; l/ a& ~, {  Y- D允许D1域中的主接口外设访问D3域里面的从接口外设。比如D1域里面的DMA2D访问D3域里面的SRAM4。
, A. s/ q4 T+ ~, u8 C4 R) q; C6 C* ]* e$ s9 @3 Y, F' ~& ~8 H/ h* _
D2域到D3域的D2-to-D3 AHB bus。6 B3 i! Q* [9 v
允许D1域中的主接口外设访问D2域里面的从接口外设。比如D2域里面的DMA2访问D3域里面的SRAM4。
6 c4 _9 `% Y: b" O+ e3 j' j) Z; t% T7 G7 z/ F9 o
有了这些知识后,下面我们重点了解A**线矩阵。7 i4 k* j5 z$ [
) i* y" A: t0 |: O3 _. W
3.5.2      AXI线特色: @; o1 v, i1 J  z) l, W' Q
AXI支持高频率、高性能的系统设计:0 q3 A- y- T  T

4 `# X2 O) h- n3 z支持高带宽,低延迟设计。
& J+ `% g& F/ G2 D! }提供高频操作,无需复杂的总线桥。
* A/ K& p8 v- g% Z满足各种组件的接口需求。$ f& F- d6 n! G# K) f& Q+ a
适用于具有高初始访问延迟的内存控制器。$ a# I' @9 V( t+ _9 B" Z
为互连架构的实现提供了灵活性。# g1 A" F; N- j$ G
与现有的AHB和APB接口向后兼容。* u/ F: O3 k8 k- q
2 B5 m* c! Y* K" r  S# z1 S; T
  J; v: _* ~# p/ w
AXI线的关键特性:
- }4 b4 D4 j+ u+ `( w独立的地址、控制和数据线。
, V: O% h8 Z' L3 D) w0 u8 M支持非字节对齐方式传输。& X+ V2 N5 ~1 j% V
基于起始地址的突发传输。5 f: o/ H( r' g' j; y$ V0 c3 y9 g! j
分开的读和写数据通道,且提供DMA传输。
: |7 w# N! n& z( {支持发起多个地址。, t2 i9 j7 b: i3 l. ?) I
支持无序传输。! o- Z( A. `8 z# x4 m
允许添加寄存器,以提供时序收敛。
2 Q% I: e! o9 B# ?% M( z
: X: i+ D; Z+ l. R& s  s( M% R2 b: l" [0 _: H* D
AXI线
% S! |5 }: u# a$ F6 }( I2 }2 `: [/ A! c$ |. |6 L; k
3.5.3      AXI线简介" r  `: _' q+ X2 `7 V/ _$ Q1 }# W
通过下面的框图,我们再进一步的认识一下A**线。; _1 Z, y6 n6 t7 U) f
" {* @! T" T6 D7 B+ a' ^1 A
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

/ x3 p  p: z/ o# a7 C$ a4 a8 c$ D) S  r  U( {. k. C5 T
通过上面的截图,我们可以看到,A**线有6个从接口ASIBs(AMBA slave interface blocks)和7个主控接口AMIBs(AMBA master interface blocks)。+ {* i: D! ~/ m9 Z( y
& a- ]& V$ t! z
针对从接口ASIBs,描述如下:& z5 z- Z3 x+ X; H! q

  |9 H: ]! y# Y4 f5 e
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

1 }4 E7 r" Z% A& ?' m- a+ H; C, S  d3 f: g! I
重点注意最后一列,STM32H7参考手册里面原始的描述是R/W issuing,这里将其翻译为读/写发起能力。比如输入通道IN5连接的主控DMA2D,支持的读发起能力是2,写发起能力是1。读发起能力是2该如何理解呢?这里的含义是存在两路读信号同时进行(因为AXI接口有一个FIFO的功能,可供同时进行,更深入的认识有待研究),反映到DMA2D的实际应用中,就是DMA2D同时读取前景色和背景色的缓存区做Alpha融合之类的操作。写操作同理,DMA2D的写发起能力仅支持一路。8 n, F0 Z) k% `/ f

, |" }* G% ^8 _% w: A' }) H针对主控接口AMIBs,描述如下:5 W2 c+ Z% X# G  x# a3 ~

( P4 [4 l1 W4 F0 B+ y
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
& _& J* l: m2 {! J5 w

" K( A  a2 g3 h# d" |7 C跟上面表格的含义是一样的,同样重点注意最后一列,这里多了一个总接收能力(Total acceptance),也就是读发起能力和写发起能力同时执行的情况。; A& i. }: v. N- L

! t+ \. ~$ P. j/ z* ?' I! A& |3.5.4      AXI线优先级编程5 i  C! V- c+ }9 Z& O" s
由于存在多个ASIB从接口访问AMIB主控的问题,这就涉及到谁先谁后等问题。所以A**线矩阵就做了一个基于优先级的仲裁方案。每个ASIB接口支持读通道和写通道分别设置,优先级从0到15。数值越大,优先级越高,默认情况都是优先级0。如果有两个传输同时到达AMIB主控接口,那么优先级高的ASIB接口传输优先处理;如果优先级相同的话,根据LUR方案选择(least recently-used最近最少使用情况)。
/ K' {; P) u8 E. ]) K# l5 Q) u$ v  V7 N# o* Y; x
大家在实际应用中,可以根据实际情况进行设置,一般情况下使用默认值即可。
& j% n/ {3 q5 Z1 @/ j" L' v+ T' P/ M, Y( i+ ?) w
3.6   STM32H7的总线互联  {& |+ P$ _3 b  D  R
STM32H7的总线矩阵四通八达,但不是任意Bus Master总线主控端和Bus Slave设备端都可以相互通信的:5 U+ P( F) T( f6 t8 Q9 L

' q" s7 r+ z0 ^( a, {; p
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

% f) f" ^, P- Z# K0 I
6 c2 c7 R# {' C; x; M1 V黑色加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。5 I0 d4 R' ^" J# x- d/ m
9 d9 \. j+ w% N  _" K. l; x2 d
访问通路(每个小方块里面的字符)% j' `( i  A3 J8 K( \" v' |, Z; D

- Y3 ^; E7 u4 ?2 R: G6 D. d    任何有数字的表示有访问通路。
1 _0 f1 V. `9 Q$ \0 `7 x) S$ W& J) Z7 o% M5 E: Y( U* _
    短横杠“-”表示不可访问。
  P5 P* M- D. G) j) {: Z$ l9 y: V: f: @- u
    有灰色阴影的表示有实用价值的访问通路。. L( A4 s/ n: t6 c8 ~, V% r
: M. t- W. ?) f) z) t  ~
表格中具体数值所代表的含义7 @- T: Z9 E, M2 z) \/ f, q
5 Z/ V2 p2 Z7 Q( g, u1 m( v/ o
    D=direct
, n0 W* E6 A7 T* L9 J5 `( D6 M# u2 Q4 ]- M5 w! M
    1=via AXI bus matrix5 F+ s- f3 G0 B: B8 ?- C

& O9 D% B! s5 u4 r9 Y+ w% L    2=via AHB bus matrix in D2
& X. V) B6 L: V. ]1 I- [" k1 R2 M& _# G* X  g
    3=via AHB bus matrix in D30 T$ ]+ ?4 H0 G* j- f) i

' N$ B% k8 j3 f; R6 U+ S    4=via AHB/APB bridge in D1
/ M: z6 F. m5 F; f) r
# ~0 L$ k+ D/ ^# P  t! }# O  P! |    5=via AHB/APB bridge in D2
  S8 r! S( q# ^  t( c1 Y
; G( S6 f/ O  p: K' f* P! B8 Z2 S    6=via AHB/APB bridge in D3
) p" r4 C) U+ w, d& Y) j' Q
. w8 _! ~* {! ^8 q( W    7=via AHBS bus of Cortex-M7
4 q) i8 X) ^( e! f5 `" d8 k6 W& g1 F1 L8 f( X8 k3 G2 [
    多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。' T3 E- n5 o$ A

% C0 S, X( E0 r; f1 s* O) c% |总线访问类型
# H# S9 H7 D- S
; h, }; I# [% N) L1 M5 L% m普通字体表示32位总线。- H$ e) x9 h5 p
9 @! {4 N7 B6 x; ^9 e5 d
斜体表示32位总线主机端/ 64位总线从机端。
  h4 W# l& h$ p+ s/ n. m+ ]9 D8 J7 z3 C
粗体表示64位总线。; z3 w: ~( h, d
" i0 u# f, n& g; U, D
当前要对这个图有个了解,后面章节讲解各个外设的时候要用到,比如DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。" {% q- W' a+ M! E
6 ^& W3 o0 {+ J
3.7   STM32H7的FLASH  `- Q, l8 \9 e" V
首次学习STM32H7,要掌握以下几点认识即可:
- q4 J, V$ @7 F" {: j
! {/ ^4 y) [8 J+ V: L1、双BANK,每个BANK的带宽都是64bits,如下图所示:
! _9 e4 u" z8 R, U0 R
; ?: b0 h2 x! V0 _" x/ d, x
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

9 h+ D: n. d- W% R6 D. _/ ?. D5 S+ j! G6 O8 b! G" R  y6 F4 |$ v
2、H7中Flash的延迟和主频关系。
; Y2 H) @0 H3 D8 `' t4 ]- ]
& `1 F$ U& k0 O( E7 z0 y0 qH7中已经没有F1和F4系列中的ART Chrome加速,通过H7中的Cache加速即可。具体延迟数值和主频关系如下:# R6 T7 q/ r. M9 [/ a& u

) T/ T# v4 w+ |, M0 V; u6 {* d% v
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

; t9 W* u5 h, m  T% X9 }$ M2 j9 x; D+ k
对于上面的表格,大家可以看到,当延迟等待设置为0的时候,即无等待,单周期访问,速度可以做到70MHz。增加1个Flash周期后,访问速度可以做到140MHz。当增加到3个或4个Flash周期后,最高速度可以做到225MHz。
! C' u- y/ O$ S7 d
$ c1 Q5 W. ]$ ^8 ]7 P  Q) m3、Flash编程操作(写)最好以256bits为单位进行,应用中也可以小于256bits,但是容易造成ECC校验出问题,所以不推荐。Flash读操作支持64bits,32bits,16bits和8bits。
" L9 }" M! e# S" @# B
% i6 ]0 c2 [8 \3 r4、Flash支持ECC校验,每256bits配10bit的ECC位,可以检测到1个bit并纠正或者检测2个bit。随着芯片的制造工艺水平越高,带电粒子能产生的位翻转就越多,此时的ECC是必须要有的,一般可以纠正1-2个bit。安全等级高的Flash类存储器和RAM类都是必须要带ECC的。$ {8 i# G4 U% J* T
. }# f% F3 m8 o6 N. L8 m, O3 d
$ t2 c- S; p, c
3.8   STM32H7的RAM  }: ?9 A. J% \% {: ^- J
(注,学习本小节,优先回顾本章节3.5.1小节的框图,另外H7的RAM区也是支持硬件ECC的)1 ?1 ?4 {- W$ k& a) h$ \

+ m5 t$ T5 G+ Z; g$ K% j' oSTM32H7的RAM区分为好几个部分,下面分别进行说明:+ J7 ?2 T- H& z

4 G0 g3 ~0 `5 I5 P0 |; i- V/ | TCM区
5 j$ h; V9 x7 J
2 M& b- ?. }0 d- A- @6 CTCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。
) J. k! G7 [) i1 m' a  g& A) N7 }) [. ?2 D8 A
速度:400MHz。
, X' Q0 ^' s" Y; N6 a
2 }6 t4 c9 Q2 S7 h, G; KDTCM地址:0x2000 0000,大小128KB。
! o# Y+ g9 Q) L( }2 v$ H* I
. R- M- V: U$ t" I* D* d0 WITCM地址:0x0000 0000,大小64KB。
. X' D4 s, E# H; T+ c' k/ C
* Z8 i2 N9 U( Q; z8 d3 V+ w) }  E- g AXI SRAM区
% r5 f0 a1 v3 W, [9 A
$ X- ~* M5 q# {2 I8 C位于D1域,数据带宽是64bit,挂在A**线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。
- m2 }" ]4 Z9 T+ h! ^1 p% {; c# W+ j' q, I" [1 g. w
速度:200MHz。
( Q; l2 l* E6 O7 q! K
* \/ |- j  G# _$ h地址:0x2400 0000,大小512KB。. P3 C6 d  C! }# R8 f( y' Y% M
3 l: P9 y7 d+ P9 u
用途:用途不限,可以用于用户应用数据存储或者LCD显存。
: O+ x; o/ s# E$ c4 ~$ E# x/ r# U4 M5 u1 Q
SRAM1,SRAM2和SRAM3区
0 X! O. P8 z4 q/ x6 X+ z' \! {& ?8 n) ^
位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。
7 I$ b6 Y4 w- M) }/ _% h6 O9 |" K! H  Y/ [: d0 b
速度:200MHz。, X) H: v$ R) H1 c. P" ?  V
- n7 T& N1 P% `
SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。4 V* d8 a3 n6 |* a1 Z( e6 }
# y# t3 X% d2 |1 c; }3 a/ G/ n
SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。" |$ C1 F( b! T/ g6 Y- z- `0 f/ j0 t
! j; y) o' T1 [2 K7 {' @( n
SRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。- d" T) p$ Y2 o2 X4 Q

- O2 Y  J6 H( l# U0 D8 @* g8 F SRAM4区
. z* s2 S& z, }' L% ?: m/ k
* ]& r, J6 K6 x; e5 B* z位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。0 |( M7 X; q5 \' {
5 q/ b: y; P1 {; @/ n2 Y) F9 U1 O
速度:200MHz。4 K# c4 |" _5 \  O
* C! m2 U; l0 u6 f/ U$ Z% k/ \# K' T$ [$ I
地址:0x3800 0000,大小64KB。
" v5 c3 l6 B; c5 I
" `) l6 n4 C; ?* Z2 I5 X用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。
; L! k6 M4 ?/ d- E' N9 p  T& @" A7 n  H8 q0 ^5 R* A
Backup SRAM区
7 {$ s8 ]8 @5 w2 Y; F
, s7 [! n6 b$ r0 A- Q7 W  W! i备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。% P" \5 N/ B/ Z  C+ n
( s! z! ?0 H6 y* Z" H
速度:200MHz。0 T8 r2 D, V9 y- D
/ d2 X4 r0 |' I' S' n  H
地址:0x3880 0000,大小4KB。
5 B/ `+ S0 ?0 u$ m4 ]
; w/ o2 h, p) p$ k用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。  u2 H; F( l- N! E
' m2 t# k! W8 N' p
3.9   总结
9 G* M: t* p& ]" a% T& o0 R; X本章节就为大家讲解这么多,让大家对STM32H7有个整体的认识,后面章节将逐个进行学习。) H- x" d6 t' y
: b0 Q8 H2 y0 l' F% d7 q/ S

. N' C5 l3 j& d6 Q- r0 X* }/ z8 x5 h2 q/ ]' W( C* q$ O8 v7 r
收藏 评论0 发布时间:2021-12-18 17:43

举报

0个回答

所属标签

相似分享

官网相关资源

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