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

【经验分享】STM32H7整体把控

[复制链接]
STMCU小助手 发布时间:2021-10-27 23:18
3.1   初学者重要提示+ q; g  @' [" n  o% @' h, K
学习一款新的芯片,优先掌握系统框架是比较重要的,建议逐渐养成这种学习习惯,然后各个击破即可。
; ~: k2 W# C- T9 \$ ~3 N* o本章节提供了多张STM32H7的框图,这些框图都非常具有代表性。很多时候记忆知识点比较费脑子,记录这些框图是一种非常好的方式。
3 [# ?) O' u3 B* L对于本章节提供的部分知识点,无法理解透彻,暂时没有关系。随着后面的深入学习,基本都可以掌握。
# X2 K$ T3 R8 h& Y6 [, F重要的MPU和Cache知识分别放在了第23章和第24章。
2 U3 _- C& x) _/ R4 b  {3.2   STM32H7硬件框图
5 Y3 W; f6 Y2 R9 u( R& H学习一款新的芯片,需要优先了解一下它的整体功能设计。需要的资料主要是来自官网和数据手册,比如我们V7开发板使用的STM32H743XIH6,直接在官方地址:链接(这是超链接)就可以看到对此芯片所做的介绍,页面中有一个如下的框图,对于了解STM32H7整体设计非常方便。
7 ^  @4 W* t1 H7 m- r. D  U# o$ ~" l+ c# H( T- Y1 ^+ p
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

! l+ Q+ ^7 c! B0 D5 c  i
; k& S; U0 c4 y5 F! a6 e) }% J再稍微详细点,就需要大家读页面上的”Key Features”,就是下图所示的内容:% J2 O3 g( t. Y7 P

. g& n4 G* T) p7 Z1 X* k
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

" q5 M6 j7 |3 `% \( u) r: M1 R; g& X4 g1 r( e# W$ Q
或者直接看数据手册开头的章节即可,也进行了介绍,内容基本都是差不多的,如下图所示(部分截图):
; }3 d4 k! H& \% ^# l2 e6 A  Q$ v1 o
8 P) E4 V1 L, W6 |
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
8 f5 }3 B8 p: w2 e+ `

3 v2 \4 o- \4 r/ W1 b' f通过框图和Key Features,大家可以方便地了解STM32H7的FLASH、RAM大小以及各种自带外设的信息。( F9 j9 e; `, p0 t4 z
/ ^& D$ d7 B6 B  T
3.3   STM32H7各个型号的区别
. }7 K$ t6 n) E涉及到芯片选型的时候,需要大家了解各个型号的区别。对此ST有一个专门的文件STM32H7x3 MCUs High-performance line,在链接(这是一个超链接)里面可以找到。此文件里面有简单的对比,只是内容比较简单,仅两页,不过也言简意赅。最主要的是下面的这个截图:, X, }" l  `. J2 H+ L8 o

# r: P" G$ {1 p6 B) g, p
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

- p5 D& A) Z( K8 w" L" b+ i% m# l$ k0 e6 N1 i+ [  J
- q5 y/ F: Z: ~
通过这个截图可以方便地了解不同型号的引脚数、封装、FLASH大小、RAM大小以及是否带HW CRYPTO硬件加密的区别。
" M3 h6 \/ Q8 h" C$ h0 o3 n8 M  K( l& D: o5 @: i! e( f
需要了解更详细的对比信息,可以看数据手册。任意下载一个型号的数据手册,在数据手册的的Table 2里面有详细的对比,如下图所示(部分截图):4 `9 |! B& E! E, C
" x  l, V3 q/ k$ _9 J( O) t
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

& }# e* u; M5 I+ b. D0 u* Q; v3 O, \7 t8 \1 H0 y
使用ST提供的软件STMCUFinder或者STM32CubeMX也可以做对比,只是没有上面的表格这么方便,可以一目了然。
9 G6 w8 a& A, K( s7 t% M# {; ^0 M# Q
3.4   STM32H7总线框图和时钟/ ~: {; ?. j0 L% _
STM32H7的数据手册里面提供了一张非常棒的框图,大家可以方便地查看每个总线的时钟速度和这个总线所挂的外设。这个在大家配置外设时钟分频的时候还是非常有用的,因为外设的时钟分频就是建立在所挂的总线速度(大家直接在数据手册里面检索Figure 1就可以找到)。
8 i& Q( r) u: }2 [# ^1 V0 y9 u  ]: S5 x* S& S
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
3 q+ O  D, D% V
% r6 Z6 s' C9 r  T# x; H
比如我们想得到不同定时器的主频,通过上面的框图,可以方便地获得如下信息:
: `! Q9 s& O* X5 l9 C  o, ]3 I, c3 j+ o6 e
SYSCLK(Hz)                     = 400000000 (CPU Clock)1 x3 w2 W9 g2 z4 E' Z2 R6 F

2 D8 _$ o! T! O; R5 P2 v  ~/ Z: tHCLK(Hz)                       = 200000000 (AXI and AHBs Clock)' L% t/ }3 s% p: h4 @

% O% ]$ I' V7 C  y+ g9 qAHB Prescaler                  = 2
8 G' R' M/ z* M4 l- N8 M0 J- }4 v6 A1 @. r7 ?. b
D1 APB3 Prescaler              = 2 (APB3 Clock  100MHz)6 G3 Y# H6 r; d0 q9 l6 i
. h0 f7 Q- n) M" @  L  B2 ?5 m
D2 APB1 Prescaler              = 2 (APB1 Clock  100MHz)0 I0 q* r2 X, R4 D7 u
) E- B+ f& b# @) |
D2 APB2 Prescaler              = 2 (APB2 Clock  100MHz)& w' B; w2 X' g3 n8 _8 P1 K) C

