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

【经验分享】STM32H7整体把控

[复制链接]
STMCU小助手 发布时间:2021-12-18 17:43
3.1   初学者重要提示
5 F1 C: N- U4 V0 g* O学习一款新的芯片,优先掌握系统框架是比较重要的,建议逐渐养成这种学习习惯,然后各个击破即可。
( z% o# N" S$ N# ~* T本章节提供了多张STM32H7的框图,这些框图都非常具有代表性。很多时候记忆知识点比较费脑子,记录这些框图是一种非常好的方式。% p2 R* ?; f; _5 r% _
对于本章节提供的部分知识点,无法理解透彻,暂时没有关系。随着后面的深入学习,基本都可以掌握。
1 ?  M/ L" F' i/ ~2 Z$ i重要的MPU和Cache知识分别放在了第23章和第24章。( P: b8 x+ [6 J( F- {! e3 j
3.2   STM32H7硬件框图

. d4 x; w4 b4 p& J5 O+ D5 r学习一款新的芯片,需要优先了解一下它的整体功能设计。需要的资料主要是来自官网和数据手册,比如我们V7开发板使用的STM32H743XIH6,直接在官方地址:链接(这是超链接)就可以看到对此芯片所做的介绍,页面中有一个如下的框图,对于了解STM32H7整体设计非常方便。% X* ]1 m- F3 G! d1 T% k
' ~3 t& f' E; [2 A9 {2 G
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

% f4 Q! ]$ A2 g9 L, ?" q1 z
2 T5 s7 J" y) \$ p6 R0 u/ z5 L再稍微详细点,就需要大家读页面上的”Key Features”,就是下图所示的内容:' S6 ?4 W2 b- U4 i

2 p( E2 ]2 [& F9 x6 g5 ?: {' R
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
; G$ H5 q3 V+ M3 R

; w- s/ h7 c2 z或者直接看数据手册开头的章节即可,也进行了介绍,内容基本都是差不多的,如下图所示(部分截图):
* J* B' d( n& l
# E# R; V* ~5 r3 a. h* g
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

" Q4 T5 ]6 Y3 v3 [
( \- p8 `$ c$ J' B# z3 y; @9 G9 G通过框图和Key Features,大家可以方便地了解STM32H7的FLASH、RAM大小以及各种自带外设的信息。
+ ]( m7 m1 ~& F
2 |: G9 j; O* p3.3   STM32H7各个型号的区别- |7 t- C$ N& g4 G; R4 L4 ]
涉及到芯片选型的时候,需要大家了解各个型号的区别。对此ST有一个专门的文件STM32H7x3 MCUs High-performance line,在链接(这是一个超链接)里面可以找到。此文件里面有简单的对比,只是内容比较简单,仅两页,不过也言简意赅。最主要的是下面的这个截图:
: W! U+ L# }( V9 w
- F7 L( O5 z0 {  L! R5 u5 i
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
$ J3 U9 q& y# ]& t. R
1 S) Q! f4 T8 B* L: j
通过这个截图可以方便地了解不同型号的引脚数、封装、FLASH大小、RAM大小以及是否带HW CRYPTO硬件加密的区别。* }$ W4 B0 I6 r: y
2 A9 W# ~0 H& [3 C  U/ S9 ~
需要了解更详细的对比信息,可以看数据手册。任意下载一个型号的数据手册,在数据手册的的Table 2里面有详细的对比,如下图所示(部分截图):
* u& C' q: T) f3 k& `$ n
+ z9 W) {; L, f& F5 P- V5 R
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
3 b1 U  p  W" P% X; I- p$ g5 q

  i6 D3 h+ D6 G7 A% e使用ST提供的软件STMCUFinder或者STM32CubeMX也可以做对比,只是没有上面的表格这么方便,可以一目了然。
* {/ L1 W# I6 U0 G3 g' @, J
" i1 J" P  N/ p8 L3.4   STM32H7总线框图和时钟+ N" F* O; V) j' h
STM32H7的数据手册里面提供了一张非常棒的框图,大家可以方便地查看每个总线的时钟速度和这个总线所挂的外设。这个在大家配置外设时钟分频的时候还是非常有用的,因为外设的时钟分频就是建立在所挂的总线速度(大家直接在数据手册里面检索Figure 1就可以找到)。
* A3 `( `* S1 F0 O: t  j' a) @8 A  W4 Y
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
, v( [( a8 ^8 ~  P4 y+ y/ }
4 z. g  k- E% [; Z/ U  Q
比如我们想得到不同定时器的主频,通过上面的框图,可以方便地获得如下信息:
% c5 s7 c" m, \) y! Y. a
# G0 ], g. o8 I. HSYSCLK(Hz)                     = 400000000 (CPU Clock)
; Q# s: M& _( E1 F4 g  q  \, @/ {
# d! {  `# n& H; Y5 E; G; Y8 K7 c8 CHCLK(Hz)                       = 200000000 (AXI and AHBs Clock)
9 s) D4 W. s4 R$ F: r1 q5 M2 q3 U
AHB Prescaler                  = 2
: O/ ]+ S  t- T3 T) x/ Y6 N* U' c. T" G! O% m: |: s
D1 APB3 Prescaler              = 2 (APB3 Clock  100MHz)" c% @6 W4 \7 v8 H# k0 G; N

# O" j$ d- I# E6 p# H, ^  H  BD2 APB1 Prescaler              = 2 (APB1 Clock  100MHz)
; j/ H4 f2 f! v# ?- n2 }
* D7 }' |& |  |9 \- XD2 APB2 Prescaler              = 2 (APB2 Clock  100MHz)) O3 K: d2 H# e1 H1 ?

, _, t; f5 j- }% f. y$ tD3 APB4 Prescaler              = 2 (APB4 Clock  100MHz)
1 o9 u8 p( k3 F  u9 W- c- p
8 h3 w" R& ]3 m1 f7 H1 r- T- h' h* ~; l( g+ _* @: L3 D  Y% J% V
4 u. P. T* |' R5 N
因为APB1 prescaler != 1, 所以 APB1上的TIMxCLK = APB1 x 2 = 200MHz;
' e$ C+ j  _: p5 w& y! j) J# T! `0 E
因为APB2 prescaler != 1, 所以 APB2上的TIMxCLK = APB2 x 2 = 200MHz;3 \8 U4 a$ Z/ R7 q. Z9 \, g, b# p9 H
1 `* a1 ?$ v$ n. j+ s* Q( o3 t& }: X8 ]
APB4上面的TIMxCLK没有分频,所以就是100MHz;; K3 g& b/ j3 R: Y

) h: X. v: f6 ?# r3 x
/ X" k' O# z( I$ G# d; t
; g* Q0 E7 m8 M4 @- i+ n8 ?1 {% ^APB1 定时器有 TIM2, TIM3 ,TIM4, TIM5, TIM6, TIM7, TIM12, TIM13, TIM14,LPTIM10 Z0 W( f! V8 F" h- T9 `4 ^! n

5 F8 u3 n( o3 s4 M, X3 Z4 NAPB2 定时器有 TIM1, TIM8 , TIM15, TIM16,TIM17
+ I$ |5 V9 @6 P! B% ~0 H
# O# ?& S; Z3 K  ?! @4 @& {5 KAPB4 定时器有 LPTIM2,LPTIM3,LPTIM4,LPTIM5
9 }2 g8 P  S2 k" a; f# W' j2 J' b5 F/ K
3.5   STM32H7的AXI线
8 I' O" L% ^9 L$ w. V* ]A**线在STM32H7中有着举足轻重的作用。高并发性全靠这个总线了,先来看下A**线的框架:' Q; D+ o& g# e# y$ i9 x: Z$ H
- m7 S5 q# l" @4 G5 p
3.5.1      总线系统框架" z8 C6 _1 ~. [9 |
下面这个截图比较有代表性,可以帮助大家理解STM32H7总线系统。
* b* J3 i$ S- G- Z. c: h$ j2 O4 F1 r1 k% o/ \5 {) ?, q
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
" f( M9 d5 I2 s7 j6 U8 s

/ x- ^2 R# W+ x这个图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。
4 a$ w0 d% D- |) K( k. I
" Z* e4 O- s9 H: ~0 kD1 Domain) `& H5 K7 ~5 @/ a2 |
7 j" P; A/ ]2 |$ b3 ~9 p2 O0 K$ S
D1域中的各个外设是挂在64位A**线组成6*7的矩阵上。
- l7 r/ i% b; N3 h& j4 J
8 d7 s) N3 `  V( V6个从接口端ASIB1到ASIB6
2 ~" V! z0 h9 H+ y& J" [外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。; ^+ {" f, l( T
, _2 m/ p1 l+ c4 M8 v% j# b7 J
7个主接口端AMIB1到AMIB7
) i# `8 ?* p$ y6 s1 {外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由A**线分支出来的,然后再由AHB3分支出APB3总线。
8 O5 B8 t& ~3 H5 q) e( v" }) c1 |8 t( \, q) d0 ^- ?  ^
D2 Domain+ C& q3 W. d% S/ f

1 i2 b# }. V/ ED2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。/ p  [  V, ?1 X- n! ?: W) }

7 u  e7 r/ K- Z' H$ c9 E3 d10个从接口
/ k/ g' s* `0 k, N: G$ d! o外接的主控是D1-to-D2 AHB 总线,AHBP总线,DMA1,DMA2,Ethernet MAC,SDMMC2,USB HS1和USB HS2。% b) T" }% n, S
! B& E5 R, q' n. u7 C( @9 n
9个主接口8 ~5 a- n, C" \4 C9 g) c  @2 b
外接的从设备是SRAM1,SRMA2,SRAM3,AHB1,AHB2,APB2,APB3,D2-to-D1 AHB总线和D2-to-D3 AHB总线。
, Q8 ~* v; r) ?8 Z/ D* H3 z: n- o# ^7 k
D3 Domain4 L5 g% o7 T+ x7 c
0 X/ P( s' u) o. I  k
D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。9 y( n- ]5 V) k2 K9 E4 I

# ~( P: f% w2 H9 d* N3个从接口
/ M8 e9 c% T9 e* _外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。
) i0 ^* b  i' X, X* s2 Y( y
! ^3 `+ i6 Q$ [( V( S8 I2个主接口3 O4 |8 i$ Z0 H: g' M& T9 p# F
外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线。6 D7 I  p9 g& N9 i# V  l
( @' v/ X8 O  F- g
这三个域之间也是有互联的,可以是:- X2 ~* i6 L/ v7 L* I# s6 W$ Z

$ q) |0 g6 `6 N' ^  d) a' kD1域到D2域的D1-to-D2 AHB bus4 `! z/ @4 T5 \6 V3 ^  W' F/ I
允许D1域中的主接口外设访问D2域里面的从接口外设。比如D1域里面的DMA2D访问D2域里面的SRAM1。
* @5 Z5 ^0 ?8 I+ i/ c0 L" P( M$ p: e- O- ^) L: l4 h1 V7 S* s9 e/ J% `
D2域到D1域的D2-to-D1 AHB bus
- t1 o- ^( U+ U8 B& T/ r允许D2域中的主接口外设访问D1域里面的从接口外设。比如D2域里面的DMA2访问D1域里面的AXI SRAM。8 M% [5 v% o# n2 E' D

+ b# v8 f5 ]% q; }D1域到D3域的D1-to-D3 AHB bus
- B8 B7 P+ |9 x* M) d允许D1域中的主接口外设访问D3域里面的从接口外设。比如D1域里面的DMA2D访问D3域里面的SRAM4。
/ b- d5 Z$ b! b6 Q! P7 ]: g$ L' d
3 K( T& D" t) D) m: v# KD2域到D3域的D2-to-D3 AHB bus。3 D1 T3 ]2 B3 L7 u9 |7 `7 O
允许D1域中的主接口外设访问D2域里面的从接口外设。比如D2域里面的DMA2访问D3域里面的SRAM4。' C% P( N4 R9 n

$ l# R, ~3 C; c9 j有了这些知识后,下面我们重点了解A**线矩阵。7 m3 L8 n/ q7 V4 R% N3 g9 d

% p, S5 J; p" G3.5.2      AXI线特色
" y" W( A( V% b0 G, RAXI支持高频率、高性能的系统设计:
2 Z6 [6 x9 \  D0 s' ?( b8 S! M$ ^* j, v% ]: _" w! T
支持高带宽,低延迟设计。, t6 u+ N; j& A
提供高频操作,无需复杂的总线桥。( P8 G9 B+ \4 E/ V0 k; C
满足各种组件的接口需求。0 C/ w1 d. D$ s$ w, b) {9 i
适用于具有高初始访问延迟的内存控制器。0 l/ \( E# m0 ~" `! z  E0 n1 N
为互连架构的实现提供了灵活性。
9 I7 R" M! c. h0 V+ a与现有的AHB和APB接口向后兼容。* X' Z1 Q9 L& X5 S+ Y" A
( C. Q% K$ g6 B- y* d, B; C

; l5 D5 Z9 t. u9 ?" SAXI线的关键特性:
# a1 g, n( ~; w独立的地址、控制和数据线。
% A/ E% t$ ~$ X/ T支持非字节对齐方式传输。2 d! j% H- [- G
基于起始地址的突发传输。: R8 o# A6 x8 C
分开的读和写数据通道,且提供DMA传输。' M. u8 w! v5 L# ]0 w9 i
支持发起多个地址。, s6 ?' \. ~! s1 S0 {6 N; }1 @
支持无序传输。
; K3 a# k0 `- J3 r' Y5 c允许添加寄存器,以提供时序收敛。
7 d% x1 n4 k6 q2 P* T( v$ Q7 i0 a
% C# @% I$ V, w% C* F; ]& ^$ F5 c1 H6 o6 R
AXI线
! \: k1 E$ N9 x! }! m; \
' v) D9 u& i, D. d3.5.3      AXI线简介; c( ^: Z& s9 D4 O
通过下面的框图,我们再进一步的认识一下A**线。
6 m$ Z  l6 ]6 W% t" X" _2 j6 Q6 c# k1 @! [" }3 m/ ^
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
) B) N2 Z8 A: _8 {% E  `

! J8 v3 ~! _* _! k5 I* ^% j* ^通过上面的截图,我们可以看到,A**线有6个从接口ASIBs(AMBA slave interface blocks)和7个主控接口AMIBs(AMBA master interface blocks)。1 S6 `6 x9 E* X6 p+ [
4 u. a' W3 l; T8 I( C" ]
针对从接口ASIBs,描述如下:
+ {7 r3 H3 S) y8 M- {* L1 s) M! m0 e$ p5 ?/ c: H4 U
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

/ @) C9 i6 C& \; B( k- s9 g( `( K$ \5 a8 {* p# a8 J
重点注意最后一列,STM32H7参考手册里面原始的描述是R/W issuing,这里将其翻译为读/写发起能力。比如输入通道IN5连接的主控DMA2D,支持的读发起能力是2,写发起能力是1。读发起能力是2该如何理解呢?这里的含义是存在两路读信号同时进行(因为AXI接口有一个FIFO的功能,可供同时进行,更深入的认识有待研究),反映到DMA2D的实际应用中,就是DMA2D同时读取前景色和背景色的缓存区做Alpha融合之类的操作。写操作同理,DMA2D的写发起能力仅支持一路。
9 d* M+ Z- O6 }% g8 h: Y5 x3 C% k* P1 K8 o
针对主控接口AMIBs,描述如下:9 [4 s0 d, V5 B, Q6 J
4 x; _' s. q! x: m% s2 z
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

7 p5 L$ q* Y% \7 R7 d
; O, m, |& H7 @- Z跟上面表格的含义是一样的,同样重点注意最后一列,这里多了一个总接收能力(Total acceptance),也就是读发起能力和写发起能力同时执行的情况。5 K: h: ?. k! \; L5 q3 Y; d4 T
5 ^# e/ C! w0 k# }7 a3 `4 Q
3.5.4      AXI线优先级编程( A- e5 m: e) F- |$ [
由于存在多个ASIB从接口访问AMIB主控的问题,这就涉及到谁先谁后等问题。所以A**线矩阵就做了一个基于优先级的仲裁方案。每个ASIB接口支持读通道和写通道分别设置,优先级从0到15。数值越大,优先级越高,默认情况都是优先级0。如果有两个传输同时到达AMIB主控接口,那么优先级高的ASIB接口传输优先处理;如果优先级相同的话,根据LUR方案选择(least recently-used最近最少使用情况)。/ u0 j5 k- l6 m2 p7 V2 ?

/ [  z9 |6 D6 B! I! h5 b6 G% t大家在实际应用中,可以根据实际情况进行设置,一般情况下使用默认值即可。
4 w2 E2 I' l7 T% `& l7 \3 q7 y( T8 e6 ~3 [
3.6   STM32H7的总线互联
% u$ n5 Y* c6 hSTM32H7的总线矩阵四通八达,但不是任意Bus Master总线主控端和Bus Slave设备端都可以相互通信的:
, p! }# I/ P& V% w1 `; b  k' f3 i. n: W$ C
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

7 V. N( m; U5 j& @8 C9 s+ V% W
4 d# H6 T7 f) j9 g1 s黑色加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。
' O3 P. z+ g2 ?0 X
1 o  _" u8 j! z1 a, {$ G1 A7 ?访问通路(每个小方块里面的字符)
% y2 Z2 W2 |/ i# l! s# R5 G( {+ @/ k6 Y3 _! g# s5 R  G+ t
    任何有数字的表示有访问通路。
* X8 E- k+ I0 ^- T
* m( U7 H* L' R$ X% p3 o/ E    短横杠“-”表示不可访问。' B6 X: y$ B  n' T: f

! ~7 D" s$ [& X" @2 g! }2 f    有灰色阴影的表示有实用价值的访问通路。
! ]3 t2 l; i9 S# s& C4 g
* t, r7 ^& O- R; ~8 u" Z; X" R" r表格中具体数值所代表的含义
6 T& C( j0 h( D5 \1 G
2 q) n2 r% w( b    D=direct' `, @+ g% i6 a

1 p  @3 r9 J2 W1 N; x    1=via AXI bus matrix
3 T0 D1 s% Y# U* I- M* O) p( Z, b) b: h
    2=via AHB bus matrix in D2
  l1 Z0 t% T7 i! h5 @% j* H& v  L/ q4 Q" \
    3=via AHB bus matrix in D3
* }3 Z& \/ h3 M! a% V6 l) j1 O( ?
$ @% O: d* I. r, u    4=via AHB/APB bridge in D1
& q* m2 }# [8 X. o* S4 z. n  M+ `$ Z7 Y! O# X
    5=via AHB/APB bridge in D2
  u/ p8 X! h: h$ q4 ~1 h+ V" m8 L/ g( N. S6 Z
    6=via AHB/APB bridge in D3% `# t, ?5 g% g  D: w& w* P
3 V& o, t: h# y- u1 Z# n4 P- u/ [. n
    7=via AHBS bus of Cortex-M75 S8 l, J& n# F' ]. [
) w* w+ S9 b$ H  ~; i8 [
    多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。
: C) ?, }$ M* u$ g! O8 L/ d, C) w9 ^+ P- P3 P
总线访问类型
) N7 m0 z; Z, s; F8 P8 T
# P* \1 |9 m1 B. x4 T5 D  c普通字体表示32位总线。. [: ]: _5 t9 B% I+ T0 e3 ~) u. j! g
9 y* M% t' Q, L7 x9 _6 K
斜体表示32位总线主机端/ 64位总线从机端。6 b6 B8 K  [5 d6 |' i3 l& V
# [& U. l# ^- r9 V
粗体表示64位总线。* n- B4 R7 z4 j

1 c3 {: g% e" K4 I  Z4 |7 @当前要对这个图有个了解,后面章节讲解各个外设的时候要用到,比如DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。
0 g/ Z5 w! o$ w+ i
1 K* S3 ]; g  j3 J! g8 L! w3.7   STM32H7的FLASH0 z# g* g# L! q+ k" _3 U
首次学习STM32H7,要掌握以下几点认识即可:% R. i, ?6 `! O: R- |' g

1 Y( f5 z# d3 I1 C1、双BANK,每个BANK的带宽都是64bits,如下图所示:+ P7 M4 X' w& {5 @5 n
9 H) {$ d+ k  ]
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

8 |: `/ E# ?3 [7 `2 g' y: ?1 p. B8 V: a5 g8 N- z9 ]
2、H7中Flash的延迟和主频关系。
2 H1 C( V$ N' L" b( T- S  }
5 X& G( b9 ^) c2 a3 DH7中已经没有F1和F4系列中的ART Chrome加速,通过H7中的Cache加速即可。具体延迟数值和主频关系如下:
1 ^1 \! z7 O2 U& j! g' c# m6 d+ D+ r$ z* s' N! t
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
* J$ K7 ^, ^9 W& N8 E  w. T! g4 B' _

2 j- D& \  O" G, e( Q' S7 e对于上面的表格,大家可以看到,当延迟等待设置为0的时候,即无等待,单周期访问,速度可以做到70MHz。增加1个Flash周期后,访问速度可以做到140MHz。当增加到3个或4个Flash周期后,最高速度可以做到225MHz。. U& E* b6 d4 X# L  J$ a

' A  S+ E/ }7 K) R7 s; @& R% z0 }3、Flash编程操作(写)最好以256bits为单位进行,应用中也可以小于256bits,但是容易造成ECC校验出问题,所以不推荐。Flash读操作支持64bits,32bits,16bits和8bits。
5 F, I3 K  W" j  v1 [3 H6 R: H# a! g& y, t
4、Flash支持ECC校验,每256bits配10bit的ECC位,可以检测到1个bit并纠正或者检测2个bit。随着芯片的制造工艺水平越高,带电粒子能产生的位翻转就越多,此时的ECC是必须要有的,一般可以纠正1-2个bit。安全等级高的Flash类存储器和RAM类都是必须要带ECC的。
2 v8 D' I/ B9 C& R* s) d/ c" K
% B% o+ m  W3 V5 ^$ X* j: I- J: C+ M- o
3.8   STM32H7的RAM% V6 G6 D6 u! V7 m
(注,学习本小节,优先回顾本章节3.5.1小节的框图,另外H7的RAM区也是支持硬件ECC的)
! N: `  T: p2 n7 w2 s5 w3 j2 _; ^- C* Y' u" r
STM32H7的RAM区分为好几个部分,下面分别进行说明:
' J" O0 _3 ?3 x3 _6 S% ^  F1 _6 t& }) t) G
TCM区4 c% h, R5 o5 O- l$ E6 f. y- y; ]: \

* b6 M5 E$ M- @' l; `; g* U3 vTCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。
+ W& @+ ?* W5 w% N4 P* p$ Y) H2 W9 e( _$ ^
速度:400MHz。8 g/ P8 `+ G1 t7 M

; ]. ^5 ]% j/ Q, K, R  XDTCM地址:0x2000 0000,大小128KB。
  t3 L  O$ j1 w) j- g8 ~6 C- L, x) U/ N0 s! a6 t. {" m
ITCM地址:0x0000 0000,大小64KB。
2 ^2 @& l! Q! w- v* T5 }) t3 ~& ~' j3 e1 `6 o* k; y
AXI SRAM区
: t2 \% S6 @$ w  u
3 H. }2 Q8 o- K位于D1域,数据带宽是64bit,挂在A**线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。
- X  U/ b6 n: M8 Z7 h: r0 B- Y5 z! P9 B
速度:200MHz。( B/ Y9 X$ j) g- c5 ?( ]

9 f7 x3 u7 }2 ^0 i. m, B- N地址:0x2400 0000,大小512KB。
3 T6 i+ A7 W" F, Z: N1 a$ C+ ?  _$ d6 a, g+ ], }1 c5 o, z: Z9 j
用途:用途不限,可以用于用户应用数据存储或者LCD显存。# o, q- v* L% }6 h" {

  {2 n8 d/ b4 X1 S1 g2 P SRAM1,SRAM2和SRAM3区
( b; ?4 ^7 W. g8 k  u: H4 x- b, o% h& v; W
位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。
& d1 e3 l( t2 t# V0 d; J) ?3 l1 h0 j6 l1 G
速度:200MHz。
. |7 n3 q8 e. T6 z4 {3 k' H. ]" C( _" c6 h7 K$ }- p4 V- o- D
SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。3 Z8 X+ `& v8 {
6 p( G* _" i% l/ z8 E# B" }
SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。
: v5 d/ p; k) Z8 I
5 \. S4 N" Y3 u' }$ o8 p" ]5 mSRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。
8 t) F! a9 c, G- Q& D( B9 _8 }: C- P# A1 V0 o' d  t* V: C
SRAM4区; f; `* u: a6 ]2 o# Q6 K

6 @; o# H( s: s) B位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。% `4 }: f+ }) ~3 K! w' |+ L

5 n) l+ g' p- M/ k6 X, }; q速度:200MHz。
* A4 y* N1 z2 v" O" F3 s# b" U7 ?" T0 L. _$ n$ o4 I
地址:0x3800 0000,大小64KB。
) W- y! D1 C6 o* _! g  [. n6 F  x3 t$ b  }8 G  r
用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。
9 w, f: @; i7 e5 |" S% p# G4 u& L2 Q4 e& S( Z$ }* R$ B: Z* d
Backup SRAM区
7 ~5 b$ o% J  @5 ~% H
9 ]6 J  W& ]' V  V9 ~4 E备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。1 z( L! J7 w# c* u0 a

9 [- _6 S) w% O速度:200MHz。7 D( f) T9 c/ E! Z) W# ~  T

4 Q7 g0 X( A6 g  `地址:0x3880 0000,大小4KB。
; Y  m# t+ T% c8 e; \  ]2 ^5 s6 e& B( E
用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。: e5 D: C/ i- t* w

  y' q$ c7 e5 a0 n  E( W9 m3.9   总结
2 G2 T( l8 n* D7 E- w* x9 B( n/ ^本章节就为大家讲解这么多,让大家对STM32H7有个整体的认识,后面章节将逐个进行学习。
# y5 A; `* p( g' \/ e1 D/ T
( X5 X1 s; {& O- {) X; W& n' I- @+ o( g; P! m$ b

8 ^6 c+ P/ A9 Q" {/ z9 Q
赞 收藏 评论0 发布时间:2021-12-18 17:43

举报

0个回答

所属标签

相似技术帖

官网相关资源

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