
本文为大家介绍STM32H7带的ITCM,DTCM,AXI SRAM,SRAM1,SRAM2,SRAM3,SRAM4和备份SRAM的基础知识。, I; f9 v! v& C3 A0 J5 z( u$ p* I ; F& Y6 U+ V% U6 u 9 [; F7 Y/ ]$ }- Z, U9 u 上图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。 1、 ITCM和DTCM 这两个是直连CPU的。' [% c' @3 ]6 ]" ~! }. O 2、 D1 Domain* z5 a8 x! \: }2 ~* Z D1域中的各个外设是挂在64位A**线组成6*7的矩阵上。 4 }3 R9 o. \$ |2 M _+ t, f 6个从接口端ASIB1到ASIB6,外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。 7个主接口端AMIB1到AMIB7,外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由A**线分支出来的,然后再由AHB3分支出APB3总线。! Z- X. G; K" z$ z) f 3、 D2 Domain+ H5 X6 O' _6 O4 ?' O( i ! Q4 j4 G" a1 X T, } D2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。7 ?. N* F6 n0 f- d8 p7 I 10个从接口,外接的主控是D1-to-D2 AHB 总线,AHBP总线,DMA1,DMA2,Ethernet MAC,SDMMC2,USB HS1和USB HS2。 0 P6 m; M, r: l 9个主接口,外接的从设备是SRAM1,SRMA2,SRAM3,AHB1,AHB2,APB1,APB2,D2-to-D1 AHB总线和D2-to-D3 AHB总线。 4、 D3 Domain % j- o4 h2 A" `$ |. I; Q' f( C D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。+ _7 v1 J* I- [" y% E: C& M 3个从接口,外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。 2个主接口,外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线 **各块RAM特性**4 u$ d2 w+ z* s+ d" |( j 各块RAM的特性对比如下,特别注意他们支持的最大速度和容量大小。 . I0 h0 }/ @, A **TCM区** : m% M4 y5 B; D& B- E TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。 速度:400MHz。DTCM地址:0x2000 0000,大小128KB。ITCM地址:0x0000 0000,大小64KB。 9 o0 M" S3 s2 t5 r **AXI SRAM区** 位于D1域,数据带宽是64bit,挂在A**线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。' Q7 }) M1 K2 w0 n2 ^4 S ) m" h8 C( y4 q z 速度:200MHz。地址:0x2400 0000,大小512KB。用途:用途不限,可以用于用户应用数据存储或者LCD显存。 2 `, }1 g# Z, D **SRAM1,SRAM2和SRAM3区**: N& d/ w8 W* |/ |* n$ R ) r5 }' B! ?6 d 位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。 : l* f, u/ o6 L. y- u 速度:200MHz。 SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。5 z; }* A2 T! J( k0 C* ? + S( Y( [ i9 z: e( c }. g, d SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。 SRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。% l% B% ~! |) c **SRAM4区** 位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。 ]4 A" j' {; t- Y) W+ C 速度:200MHz。) h7 D: J. E* u. h% T& U9 n" x + v, ^8 E! I$ ?) A 地址:0x3800 0000,大小64KB。 0 Q2 P+ H3 i/ M& f9 U8 @ 用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。 , y" j1 j) z2 a7 f+ G8 ^: n4 q **Backup SRAM区**9 J/ _1 Q1 e- P+ i5 ?% m% L: O ! A3 U& Y0 d+ i8 d! @ 备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。; n" V. ` k. I/ G% y 速度:200MHz。 地址:0x3880 0000,大小4KB。7 _2 T0 b$ D5 r9 e- f! c 用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。 RAM的时钟问题6 v% w1 G/ ~& ?" y8 B! s 正常情况下,系统上电后,CPU要访问的外设是需要使能对应的时钟位,但是下面这几个,CPU上电即可访问,而且芯片没有对应的寄存器使能位。) K G- M$ Y1 Q+ `) L$ V 6 o% t$ _4 J3 K5 f# x 7 D- R0 V1 O+ |8 c, o5 \7 h8 m 也就是说AXI SRAM,SRAM4,ITCM和DTCM可以在上电后直接使用。而SRAM1,SRAM2,SRAM3是需要使能的,但是实际测试发现,不使能也可以正常使用。不过,建议用到时候开启下时钟,防止意想不到的问题发生。 **RAM的DMA问题**0 f' K$ D$ c, Z5 V7 ^; Z # ?. {( n( a6 D1 E4 T 先看下面的Bus Master总线主控端和Bus Slave设备端的控制互联:  加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。 访问通路(每个小方块里面的字符)& R& n, F- |5 F9 W- Z) P" K 任何有数字的表示有访问通路。 短横杠“-”表示不可访问。 有灰色阴影的表示有实用价值的访问通路。 表格中具体数值所代表的含义 D=direct, 1=via AXI bus matrix, 2=via AHB bus matrix in D2,. S3 f" S( _9 K0 Z 3=via AHB bus matrix in D3, 4=via AHB/APB bridge in D1, |& k* u4 R0 p. T0 } 5=via AHB/APB bridge in D2,! |% d T0 }1 U" `) e 6=via AHB/APB bridge in D3,, I7 E8 I+ u' x% G- ] 7=via AHBS bus of Cortex-M7,- J* P8 d# M5 T; ~( x8 K( N/ u 多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。: K9 Z$ X9 F! h; t J2 b6 |2 n% P' O J* L 总线访问类型9 g- i! T+ h, l# U 普通字体表示32位总线。 斜体表示32位总线主机端/ 64位总线从机端。7 j5 x6 R) @5 O i 粗体表示64位总线。 7 |$ t+ y( g0 J( d6 `) _% l# j 通过这个总线互联图,要了解到下面三个重要知识点: DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。2 a9 U% `% e; x% d" \ 2 q! x. [; d: ?( Y4 m! e" ] AXI SRAM,SRAM1,SRAM2,SRAM3不支持BDMA,支持MDMA,DMA1和DMA2。 SRAM4支持所有DMA,即MDMA,DMA1,DMA2和BDMA。 |
实战经验 | 关于STM32H7使用LL库生成ADC代码工作异常问题说明
实战经验 | 关于STM32H745的MC SDK电机控制工程问题的解决办法
【H745I GUI】1.GreenHouse 灯光控制
【Wio Lite AI视觉开发套件】+移植TensorFlow Lite
STM32H745I-DISCO脉冲宽度调制(PWM)
STM32H745I-DISCO串口通信,输入输出
拷打cubemx【002】——自定义还需基于芯片的工程
STM32硬件结构学习
STM32中BOOT的作用
STM32H7的TCM,SRAM等五块内存基础知识