6 |8 I* o' a% \2 n7 @D3 APB4 Prescaler              = 2 (APB4 Clock  100MHz)0 r6 L  @# ]5 f, ~# T

9 U/ m9 S. `/ j3 w: G# n9 T1 z1 p2 a9 {0 v3 q  x: z

; Y$ q  u9 I3 j; x. y因为APB1 prescaler != 1, 所以 APB1上的TIMxCLK = APB1 x 2 = 200MHz;
, d8 ]5 m  k; J) \/ Z4 a1 h0 @$ N( n
因为APB2 prescaler != 1, 所以 APB2上的TIMxCLK = APB2 x 2 = 200MHz;+ w3 v( b2 w# Q* a8 z( D

/ f9 U7 F/ o- ^  UAPB4上面的TIMxCLK没有分频,所以就是100MHz;
- h5 ?3 \2 J6 [; d
, V* T! R5 a2 j+ n
& B  |: L4 |3 e' M  \8 a2 v0 V. P" M9 @) `2 k
APB1 定时器有 TIM2, TIM3 ,TIM4, TIM5, TIM6, TIM7, TIM12, TIM13, TIM14,LPTIM1( q) }  ?* L0 N5 l7 s
0 ~/ r) G  D6 s8 X. e
APB2 定时器有 TIM1, TIM8 , TIM15, TIM16,TIM17
- b+ o* U6 ]' Z, j" F7 q' e* U2 h  Q/ d  w8 v8 K8 R
APB4 定时器有 LPTIM2,LPTIM3,LPTIM4,LPTIM5
/ X0 P/ M9 ]% r3 \5 t1 C! B; B4 k4 s5 L) x' F
3.5   STM32H7的A**线
2 M, f4 I) i7 x9 z5 A; M! j0 f3 tA**线在STM32H7中有着举足轻重的作用。高并发性全靠这个总线了,先来看下A**线的框架:( J& _4 d" w7 }; x& w! ?4 ?( b
( _. X8 \) ]/ o8 E1 `
3.5.1      总线系统框架- \0 H# ?2 l  _( ~- v% K' G" G
下面这个截图比较有代表性,可以帮助大家理解STM32H7总线系统。9 M2 Y3 I7 {& d7 j
$ K. b+ n: Z; X" Q8 S3 x
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

: T5 O4 }* l3 C0 ?4 k
9 g; a! R# S( y& o% A, S这个图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。3 \6 C2 u4 ~7 K$ `/ c: y' ^
' r& c/ w; I' [1 x, {+ X. m) S
D1 Domain) b% {% D5 T9 n) Y" Q- ^, a/ X; v+ s, X; `
0 V( J+ k1 S, ^: X
D1域中的各个外设是挂在64位A**线组成6*7的矩阵上。
, I1 `0 p2 y6 K5 P1 T" K
  h5 y; T: x- x" j8 ^2 r. _6个从接口端ASIB1到ASIB62 k8 \% H* {3 K3 r+ r$ T
外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。
8 o2 ~# y5 z6 S; S; I& g1 ?) ~. _3 ~7 d; q+ u$ G
7个主接口端AMIB1到AMIB7" W/ p0 k# H. b' |: ?  H
外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由A**线分支出来的,然后再由AHB3分支出APB3总线。
1 V& e1 c" Y9 T8 ~) o3 v( j0 @. X/ }, R/ u3 O" x
D2 Domain1 |, ^8 w  d0 C0 Q' M3 B

- O+ W- D8 g9 z& k! ]; HD2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。
8 e; d* X; K  o! Z: I, }. Y; F3 H
10个从接口
+ b7 i  q, K! ~; u7 A9 S; r7 U外接的主控是D1-to-D2 AHB 总线,AHBP总线,DMA1,DMA2,Ethernet MAC,SDMMC2,USB HS1和USB HS2。# V  G# a! p6 h$ Z" F& O1 n- U
: ]( u2 s! \( x6 |+ q" M
9个主接口
+ l' e- y! h& @2 c外接的从设备是SRAM1,SRMA2,SRAM3,AHB1,AHB2,APB2,APB3,D2-to-D1 AHB总线和D2-to-D3 AHB总线。0 z( r; G7 q9 b9 E# V7 U

% U* k/ i$ F/ J6 A) {* f2 N1 JD3 Domain3 R% N: S$ n6 l  z
* S7 y( r5 B* H' f
D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。
# W" @( _. m% i7 F& V6 z) u; v. t) X  c4 G! k3 q
3个从接口) c$ o. F9 s: u0 R5 }6 z
外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。* E  X& i5 u- X& A* W; I- J

9 \' V1 X! [2 q. Y2个主接口
% {- ~/ X6 s/ H外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线。
4 }) G4 L5 \& @* z# R! F8 ]& \. T2 C5 L' v4 B
' R- }) Z1 K; D  U% F7 F0 I' P

7 h& w6 Y+ R% }这三个域之间也是有互联的,可以是:6 F( ]( p+ b  |/ w- J) t
) m) @1 j: T  U
D1域到D2域的D1-to-D2 AHB bus
' i7 s) }0 X! @允许D1域中的主接口外设访问D2域里面的从接口外设。比如D1域里面的DMA2D访问D2域里面的SRAM1。% h( z  v! ^. Z! e  }
9 q# L$ u. `' {  @- S# s# Y
D2域到D1域的D2-to-D1 AHB bus" Z5 M+ ]" N7 c7 z
允许D2域中的主接口外设访问D1域里面的从接口外设。比如D2域里面的DMA2访问D1域里面的AXI SRAM。+ I# }) q, }9 L0 [4 C" R4 r* D

2 d" Y& ]5 s$ A  |2 `D1域到D3域的D1-to-D3 AHB bus
4 x0 j% \  ~& D1 U0 }允许D1域中的主接口外设访问D3域里面的从接口外设。比如D1域里面的DMA2D访问D3域里面的SRAM4。1 o4 n3 `/ e/ U' \

7 A5 [3 U/ T% B; ]" S* X; UD2域到D3域的D2-to-D3 AHB bus。
: P3 r& B/ t" H7 }6 `5 _- J允许D1域中的主接口外设访问D2域里面的从接口外设。比如D2域里面的DMA2访问D3域里面的SRAM4。* g# \/ l) V' ^' f
& ^& w% k  G" E; I" C9 o
# T9 P; Z+ d. D, o" {* q+ e2 u$ E+ X. o

