
先来一张中文参考手册中的系统架构图,可以看到,STM32H7系列包含两个SDMMC控制器:SDMMC1和SDMMC2。 r2 k9 C" }0 E* t- x; L ![]() 在芯片手册中的架构图能够更直观地看出来: ; o: S( s( p/ l: _9 Q ![]() SDMMC内部集成一个IDMA,H7系列有很多总线主设备,包括DMA1、DMA2、BDMA、MDMA、DMA2D,还包括IDMA和以太网DMA这种专用DMA。% G: y3 _# i0 C8 o+ B ![]() 查看系统架构图和关于总线主设备的描述: SDMMC1和SDMMC2相比,和SRAM1、SRAM2都没有构成总线矩阵,只能访问AXI SRAM区域的内存。/ I+ g5 ^8 P3 H9 i4 A ! k1 u6 `$ q" O/ p1 u; ? ![]() ![]() 3 _: l, _: ?$ }9 g , ~2 f1 X& w7 A2 d 所以我们的使用IDMA进行SD卡的访问时,buffer必须放在AXI SRAM上面。1 B$ o8 F3 Z; J1 B4 M 4 s3 D+ e6 A# H/ B O 观察SRAM的分配,可以知道AXI SRAM分布在从0x24000000开始的512K区域上: ![]() , R; t; `6 J$ |. d ![]() 那么我们第一种情况,在编译器上只描述一部分内存DTCM: ![]() 5 D; ^+ y3 i- Z" N; J 在进行变量定义的时候强制指定地址:
可以看到指定的两个数组已经存在了AXI内存上,其他的都是DTCM内存上:8 C$ N8 \) U7 f2 }) K, i ![]() 4 ^) E) [) }2 j: V 如果我们的工程配置上直接分配好了内存区域,这里使能了DTCM和AXI-SRAM内存:! F9 K, v/ o% L: B( ~1 ~( ~ ![]() 这里我们并没有强制指定地址:, X3 X" z7 Q5 x* Z& ?( f) m
但是因为SRAM2的size要大一些,所以优先分配到SRAM2: ![]() 所以也是被分配在了AXI内存区域上。! k8 D( ]8 O& ?3 L. s ———————————————— 版权声明:小盼你最萌哒 |
实战经验 | 关于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等五块内存基础知识