cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H7 FatFS f_write fails at low-level disk_read operation

rtonet
Visitor

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:

rtonet_0-1756738551053.png

- SDMMC Parameters:

rtonet_1-1756738631926.png

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:

rtonet_2-1756738664513.png

I also adjusted the output speed of the pins to guarantee the signal integrity is good, but the issue remains.
- FatFS defines:

rtonet_3-1756738932423.pngrtonet_4-1756738954559.png

- FatFS Advanced Settings:

rtonet_5-1756738990487.png

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.



 

1 REPLY 1
AScha.3
Super User

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 .

If you feel a post has answered your question, please click "Accept as Solution".