- C+ m# D. |+ T有了这些知识后,下面我们重点了解A**线矩阵。
: U; N2 @" K& |% R! g+ C  K  ]# w9 T7 S4 Y0 ]+ B8 z
3.5.2      A**线特色$ N8 z. P& K  Y5 |, ^2 n+ \6 L" L
AXI支持高频率、高性能的系统设计:# a9 D* l: W, @6 r* p, F

" D3 ?! n1 b* E/ s* ?支持高带宽,低延迟设计。
/ b7 r( v: w9 C/ |, h7 C# }9 @; _提供高频操作,无需复杂的总线桥。
4 ~, }8 y: P* q: n满足各种组件的接口需求。; ]7 @, U2 v5 d/ a: b2 j' K& p
适用于具有高初始访问延迟的内存控制器。  V( b$ C3 t! h" M
为互连架构的实现提供了灵活性。
7 x7 O5 Q1 `; t与现有的AHB和APB接口向后兼容。
1 u) X2 z9 Y/ G7 i) ~) J. T" R0 Q' S- ^0 X' y- `

" W7 Z7 Y. z1 Y5 o7 _7 CA**线的关键特性:
, ~0 v  X0 |5 C3 ~2 E. `+ b7 c; w- M4 K# h
独立的地址、控制和数据线。
/ i1 T% H& s# X! k支持非字节对齐方式传输。% u5 q) r6 q7 k8 m1 B+ E0 f& }: Y
基于起始地址的突发传输。
% A3 r/ z$ o# i分开的读和写数据通道,且提供DMA传输。5 J9 @* i$ {; R3 y
支持发起多个地址。
4 N8 Z- u6 E2 {! g8 V支持无序传输。
' }  b- C/ @$ B! C  U5 \- H$ n允许添加寄存器,以提供时序收敛。
! ]& T( d. X: M8 R+ c; X1 E3.5.3      A**线简介% V/ K* `+ s3 z7 ?1 x8 t1 t
通过下面的框图,我们再进一步的认识一下A**线。
* I; p; U& N9 Q, r) G# h' O9 W6 W; i) y4 G
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
+ u5 _" s& w2 W2 X1 Z* c) @

