2025-09-01 8:16 AM
Hi ST Community.
I am using an STM32H725IGK MCU on a custom board. My board has a uSD card slot connected to the SDIO pins, and I am using SDMMC1 peripheral. I am also using FatFS to use a filesystem on the uSD card.
I can operate the SD card properly most of the time. I can mount, format, create files and folders, and read and write to files. However, sometimes, some operations fail. Normally, it's either f_write or f_lseek. They fail at the low-level disk_read() operation. I do not understand why.
I will share my system configuration:
- Clock MUX:
- SDMMC Parameters:
The clock divide factor of 2 gives 32 MHz. I also tried setting the clock to 16 MHz and 8 MHz, but the problem persists.
- SDMMC GPIO settings:
I also adjusted the output speed of the pins to guarantee the signal integrity is good, but the issue remains.
- FatFS defines:
- FatFS Advanced Settings:
My system also utilizes FreeRTOS, and I use semaphores to ensure that only one task accesses the SD card at a time. I have the FS_REENTRANT disabled.
I tried SD cards from different brands and different sizes. It seems that 16 GB cards work better, but still fail. The 32 GB fails more often.
Is there a limitation on the number of bytes that I can use on f_write or f_lseek? Is there a problem with my configuration that I'm not seeing? Do I have to use multiples of the maximum sector size, 512, in my configuration?
Any help is deeply appreciated. I've been stuck with this issue for a while now.
2025-09-01 9:52 AM
Hi,
just 3 notes :
- for bigger cards ( > 16GB) exfat should be enabled, because these cards usually are in exfat format.
- dont format the cards, usually
- pin setting for all pins to the card : try medium or med./high speed , and pullup ON .
2025-09-02 12:29 AM - edited 2025-09-02 12:32 AM
Dear AScha.3, thank you for your reply.
- I started with exFAT first, but it still had the same issue.
- Why not format the cards? Can you explain why it is important? I usually format on Windows, and if needed, when the card is inserted, I also format using the FATFS function.
- Currently, I'm testing with 8 MHz and with low speed to guarantee that the signals are perfectly squared and well formed. Still, the problem remains. I have hardware pullups.
Best regards.
2025-09-02 1:09 AM
Hi,
>Why not format the cards? Can you explain why it is important?
usually every new card is formatted, to the best type of format variants for this card.
So formatting without any need makes card uasully worse, or best case , same as before.
And on windows (i would not trust any product from MS ) should be used the "official" SD-card format program,
https://www.sdcard.org/downloads/formatter/
>> It is strongly recommended to use the SD Memory Card Formatter to format SD/SDHC/SDXC/SDUC Cards rather than using formatting tools provided with individual operating systems. In general, formatting tools provided with operating systems can format various storage media including SD/SDHC/SDXC/SDUC Cards, but it may not be optimized for SD/SDHC/SDXC/SDUC Cards and it may result in lower performance.<<
So now imagine, what the mkfs will do "optimized" format for the card...
+
> signals are perfectly squared and well formed. Still, the problem remains.
So i would try a program version, where multitasking is stopped , while card access running;
just to verify, it has nothing to do with task switching etc.
Because usually read/write problems are coming from hardware issues, so you get them always/often.
Having only sometimes an random error indicates more likely a software problem.
2025-09-03 6:06 AM
2025-09-03 11:38 PM
Hello,
Can you try with 50MHz clock ? It's the recommended clock for High speed SD card.