Skip to main content
AScha.3
Super User
May 12, 2021
Solved

H7A3 SDMMC 2 not working, system stall at MX_SDMMC2_SD_Init().

  • May 12, 2021
  • 3 replies
  • 1175 views

Hello, when testing the SDcard on SDIO 1-bit interface , we see a big problem here:

when card in slot, cpu stall in MX_SDMMC2_SD_Init() , on debug can see: card info sector count, block size etc. read seem ok, but then waiting for response -- forever. (timeout -1)

SDclk set to 200/(4*2) MHz, 1-bit mode; tried different things: cache on/off, clk faster/slow, extra cap close to card holder, different cards, core volt.scale 0/1; now i am out of ideas, why it is not working. looked also H7A3 errata, but there i see no problem with SD .

Stall/wait is here, in init :

 while (!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_DATAEND))

so: what is wrong? do i something wrong? or is something missing?

This topic has been closed for replies.
Best answer by AScha.3

Thx for your response.

AN5200 was on my list...and i use STM32CubeIDE, Version: 1.6.1, cube  6.2.1-RC2 ;

with update to actual version and after "right" setting of pins got it working now.

Read-speed about 3,4 MB/s , 1bit mode;

setting: 200Mhz clk, div 2 (gives clk/4 -> 50MHz SDHC standard; pins CMD+D0 : pullup, speed medium ("FAST" on H7A3 ).

With same setting also running on STM32H753 now.

and on my small STM32F411 board, 100MHz clk, div 0 (!) , 4 bit mode, all pins: pullup and high speed, get about 8MB/s read from microSD. =)

(speed is effective speed, including f_read() and without DMA , tested with 10KB block reading)

just what STM could do better: when using cube -> in RCC LSE clock initial setting : LSE drive -> high drive cap. This would save a lot of people wondering, why cpu not always start or stall .

and here, for SDMMC , setting for pins : pullups and medium/fast speed setting.

regards

Alfred

3 replies

ST Technical Moderator
May 19, 2021

Hello @AScha.3​ and welcome to the STM32 Community,

I added the adequate topics to your question in order to increase its chance to be reviewed by our experts.

Which CubeMX and CubeH7 package version are you using ?

If possible to share your ioc file or the source code to check more this behavior.

Have a look at this AN5200 "Getting started with STM32H7 Series SDMMC host controller", which contains typical examples and it may help you on the SDMMC configuration.

Imen

In order to give better visibility on the answered topics, please click on 'Best answer' on the reply which solved your issue or answered your question. Thanks
AScha.3
AScha.3AuthorBest answer
Super User
May 20, 2021

Thx for your response.

AN5200 was on my list...and i use STM32CubeIDE, Version: 1.6.1, cube  6.2.1-RC2 ;

with update to actual version and after "right" setting of pins got it working now.

Read-speed about 3,4 MB/s , 1bit mode;

setting: 200Mhz clk, div 2 (gives clk/4 -> 50MHz SDHC standard; pins CMD+D0 : pullup, speed medium ("FAST" on H7A3 ).

With same setting also running on STM32H753 now.

and on my small STM32F411 board, 100MHz clk, div 0 (!) , 4 bit mode, all pins: pullup and high speed, get about 8MB/s read from microSD. =)

(speed is effective speed, including f_read() and without DMA , tested with 10KB block reading)

just what STM could do better: when using cube -> in RCC LSE clock initial setting : LSE drive -> high drive cap. This would save a lot of people wondering, why cpu not always start or stall .

and here, for SDMMC , setting for pins : pullups and medium/fast speed setting.

regards

Alfred

If you feel a post has answered your question, please click on " Best Answer ".
ST Technical Moderator
May 20, 2021

Hi @AScha.3​ ,

Really glad to know you overcame this problem :)

Thank you for all the details you provided. I will let our teams know about your suggestion.

Thank you once more for your contribution.

Imen

In order to give better visibility on the answered topics, please click on 'Best answer' on the reply which solved your issue or answered your question. Thanks