8 G; l0 a  J( J0 ^通过上面的截图,我们可以看到,A**线有6个从接口ASIBs(AMBA slave interface blocks)和7个主控接口AMIBs(AMBA master interface blocks)。
+ E, z0 h; ?, p7 z( Y+ ?1 z6 S5 I% d  d) y, E
针对从接口ASIBs,描述如下:2 `6 ^5 w0 a. p; ?( G6 S

' y# C' v/ {- S
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
1 M" C  d, y) d
, @% h/ w# F: v( F
重点注意最后一列,STM32H7参考手册里面原始的描述是R/W issuing,这里将其翻译为读/写发起能力。比如输入通道IN5连接的主控DMA2D,支持的读发起能力是2,写发起能力是1。读发起能力是2该如何理解呢?这里的含义是存在两路读信号同时进行(因为AXI接口有一个FIFO的功能,可供同时进行,更深入的认识有待研究),反映到DMA2D的实际应用中,就是DMA2D同时读取前景色和背景色的缓存区做Alpha融合之类的操作。写操作同理,DMA2D的写发起能力仅支持一路。! F3 v2 \9 ?4 a8 l
. @! E5 c. y- r" ]& L; G) i! c
针对主控接口AMIBs,描述如下:
' R4 z0 U. Y2 d- I+ G2 D2 V
# |* v6 j: S- j) J: u0 s
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
! P6 e6 L3 @6 l7 K/ L7 B/ X
' @; J) Q( t( o" b2 i# c
跟上面表格的含义是一样的,同样重点注意最后一列,这里多了一个总接收能力(Total acceptance),也就是读发起能力和写发起能力同时执行的情况。" Z7 x7 j5 u3 \7 K- u

8 @4 i" V! [( q  @* K$ _3.5.4      A**线优先级编程, j! v' P2 s" F
由于存在多个ASIB从接口访问AMIB主控的问题,这就涉及到谁先谁后等问题。所以A**线矩阵就做了一个基于优先级的仲裁方案。每个ASIB接口支持读通道和写通道分别设置,优先级从0到15。数值越大,优先级越高,默认情况都是优先级0。如果有两个传输同时到达AMIB主控接口,那么优先级高的ASIB接口传输优先处理;如果优先级相同的话,根据LUR方案选择(least recently-used最近最少使用情况)。# x4 G- N1 _) s) n' |4 E" }

" `; M+ Y; I8 T6 N大家在实际应用中,可以根据实际情况进行设置,一般情况下使用默认值即可。
% Y$ Q6 o# b9 Z" D: F& {
$ B' L5 |4 D+ e, u. i* f& }% {3.6   STM32H7的总线互联" N, a/ m" P/ m% L
STM32H7的总线矩阵四通八达,但不是任意Bus Master总线主控端和Bus Slave设备端都可以相互通信的:" i  d# K4 V" F# q  \  J

6 A" ^+ ?8 t) s3 A9 P
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

* ?5 c0 c/ B, h9 z
8 r, P' x! D' \- O0 Y  [黑色加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。" p, }  _  o! G8 z2 |# r2 H
) b; p$ ]6 S, z! G1 R" J% l. T
访问通路(每个小方块里面的字符)! h. o9 s- m  Y8 u8 l; [

( {- E) R& o- X8 Y8 g    任何有数字的表示有访问通路。
2 ~/ Z& h& \7 s3 o* i0 ~+ Q$ i8 x
1 J1 F& r& B/ z- \    短横杠“-”表示不可访问。
5 ?  ^, }, L# u0 o, k  V
" `& f9 t% V0 G% S6 m# Y    有灰色阴影的表示有实用价值的访问通路。
: s; O- c! s6 }& l. ~3 a8 }1 u) `  ~/ s: `: K& S% I  N/ S' O; q' A$ ~
表格中具体数值所代表的含义
& x. }  g: T# u: z! ?+ Y+ K9 D/ `# x* k2 K  T" g( k5 z9 H# B& S
    D=direct
