|
本文为大家介绍STM32H7带的ITCM,DTCM,AXI SRAM,SRAM1,SRAM2,SRAM3,SRAM4和备份SRAM的基础知识。 ' E7 N1 M2 @( Z: l/ v+ u 上图可以方便识别总线所外挂的外设,共分为三个域:D1 Domain,D2 Domain和D3 Domain。$ g3 K, E/ S0 W! K% W; q) O: q0 t 1、 ITCM和DTCM ! l X/ j! j7 D" J$ B1 Y 这两个是直连CPU的。& N4 k6 q3 N) E) \% w# |8 y9 [ 5 o% n4 X$ m) s4 Y6 b6 N9 X 2、 D1 Domain + V/ B9 U- e# D$ o+ _$ C( Z* ^ D1域中的各个外设是挂在64位A**线组成6*7的矩阵上。( B# u( L$ T3 M! N0 U* C8 w- e' ] 6个从接口端ASIB1到ASIB6,外接的主控是LTDC,DMA2D,MDMA,SDMMC1,AXIM和D2-to-D1 AHB 总线。 % t+ _" g0 I8 u/ r% d 7个主接口端AMIB1到AMIB7,外接的从设备是AHB3总线,Flash A,Flash B,FMC总线,QSPI和AXI SRAM。另外AHB3也是由A**线分支出来的,然后再由AHB3分支出APB3总线。 ; x7 v% c7 w3 f0 \1 g* F 3、 D2 Domain 9 D9 s; F1 r- \! o D2域的各个外设是挂在32位AHB总线组成10*9的矩阵上。5 m, G, z3 p2 [* z 10个从接口,外接的主控是D1-to-D2 AHB 总线,AHBP总线,DMA1,DMA2,Ethernet MAC,SDMMC2,USB HS1和USB HS2。+ J. X: D5 A$ v1 p, K. q+ Z( j/ q 9个主接口,外接的从设备是SRAM1,SRMA2,SRAM3,AHB1,AHB2,APB1,APB2,D2-to-D1 AHB总线和D2-to-D3 AHB总线。1 F4 }, U E# W I7 B$ c ' Z; v a& y* M% |1 A 4、 D3 Domain5 |" Q5 H/ l2 i5 R0 J" {/ A D3域的各个外设是挂在32位AHB总线组成3*2的矩阵上。 ' a# \# u! V$ ?: \" j 3个从接口,外接的主控D1-to-D3 AHB总线,D2-to-D3 AHB总线和BDMA。 2个主接口,外接的从设备是AHB4,SRAM4和Bckp SRAM。另外AHB4也是这个总线矩阵分支出来的,然后再由AHB4分支出APB4总线 - ^+ @' J% x9 {. {7 a j **各块RAM特性** + E1 N% T3 x o9 P. I4 H 各块RAM的特性对比如下,特别注意他们支持的最大速度和容量大小。 , o7 q5 q; [% {2 c9 s9 [8 P$ [ **TCM区** TCM : Tightly-Coupled Memory 紧密耦合内存 。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。 ) B) m+ e7 K8 E0 d- J1 H 速度:400MHz。DTCM地址:0x2000 0000,大小128KB。ITCM地址:0x0000 0000,大小64KB。 6 @ B" W! S" v# V( P; L f( @+ S* Z **AXI SRAM区** 位于D1域,数据带宽是64bit,挂在A**线上。除了D3域中的BDMB主控不能访问,其它都可以访问此RAM区。 速度:200MHz。地址:0x2400 0000,大小512KB。用途:用途不限,可以用于用户应用数据存储或者LCD显存。4 i6 @" |& b, o- }) x; a! a' L : z; `; w; z4 M) e **SRAM1,SRAM2和SRAM3区** / T% a& ^+ y5 A% a4 i* J( T 位于D2域,数据带宽是32bit,挂在AHB总线上。除了D3域中的BDMB主控不能访问这三块SRAM,其它都可以访问这几个RAM区。4 h H& U7 z& B3 U- | P8 K, H5 k 速度:200MHz。 SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。; h3 ^5 F" f9 C; z3 K6 X2 ]8 ^ SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。$ h4 }; z( X; {4 @; ~7 d SRAM3:地址0x3004 0000,大小32KB,用途不限,主要用于以太网和USB的缓冲。 V7 n# Q/ R+ r " q# {1 m0 c6 y. \) y, n; o% h **SRAM4区**# r3 t" t! ~: R/ _! l ` 位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访这块SRAM区。 速度:200MHz。 , p) G' w; D) m+ X2 {3 i 地址:0x3800 0000,大小64KB。 用途:用途不限,可以用于D3域中的DMA缓冲,也可以当D1和D2域进入DStandby待机方式后,继续保存用户数据。 ) a& Y C3 ?! d! o* E% e( W **Backup SRAM区** 备份RAM区,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM区。 速度:200MHz。% q, G: w7 H' y 地址:0x3880 0000,大小4KB。9 s! T: q* m9 U- F 用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。 RAM的时钟问题6 K; j+ n) [9 s9 x ) s: ?- q; c+ w2 d& X4 S* G; Y 正常情况下,系统上电后,CPU要访问的外设是需要使能对应的时钟位,但是下面这几个,CPU上电即可访问,而且芯片没有对应的寄存器使能位。1 |/ l+ y4 p/ R2 [$ g, I  / k! b7 Q# _9 x1 j 也就是说AXI SRAM,SRAM4,ITCM和DTCM可以在上电后直接使用。而SRAM1,SRAM2,SRAM3是需要使能的,但是实际测试发现,不使能也可以正常使用。不过,建议用到时候开启下时钟,防止意想不到的问题发生。 **RAM的DMA问题**( ^4 x7 t. e# O" n 3 E2 D- ?$ o5 W3 Y6 j! @- V) a! {& a 先看下面的Bus Master总线主控端和Bus Slave设备端的控制互联: * l5 g6 {9 G& P! g5 H# u- J ; B/ \$ z5 H( B) n8 [) Y 加粗字体是64位总线(ITCM,DTCM,Flash A,Flash,AXI SRAM,FMC等),普通字体是32位总线。 访问通路(每个小方块里面的字符) 任何有数字的表示有访问通路。: D+ D6 T& Q# ~, D3 b% f5 o9 N 短横杠“-”表示不可访问。, a5 \! ]. O! G2 g; g- h 有灰色阴影的表示有实用价值的访问通路。 表格中具体数值所代表的含义 D=direct,: b& d( d9 h8 m% ?0 _1 ] 1=via AXI bus matrix, 2=via AHB bus matrix in D2,/ N9 Q6 h8 C+ P# `7 P6 S4 I 3=via AHB bus matrix in D3,' d- H+ U. ?! X; h( u7 z 4=via AHB/APB bridge in D1, 5=via AHB/APB bridge in D2, 6=via AHB/APB bridge in D3,! D3 `( _. J4 R. ~ 7=via AHBS bus of Cortex-M7, 多个数值组合 = 互连路径以数字的顺序经过多个矩阵或/和桥。9 F7 M; U! Z/ _) g* W' }, J9 S 2 @4 [: l! {6 S+ i- b) } 总线访问类型' L- b* \: N/ R# b' P' t# y# g/ l2 d# a" Y 普通字体表示32位总线。+ j X" B+ f: t- N. A# F; Y' V$ e % _% D9 q# @- w, M 斜体表示32位总线主机端/ 64位总线从机端。 粗体表示64位总线。1 p3 j. a8 _! p$ _, t+ { 通过这个总线互联图,要了解到下面三个重要知识点: DTCM和ITCM不支持DMA1,DMA2和BDMA,仅支持MDMA。 AXI SRAM,SRAM1,SRAM2,SRAM3不支持BDMA,支持MDMA,DMA1和DMA2。 2 y$ q- J% t2 w! _6 \; U SRAM4支持所有DMA,即MDMA,DMA1,DMA2和BDMA。 |
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
【福利三:逢7发帖赢大礼】使用MPU6050模块、img_dsc、img_btn机制实现一些简单有趣的动画效果
【福利三:逢7发帖赢大礼】使用arc弧形拉条控件控制PWM舵机及使用SPI3接口操作NRF24L01模块进行无线通信
【福利三:逢7发帖赢大礼】调试nucleo-WBA65RI工程测试样板的一些心得
【福利三:逢7发帖赢大礼】lv_timer和BME680实现温度、湿度、气压数据读取
【福利三:逢7发帖赢大礼】成功利用STM32H743VI片内SRAM12和DTCM空间(完全胜利)
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
【福利三:逢7发帖赢大礼】使用惠勤致远STM32H743VI开发板+ST7796并口彩屏移植LVGL9.5并分享一些额外内容
【 逢7发帖赢大礼】7、TouchGFX中实现云彩流动效果
微信公众号
手机版