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

【经验分享】STM32H7整体把控

[复制链接]
STMCU小助手 发布时间:2021-12-18 17:43
3.1   初学者重要提示
+ V1 s+ _; S8 J6 |# g2 O; n学习一款新的芯片,优先掌握系统框架是比较重要的,建议逐渐养成这种学习习惯,然后各个击破即可。
% i; w! w, `, ?本章节提供了多张STM32H7的框图,这些框图都非常具有代表性。很多时候记忆知识点比较费脑子,记录这些框图是一种非常好的方式。8 i- S0 L6 u( {8 h2 c
对于本章节提供的部分知识点,无法理解透彻,暂时没有关系。随着后面的深入学习,基本都可以掌握。
1 M) D+ ~, U: N! K* E5 j6 m8 N) c5 [- P重要的MPU和Cache知识分别放在了第23章和第24章。3 S4 d) _3 B" @2 @
3.2   STM32H7硬件框图

; f) C, G8 e/ [! T# [2 ~学习一款新的芯片,需要优先了解一下它的整体功能设计。需要的资料主要是来自官网和数据手册,比如我们V7开发板使用的STM32H743XIH6,直接在官方地址:链接(这是超链接)就可以看到对此芯片所做的介绍,页面中有一个如下的框图,对于了解STM32H7整体设计非常方便。' A5 y# w5 w$ T3 y
  d- f: F5 M0 |5 a- n
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

9 B+ g7 F3 l- s" n. _. c+ e1 S. S4 }$ B2 d% I: j5 ]  ~
再稍微详细点,就需要大家读页面上的”Key Features”,就是下图所示的内容:
0 `4 ~' Q" n) I. s3 b8 `
. Y4 c: v+ X% U+ M( D5 Y
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
% o3 ]* c: h8 s# C2 L, C) h; a
& H( N: `) c: @3 y+ b
或者直接看数据手册开头的章节即可,也进行了介绍,内容基本都是差不多的,如下图所示(部分截图):
% ]/ t" M7 r3 j: l1 Z* l$ C, a2 d! h2 x( q* m8 W) z, R0 I# E
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
# n. ~( O' ?5 w6 ^

# n2 ?8 Z1 K! d6 W! z通过框图和Key Features,大家可以方便地了解STM32H7的FLASH、RAM大小以及各种自带外设的信息。5 u  z! ^  m% m) x( ^8 P
" g3 A- j' A. R4 @; ~: `( [
3.3   STM32H7各个型号的区别
. K; i0 X; Y% y# \( b* n" v涉及到芯片选型的时候,需要大家了解各个型号的区别。对此ST有一个专门的文件STM32H7x3 MCUs High-performance line,在链接(这是一个超链接)里面可以找到。此文件里面有简单的对比,只是内容比较简单,仅两页,不过也言简意赅。最主要的是下面的这个截图:0 e: z+ n0 u- R# ^& K

$ _' ?% S. s, M$ H! s6 z
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

9 A% M9 p0 J) ^/ d# ^4 c# o- ?/ I& {, y( w$ `; f5 [% f' f: m
通过这个截图可以方便地了解不同型号的引脚数、封装、FLASH大小、RAM大小以及是否带HW CRYPTO硬件加密的区别。9 Q$ R. F' k) y6 F4 m; k  S
9 q9 _9 L. n3 |% ^/ c" T
需要了解更详细的对比信息,可以看数据手册。任意下载一个型号的数据手册,在数据手册的的Table 2里面有详细的对比,如下图所示(部分截图):5 p: F  E/ W- w2 I6 _6 V" W
' a  x4 I  ?% M7 L2 M' G/ r' [
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

7 @1 I) F5 |. g) k+ f* Q; r( T
0 l8 `. J" t- ^; n! j8 h6 u使用ST提供的软件STMCUFinder或者STM32CubeMX也可以做对比,只是没有上面的表格这么方便,可以一目了然。
! |- O. C. z6 E1 |: U  Y$ C
( V' B! A  |! s, T3.4   STM32H7总线框图和时钟
- U5 f0 n1 c! a; RSTM32H7的数据手册里面提供了一张非常棒的框图,大家可以方便地查看每个总线的时钟速度和这个总线所挂的外设。这个在大家配置外设时钟分频的时候还是非常有用的,因为外设的时钟分频就是建立在所挂的总线速度(大家直接在数据手册里面检索Figure 1就可以找到)。/ Q: u) p! W8 z
! B: h+ S$ |$ _0 ?6 p' p
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png
& |; _. Y  E. l
" p8 U' a( K  {9 G" E" S
比如我们想得到不同定时器的主频,通过上面的框图,可以方便地获得如下信息:
  V% m0 e$ f" Q5 B) p/ }4 A. D
& F" z+ a* m. C; V' g8 k/ l" q; ASYSCLK(Hz)                     = 400000000 (CPU Clock)' \  l& p0 z, x  e; r

% w( x: [: p) v1 h( JHCLK(Hz)                       = 200000000 (AXI and AHBs Clock)
* @* ]: ^2 F. w
- |2 `1 C6 v  K2 FAHB Prescaler                  = 2
9 J7 X- ^. y5 r$ H  f3 i6 B' z, F: H+ o7 R* B; c
D1 APB3 Prescaler              = 2 (APB3 Clock  100MHz)% Q$ c0 B3 R: m: ]
* ?4 r% E8 I8 q* Q  G
D2 APB1 Prescaler              = 2 (APB1 Clock  100MHz)
8 x" i+ a$ f( m, m$ j8 o
$ e$ V' J# w$ X' O) p6 R' Y- AD2 APB2 Prescaler              = 2 (APB2 Clock  100MHz)
% d- J- Z. p  d3 n
) C6 }8 M" l" I- YD3 APB4 Prescaler              = 2 (APB4 Clock  100MHz)
# ]* O( O; Q  M! Q, d* {
2 G; P/ d  P* Z1 H/ \3 n+ F% A  @& H
! O7 T1 n# q1 t" I& x
: q9 Z" y7 l( c' s) Y5 Q因为APB1 prescaler != 1, 所以 APB1上的TIMxCLK = APB1 x 2 = 200MHz;
. k* z# m( {3 ^( S
" G, t( R! ^7 T; e因为APB2 prescaler != 1, 所以 APB2上的TIMxCLK = APB2 x 2 = 200MHz;4 Y, a1 {( w0 f: Q" Q* X
( L0 x3 A# O3 Q$ s3 ^
APB4上面的TIMxCLK没有分频,所以就是100MHz;
" ]9 H4 A# _# {+ @, b( s! }% @3 {# M8 L& m9 y0 k; X

7 x* E6 g) b0 \$ c* ]+ w
3 n2 y1 h/ Z0 Y( {& DAPB1 定时器有 TIM2, TIM3 ,TIM4, TIM5, TIM6, TIM7, TIM12, TIM13, TIM14,LPTIM1
0 V! Z7 o3 x6 P5 ?" G4 `9 V. Q
( C: ^+ `: {- H: i0 B7 IAPB2 定时器有 TIM1, TIM8 , TIM15, TIM16,TIM17+ P2 `9 c: g  o% p. d

# i3 D: C3 R8 g; l: r0 s. pAPB4 定时器有 LPTIM2,LPTIM3,LPTIM4,LPTIM5+ c# p' D! g6 A4 N( v
6 _5 T2 ?  R! q' ]  T9 G  F: f* A
3.5   STM32H7的AXI线
1 |! Q! V6 c/ H! cA**线在STM32H7中有着举足轻重的作用。高并发性全靠这个总线了,先来看下A**线的框架:
- {& M7 y" V6 ]6 o' s. C* r+ K# T# \$ \; z) i9 i# V: l
3.5.1      总线系统框架
0 u- }/ e5 v$ ^. ]- b4 C下面这个截图比较有代表性,可以帮助大家理解STM32H7总线系统。+ g. K$ R9 p/ r3 E9 j

$ t: [: a& L# i
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

% r2 a. z  t* f9 m  J$ h8 a2 B; _/ h: p4 }0 K( l$ s, s
这个图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。
1 p1 F7 ^5 ^1 I" e
1 _6 ~  Y+ I, A1 yD1 Domain
, N& c5 p8 u6 S# P0 \% |+ k5 {. c6 v8 Y4 ], x/ k6 S& t, Q0 C
D1域中的各个外设是挂在64位A**线组成6*7的矩阵上。2 U8 w7 T1 q$ k

8 ^( m3 c1 I1 x/ [" r8 K6个从接口端ASIB1到ASIB60 l0 a( s2 W! f
外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。
+ @. E: k- {( N, |; q3 m2 j9 D9 K; E# D8 n; V) U) ]
7个主接口端AMIB1到AMIB7, K: V1 A- X* W" y
外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由A**线分支出来的,然后再由AHB3分支出APB3总线。
( J# M. d1 F: ^$ t, C' m9 K$ _3 ?
' K' D6 ?) u/ |8 ?D2 Domain( L. R# T5 ~9 {7 F2 U+ K

" v# f# C" N$ GD2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。% v, t# k7 x/ t6 M; I  w) j

% D+ O7 C6 J& K/ P# v- `7 q& E10个从接口: _; L2 \4 o: c; ^; p1 b
外接的主控是D1-to-D2 AHB 总线,AHBP总线,DMA1,DMA2,Ethernet MAC,SDMMC2,USB HS1和USB HS2。
" y- e5 S. g; D$ H- X0 A6 ^
$ o6 p- ]; |" H- [9个主接口
2 r* e% L: z3 j9 i( F$ x( F外接的从设备是SRAM1,SRMA2,SRAM3,AHB1,AHB2,APB2,APB3,D2-to-D1 AHB总线和D2-to-D3 AHB总线。
2 {2 E7 o  o/ O7 M4 X  ^4 y% t  L
1 j- y, k3 Y* k0 K: D& n7 kD3 Domain8 j* x0 B- F) C* Y" \5 K/ ?
9 ]0 l. m  U/ w& a, s5 V
D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。$ h/ c, e! v; [" i: L9 Y4 l

* Q) T+ P5 B4 d! I/ G5 L3个从接口
3 n  W* B/ `, \  q4 E) H外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。
. M1 C7 B6 B( X
" |  i& h. n! ?6 f' Q8 v2个主接口/ n: u+ W! r9 A' G! j7 O6 ]1 x
外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线。: _; I' ^+ c2 B* Q- b) D3 L

! D1 y' X3 y6 |  V4 Z  U  v8 `7 ?这三个域之间也是有互联的,可以是:: H( s7 y6 D$ W7 {
, N2 g9 w8 ]& y+ ?0 G7 N
D1域到D2域的D1-to-D2 AHB bus
; K& V6 |6 n" B" P1 Z1 n. u- n允许D1域中的主接口外设访问D2域里面的从接口外设。比如D1域里面的DMA2D访问D2域里面的SRAM1。
1 ~% k- U8 e. Y. V' R( K1 H, ~% u8 L7 Z! i0 w
D2域到D1域的D2-to-D1 AHB bus6 g" b2 w7 p7 I$ m8 t( c
允许D2域中的主接口外设访问D1域里面的从接口外设。比如D2域里面的DMA2访问D1域里面的AXI SRAM。. R) {6 I8 u( y
; d# o2 D' o6 a2 z0 o
D1域到D3域的D1-to-D3 AHB bus4 S  V" w1 b0 u0 t" s
允许D1域中的主接口外设访问D3域里面的从接口外设。比如D1域里面的DMA2D访问D3域里面的SRAM4。9 y* Q; }! M5 ~5 a. P. g5 L; U

* S4 S( t7 c" m# M$ f, s$ G2 P3 ZD2域到D3域的D2-to-D3 AHB bus。: [( W5 A. h( E; D* i/ Y
允许D1域中的主接口外设访问D2域里面的从接口外设。比如D2域里面的DMA2访问D3域里面的SRAM4。
, |4 M* X. `+ c4 k  a5 n5 x
) ]" M. \! W; L+ U有了这些知识后,下面我们重点了解A**线矩阵。
: |0 d4 V: V5 ?) V6 s: j9 H' J: P& M% w# `8 l8 U8 s- D# A
3.5.2      AXI线特色4 D: \- {% l( P
AXI支持高频率、高性能的系统设计:9 u% j, N# ^, Y$ `7 g6 ?
( r: H7 }* F: D; {. |4 p4 Q* \
支持高带宽,低延迟设计。# H0 B$ r1 p# _9 E# i+ i& p4 y. R
提供高频操作,无需复杂的总线桥。0 W% M" U2 o1 I* R
满足各种组件的接口需求。
) m% u& V' a: X1 V适用于具有高初始访问延迟的内存控制器。. Z& G2 u2 x! Z5 c% X% i
为互连架构的实现提供了灵活性。7 C, M; C: E; W( X' R0 J
与现有的AHB和APB接口向后兼容。
* k* q# a* s0 @- c/ A1 m. j. I6 o5 V9 E

# m. F0 w0 Z% t/ w1 t1 \! |AXI线的关键特性:
5 D9 n7 U& Y' Y( z2 n% `( u独立的地址、控制和数据线。( s5 v8 m# u+ F. z+ a5 p
支持非字节对齐方式传输。# @8 Z. p7 C- @1 m
基于起始地址的突发传输。
- t4 [- k+ I2 R3 z/ c分开的读和写数据通道,且提供DMA传输。
! q8 D1 E; _* G# F" E" Z$ g8 z支持发起多个地址。
, ~$ x3 w3 }  I9 ~支持无序传输。
4 F, r! d8 O9 D  Y8 T允许添加寄存器,以提供时序收敛。
4 d  h# ]! z, y# a: `  m. c9 I' u& Y6 x* o- s
: x: }, I5 |& c& X( U7 x& ^3 Z% ?4 v2 \
AXI线
! ~; F; k+ g. a. j8 H
" j. A2 ~! h. z6 P8 H( b3.5.3      AXI线简介
, t( Z+ L- X) l: _通过下面的框图,我们再进一步的认识一下A**线。
, a$ L' [& G, Q4 E. B; m: Q! s6 f/ D/ M9 `8 q0 c: S2 v
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

, p& ^4 b  N( t. v7 l
9 f" r4 r& z4 T通过上面的截图,我们可以看到,A**线有6个从接口ASIBs(AMBA slave interface blocks)和7个主控接口AMIBs(AMBA master interface blocks)。9 g1 U/ s6 C: m* r1 |
  q& o, b4 j; g9 n3 ]
针对从接口ASIBs,描述如下:
# N" ]5 b5 X6 l0 P* _: o
9 o, `) P8 D& Z2 Z# g( |
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

7 T. i  G% o1 ^' a0 p& q; q
$ \# M- _& V4 \1 N" L3 q重点注意最后一列,STM32H7参考手册里面原始的描述是R/W issuing,这里将其翻译为读/写发起能力。比如输入通道IN5连接的主控DMA2D,支持的读发起能力是2,写发起能力是1。读发起能力是2该如何理解呢?这里的含义是存在两路读信号同时进行(因为AXI接口有一个FIFO的功能,可供同时进行,更深入的认识有待研究),反映到DMA2D的实际应用中,就是DMA2D同时读取前景色和背景色的缓存区做Alpha融合之类的操作。写操作同理,DMA2D的写发起能力仅支持一路。
7 G' T, D4 o+ A+ O) B, |4 E: V# U0 x8 d* [8 ^1 ?* ~
针对主控接口AMIBs,描述如下:
4 q0 y3 ]8 q/ s) b! w/ F  v2 |# y/ \: p& X- H! f+ M; k3 @
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

9 C5 n/ _/ ?* g2 v6 X5 J  |# g* k: [! }& V) {7 w
跟上面表格的含义是一样的,同样重点注意最后一列,这里多了一个总接收能力(Total acceptance),也就是读发起能力和写发起能力同时执行的情况。
6 Y$ {% I+ o! J- |, a3 l
" c! _% u. @% R3.5.4      AXI线优先级编程) P5 W  o4 w, U1 N2 q% Z
由于存在多个ASIB从接口访问AMIB主控的问题,这就涉及到谁先谁后等问题。所以A**线矩阵就做了一个基于优先级的仲裁方案。每个ASIB接口支持读通道和写通道分别设置,优先级从0到15。数值越大,优先级越高,默认情况都是优先级0。如果有两个传输同时到达AMIB主控接口,那么优先级高的ASIB接口传输优先处理;如果优先级相同的话,根据LUR方案选择(least recently-used最近最少使用情况)。4 q$ \; Z3 t5 B) n
. C8 b$ m' h0 V- a, n. t
大家在实际应用中,可以根据实际情况进行设置,一般情况下使用默认值即可。  G* Z8 M$ }0 }9 _5 F
  w% d# _* i! m0 ~5 T7 Q
3.6   STM32H7的总线互联- g6 }, R+ ~3 w. S
STM32H7的总线矩阵四通八达,但不是任意Bus Master总线主控端和Bus Slave设备端都可以相互通信的:
5 D% ]  C' u" }% ~8 V/ `9 [1 [  P/ A6 ^' ]+ G1 w$ A
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

* X$ U; i6 c& U! K3 b/ U. B5 @: c6 E1 m; `0 z6 k8 |, M7 U
黑色加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。
9 ~& I1 R! }; f
% @  Q7 a6 y2 ^) [7 m- H' i- r3 Q# R访问通路(每个小方块里面的字符)" j2 k# I0 @, k2 m% N

) Y8 ?' J( d* ~; x! }% ]    任何有数字的表示有访问通路。/ L/ Q0 Y( }4 q, w8 }

7 Y* u; P% l* J! M    短横杠“-”表示不可访问。  v6 W5 ~4 ~3 m0 y6 h

% v1 Q9 \' }& \9 P' l6 q# e' z    有灰色阴影的表示有实用价值的访问通路。% m& U  H( O' b4 j! p4 c8 [' `

$ v5 n! R3 o' T/ b1 T表格中具体数值所代表的含义, V  \3 X) p/ u! J; u
5 |& }2 k; Z7 p9 f
    D=direct
: G6 Y$ s" k9 O$ O- g( P) I" V( E% Z8 Y/ B4 J$ I( V, q# U, d4 L' C
    1=via AXI bus matrix
7 U, |; V2 e1 V  `" A+ ~: M( U
( V: ^9 }; n- X2 d& ~# \$ h    2=via AHB bus matrix in D2
) D' c) _# t1 v, i1 o! O4 t# _( _: t6 E+ U) E4 g1 l
    3=via AHB bus matrix in D39 _8 ^3 c# j0 B, U, I% H
! D+ s6 K2 a3 B) P/ z
    4=via AHB/APB bridge in D10 ?& r0 M  k0 B1 o

/ J) w, I/ P4 z1 e    5=via AHB/APB bridge in D2
0 h3 w* r1 |$ Y1 u+ k3 {, ~& |. |5 [/ P. ^
    6=via AHB/APB bridge in D38 J* Q( }" k! y+ I) L; j( `! A

% X! c1 x" @7 h* l$ C# l    7=via AHBS bus of Cortex-M7
* Z: j  F$ @) M- N* }7 @
1 u/ b8 S% V( h, t1 @! r    多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。" I# S; B+ Y' S2 T
5 V5 l: ?" z) i  C& k2 u8 B" [6 e, C
总线访问类型) b8 L  K5 ?/ d# a1 m+ m6 K
" ], H$ J3 e" n* g1 U0 E, k
普通字体表示32位总线。
, H. z5 ~$ n6 Z2 Y( u: O) G
1 t3 X. H, N: l- _8 Z斜体表示32位总线主机端/ 64位总线从机端。
# r& {8 P- w6 [6 r
3 c& M" Q) i5 `* i粗体表示64位总线。
2 Z9 D# P3 T- ^0 l2 }4 d# M- g" e, F2 K9 E# _
当前要对这个图有个了解,后面章节讲解各个外设的时候要用到,比如DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。
) J$ u' t  H$ X+ W) n
, L$ D1 Q1 v$ L) Q* {3.7   STM32H7的FLASH
$ Z9 t- [7 I6 R# j  i首次学习STM32H7,要掌握以下几点认识即可:# t6 q' q3 c; z. B- G
/ C- p' |+ T0 r6 J/ O& g
1、双BANK,每个BANK的带宽都是64bits,如下图所示:
# p, v# Q6 |, m) e+ `' {
+ I5 ^0 W, j, W" W3 Q
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

/ o+ d5 D2 |! t1 ]4 a( Y/ c9 u
! r# _5 n1 z9 h2、H7中Flash的延迟和主频关系。% n) m! R& w) S+ y) B  v6 u
8 d  p- L4 J( a; Z
H7中已经没有F1和F4系列中的ART Chrome加速,通过H7中的Cache加速即可。具体延迟数值和主频关系如下:
: }8 v0 P! g8 {+ A# D" x$ u. J9 }% d+ ~" I6 t6 S
aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDE5MDQvMTM3OTEwNy0yMDE5.png

/ r' b0 ?2 V+ D
$ Y( |  ~8 F7 h- R对于上面的表格,大家可以看到,当延迟等待设置为0的时候,即无等待,单周期访问,速度可以做到70MHz。增加1个Flash周期后,访问速度可以做到140MHz。当增加到3个或4个Flash周期后,最高速度可以做到225MHz。
. i5 z4 e: b# w5 K
- B! L( i/ {; x7 ?' ~: B3、Flash编程操作(写)最好以256bits为单位进行,应用中也可以小于256bits,但是容易造成ECC校验出问题,所以不推荐。Flash读操作支持64bits,32bits,16bits和8bits。
5 m7 m+ V% N# x+ w* X& I$ U# U$ _; U% |3 V
4、Flash支持ECC校验,每256bits配10bit的ECC位,可以检测到1个bit并纠正或者检测2个bit。随着芯片的制造工艺水平越高,带电粒子能产生的位翻转就越多,此时的ECC是必须要有的,一般可以纠正1-2个bit。安全等级高的Flash类存储器和RAM类都是必须要带ECC的。. D8 n+ ?+ P5 W. a5 w7 m# I5 \

3 y1 u/ f2 @# [5 [8 a/ m- ^7 D: C7 T2 ~2 {
3.8   STM32H7的RAM; S: h2 t/ `  ~5 k4 V
(注,学习本小节,优先回顾本章节3.5.1小节的框图,另外H7的RAM区也是支持硬件ECC的)
# ^0 N# q  b, T1 H3 l1 O6 T
$ n. m6 H4 t- s/ t! @STM32H7的RAM区分为好几个部分,下面分别进行说明:
+ T2 t" O5 T4 H/ h& C! h0 V6 V
/ V- _# Y5 e& o TCM区( h) _5 b# m* t" z4 \) y$ h# p
8 K9 o0 F2 S* L
TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。
/ q; a' z" ~- ]) t) ^' O% q$ T1 z" K( C- j2 B' W8 m  |
速度:400MHz。
. ^( L/ x1 r: V) p
0 R: R; L! c/ h, ^5 ^( \DTCM地址:0x2000 0000,大小128KB。
. R$ u/ O) q( J8 \  s% F0 @
! N# u- r( P. ]; QITCM地址:0x0000 0000,大小64KB。
  a* X6 g! w% T  F; ^0 H' L/ M0 Z" z& E. n7 [) T4 t& d! H1 B
AXI SRAM区3 S) Q4 T, I& z

; u) ]! @* I- W% a6 U位于D1域,数据带宽是64bit,挂在A**线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。
4 f- ]4 S" `( y2 I! [% ^% C5 d; {1 ]$ H0 J+ g
速度:200MHz。
: ?( T( \( d. C1 R8 f9 d* s/ B; U9 s* @& T1 ~
地址:0x2400 0000,大小512KB。4 z1 p+ ~8 ~) |# q; k
9 ?1 v% P  L% `) R6 }) C
用途:用途不限,可以用于用户应用数据存储或者LCD显存。
; A4 v* T, M: x- J& p; e
$ g! T: n& \: W+ D# m2 g, q' @ SRAM1,SRAM2和SRAM3区* U- ?+ Y) I8 d
+ K! w" F5 ^2 l2 _0 ^* d, W7 V
位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。
7 H1 J) W7 \# n, f' y$ ?9 {* c6 A6 S, i+ F
. o9 v* K/ ^! x' i6 y3 E速度:200MHz。
/ g+ }2 _; I6 I
& `4 \! I2 `/ n7 l# f/ kSRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。, r2 e% I( `( h  D. g, c* |
9 e9 ]0 u' F: u4 {5 {' {) l+ v
SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。
$ W( g/ h2 H, Y/ Q, ]9 t' p
8 f6 A2 @* {5 V8 x) eSRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。5 w* I$ q& _9 ~0 ~9 h2 W

* G- p$ a# [7 Q, e0 \; U, v SRAM4区
) Y4 F, I7 O: y9 z. }" B, f: h1 d" U3 J2 z! n
位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。
4 Y. W( j6 h( A+ d$ T& \; S! D. r9 l$ x) t3 r. c
速度:200MHz。
8 |% \; D) v6 {/ M' x
; a9 V: @) ~3 |& J地址:0x3800 0000,大小64KB。2 ^( F2 \: e: y1 K7 D% }( q
9 e6 f0 ]8 ?! g* ]1 m4 W" B) i4 N
用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。
5 W; R! \& I( @/ ~7 J2 Y8 x# P& D* I" S! t' q. T3 n3 e
Backup SRAM区
: V; [! c8 c( b$ d* S! e: K9 ~1 N, U. ^9 c3 K" E# N3 I
备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。
: I  N; |0 d2 o  ]+ `# h8 Y$ Y" S: F9 X
速度:200MHz。) ?% h% I# j4 P+ w
* [1 C% o6 o( K0 c" d$ y8 {& o8 T
地址:0x3880 0000,大小4KB。' p4 s3 y- @# S. }# H
- D! _5 x6 Y2 F: [& ]3 S4 J! m, e! H+ [
用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。* B; B' _' `3 V' `7 Z# m) ~& _+ p3 J

2 x$ w- g6 m; |  o" x3.9   总结
2 L# \- k$ I, n, N& l本章节就为大家讲解这么多,让大家对STM32H7有个整体的认识,后面章节将逐个进行学习。
) m6 V: ?. u2 |9 i
* N, W6 }4 u4 W* i8 R7 [$ q% `( g4 r7 O- \* s2 ^6 s

. P+ d6 z, h+ H5 B$ E: l# d/ j
收藏 评论0 发布时间:2021-12-18 17:43

举报

0个回答

所属标签

相似分享

官网相关资源

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