* k6 y9 P% s0 d. [: p3 \$ T: Y; j& z! @. c
    1=via AXI bus matrix
3 q2 }" ~0 D$ E" i4 `  u2 Z
% n0 \, u6 B- b$ Z+ W    2=via AHB bus matrix in D24 u8 b2 w5 ?" A

; A+ j* K2 S/ w0 S5 M; y; g    3=via AHB bus matrix in D3
: _* \% z) M& \, C- D) E: X, D1 W% k5 m
    4=via AHB/APB bridge in D1
5 _' G9 o8 [, X, o* b% v# u+ c1 {9 w7 G: L
    5=via AHB/APB bridge in D2
6 s+ a3 ^) n8 @% F, N# W! \
0 d0 f/ Z. I7 M- p- I6 Z, \    6=via AHB/APB bridge in D33 b$ U2 g6 z* Y- y# X
& O' l% G; @8 _0 q+ ^
    7=via AHBS bus of Cortex-M7
6 S9 P* {4 a# J* H0 O, w) X+ X* J, Z, H2 C
    多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。6 y- k# u5 g0 ~* X7 g/ Q: D

1 x! o2 C8 O. l8 c6 R6 y5 W总线访问类型0 w) U0 t6 B( M7 O1 V8 i9 k
1 n  M$ V9 D4 A$ q; I0 G0 h! p
普通字体表示32位总线。
% e  b5 C2 l$ o1 s2 J/ c
' I) X& b+ y+ Y$ P: J8 ]斜体表示32位总线主机端/ 64位总线从机端。
6 t0 o0 j! [0 N7 C( M
8 x# @/ x+ R, Y7 ^" b$ _. S2 ~粗体表示64位总线。  N+ t2 C  f3 J+ F% K  i

6 N1 \. f' u% z1 {当前要对这个图有个了解,后面章节讲解各个外设的时候要用到,比如DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。/ X& Q' u# R2 [) ?* ?2 R

% w$ f' v+ h( n$ |7 _3.7   STM32H7的FLASH
. D  G* e3 k7 T$ R首次学习STM32H7,要掌握以下几点认识即可:; e% v  i1 x7 K
" f  @  r. m" K" v. f) }. i
1、双BANK,每个BANK的带宽都是64bits,如下图所示:
& k9 ?7 }, {/ x% x0 ]
8 v2 O# d1 o# N7 J; ~6 M
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
$ H! ?5 ?& z( d) v8 a$ _& q
+ U' F! ~$ @2 D9 {/ T8 P
2、H7中Flash的延迟和主频关系。
% X6 B# {+ R9 e
) ~/ M8 h8 F" k6 n: nH7中已经没有F1和F4系列中的ART Chrome加速,通过H7中的Cache加速即可。具体延迟数值和主频关系如下:
/ Y4 o6 ^8 U+ Z( r
" H/ V- r) O, _  R( n
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
: S: Y, o# t2 N: O7 y6 ^. P
9 d5 F, L$ V0 x; ?9 w4 w+ r/ Y
对于上面的表格,大家可以看到,当延迟等待设置为0的时候,即无等待,单周期访问,速度可以做到70MHz。增加1个Flash周期后,访问速度可以做到140MHz。当增加到3个或4个Flash周期后,最高速度可以做到225MHz。0 w. x( u, Q7 G3 w& x; ^& U

! k* A8 `4 U% R# M4 D1 {3、Flash编程操作(写)最好以256bits为单位进行,应用中也可以小于256bits,但是容易造成ECC校验出问题,所以不推荐。Flash读操作支持64bits,32bits,16bits和8bits。
- Q* s2 D9 M7 R0 v4 y5 P  I. I8 ]0 o. C9 f. E
4、Flash支持ECC校验,每256bits配10bit的ECC位,可以检测到1个bit并纠正或者检测2个bit。随着芯片的制造工艺水平越高,带电粒子能产生的位翻转就越多,此时的ECC是必须要有的,一般可以纠正1-2个bit。安全等级高的Flash类存储器和RAM类都是必须要带ECC的。% q8 m" T: j: c$ D, `) a- O
3 [8 J) @; L1 N5 @$ K
3.8   STM32H7的RAM4 ~  G9 h6 H% ~) ?6 B
(注,学习本小节,优先回顾本章节3.5.1小节的框图,另外H7的RAM区也是支持硬件ECC的)
0 U' j. C: ?2 Q: ?+ F$ K2 s, d9 b& g" G; l3 `
STM32H7的RAM区分为好几个部分,下面分别进行说明:* k0 U0 A' N' B$ ^

