STM32H7 FatFS f_write fails at low-level disk_read operation
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.
