1. 引言# W6 }7 h! x- m# t c4 H1 x 某客户在项目开发中用到 STM32L462 的 SDMMC 接口去进行 SD 卡的读写,发现用 SDMMC中断、 Polling 查询的方式都可以进行连续的读写交替循环操作,但是用 DMA 的方式进行该操作时,发现不能进行多次的读写。 4 u- j+ Y0 C- G. ^ 2. 原因分析 客户提供了它的硬件电路板和部分原理图: $ a3 a8 U! g. ^# V2 H% S 8 ^3 l" J! X0 c7 h2 a 2.1 客户现象复现: 2.1.1 CubeMX 的配置 CubeMX V6.3.0 中关于 SDMMC 外设的配置如下:* v1 q' Y% O* m- J 图2. SDMMC 在 CubeMX 中的配置 $ `# b. k& R# x0 D; E 这里结合客户的原理图,还要配置一下 PC13 即给 SD 卡供电的引脚,要不然,后面调试 SD 卡时,MX_SDMMC1_SD_Init();初始化过不了。( u2 m# _3 }* x . s% B2 _$ i8 I; a' Y* k! [ $ |) p; w" V' X2 V+ U9 O/ S5 M$ U 其他的配置保持默认,系统时钟源选择 HSI 经过 PLL 锁相环,SYSCLK=64MHz,SDMMC1 的时钟为 48MHz,分频系数 SDMMCCLK clock divide factor 为 0,但是参考手册公式,SDMMC_CK = SDMMCCLK / [CLKDIV + 2]。所以 SDMMC_CK 频率这里是 24MHz。 8 [" _) c& Q2 _' _3 n ' m5 E1 t* X: `! O; q CubeMX 配置好后,直接生成代码。 $ |' _# D% } w- {' e1 n5 k " A( c* O0 @7 p3 N7 U 完整版请查看:附件 . f2 u' s" @9 z3 C / O0 N' z) P- \8 l1 j% u* ?5 L |
LAT1071 STM32L462REI6 SDMMC DMA Read_Write_v1.0.pdf
下载2.03 MB, 下载次数: 9
基于STM32U5系列TIMER+DMA+DAC应用经验分享
基于STM32双定时器+ADC+DMA实战经验分享
基于STM32 DMA传输的两个问题释疑
基于STM32的Timer 结合 DMA 2D 通道实现不同波形输出
TIM DMA burst 输出变频 PWM 波形
基于STM32的 DMA 实验经验分享
基于STM32H563演示UART+DMA经验分享
基于STM32L4R9 的QuadSPI Flash 通讯速率不理想经验分享
基于STM32 DCMI 的带宽与性能经验分享
基于STM32 DAC+TIMER+DMA经验分享