/ l" R$ S" W" t, H$ ^9 _# f TCM区
$ v  p( _- N8 H! G) G
: ~0 k/ F0 g- ?( f3 L: Q8 CTCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。
4 b: i" r6 J' ^" K
. M+ }+ c. F& y0 E3 Z! O# E速度:400MHz。
$ l4 p9 W: Z; v' m6 h
: l% R1 R& l. k7 c7 \* @DTCM地址:0x2000 0000,大小128KB。
1 S0 S# D$ e  U1 |0 b; R
+ J+ t) n: k) hITCM地址:0x0000 0000,大小64KB。
3 w9 [* h, ?- E- R- ?" O
  b& X& f$ q" J: Q; U6 i7 W7 \ AXI SRAM区
- a2 y, v, E8 k
1 q0 e7 \6 U+ F# C% _位于D1域,数据带宽是64bit,挂在A**线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。. P- |& K+ [' y
0 q: f) _- H0 `( ?+ k
速度:200MHz。) b! Y+ {( o/ {
. i- W- t/ Z7 Z/ j
地址:0x2400 0000,大小512KB。
0 [8 t3 Z) k% F/ \' c. s
- p3 e& R* F* G% M* Y) j1 J: L3 c用途:用途不限,可以用于用户应用数据存储或者LCD显存。0 i. M$ `/ F! y8 l# E! ~% O* }, ~4 |
1 J& [" M. Z& c* O
SRAM1,SRAM2和SRAM3区- p% v- m* n8 w$ B+ X. @# L
- G& i* V0 `( h! K
位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。
# W) {7 c1 L3 k' n* k/ U$ A; ^( p$ D9 R
速度:200MHz。
) {7 O" [1 \* B3 O
1 A! b$ }9 I% C, L1 ^SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。8 l+ m+ A0 ^9 `% @0 x, P

' e# w" ]9 Q3 A8 _/ a- _( cSRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。  f% `! B" g6 Q# b+ W4 M

* x# t  A6 s* o/ [( l( vSRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。
- M) d/ ~4 T* P9 |: E( m& D8 y! H( H5 ~3 J
SRAM4区! n. L9 n. {5 Z0 s' T7 }8 C2 w, h

, _- }+ S* w8 s! q* a5 R7 C+ F; [8 X位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。# W' ~( @$ q- y; R. m1 `% g

/ O+ P7 h9 _" M2 B4 a- _$ E1 d速度:200MHz。. o+ L6 |2 \' m) L

" f+ [4 }; M/ G8 ^2 _地址:0x3800 0000,大小64KB。8 W$ p; n+ h/ t; i/ \  |/ {4 s
  M, ]% r6 D: T/ @' t
用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。
6 m  M+ e+ C& s$ Z
8 |( _/ f! Y8 V# t9 F Backup SRAM区% h$ H* O. t6 s3 h' o
' |- Q( _7 {' A4 {& G1 Q
备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。
! c: `( w. t7 [$ T% D0 E, p- t4 A, S9 }) O* ~1 i$ _6 o2 _: V3 j+ l
速度:200MHz。
8 o& \9 O) e6 |- j. j' _7 ]1 b& F" p# ~
地址:0x3880 0000,大小4KB。  r! V* t' H6 s* X  O
2 {0 B# d3 y) v( f) j
用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。
; x$ [. k1 Y8 K$ I# Y7 ]0 n3 l
1 ^! D, ?- E% F6 W4 A3.9   总结
% C4 o' [* q) Z$ C本章节就为大家讲解这么多,让大家对STM32H7有个整体的认识,后面章节将逐个进行学习。
  _# a" v0 E7 x1 v. ^
: M2 \. z; H; X! x
! p) P) A3 C9 T: Q/ w
( p4 Z+ o" C3 B6 V% q6 I5 V
, e8 Z" D+ B, v% Y; b/ k, A, s
赞 收藏 评论0 发布时间:2021-10-27 23:18

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版