AnsweredAssumed Answered

Problem with FatFs and STM32Cube_FW_F7_V1.6.0 (Possible STM32Cube Bug)

Question asked by Lori B. on Jan 30, 2017
Latest reply on Apr 27, 2017 by lewis.william

Hi all! I'm trying to interface a STM32F7 with an 32 GB SDHC card, using the latest firmware libraries.

I'm using a STM32f746G DISCO and I started from the project under STM32746G-Discovery/Appllications/FatFs/FatFs_uSD..

 I wrote a simple function and I executed it in the main after linking the driver and mounting the disk, to test reliability. The function is the following, where I write 1000 files in a loop..

 

ErrorStatus Test(void)
{
FIL MyFile;
FRESULT res;
uint32_t byteswritten;
TCHAR StringPath[100] = {0};
cont=0;

while(cont < 1000)
{
sprintf((char*)StringPath,"File%d.fil", cont);

res = f_open(&MyFile, StringPath, FA_CREATE_ALWAYS | FA_WRITE);
if(res !=FR_OK)
return ERROR;

res = f_write(&MyFile, (void*)TempBuffer, sizeof(TempBuffer), (void *)&byteswritten);
if((byteswritten == 0) || (res != FR_OK))
{
return ERROR;
}

f_close(&MyFile);
cont++;
}

return SUCCESS;
}

 

 

TempBuffer is a global uint8_t buffer of size 51200.

The problem is that after correctly writing some files, f_write returns "FR_DISK_ERR" and I can't understand why..

Decreasing the buffer's size seems to allow a bigger number of files to be written before the error, but it doesn't solve it...

 

Actually the problem is part of a much bigger project, but since I'm trying to understand what's wrong, I'm trying to keep things as simple as possible. That's why I took a STM32Cube project and left it untouched apart from the function I wrote.. But I really can't get the point of this problem anymway..Any idea?


I'm not using DMA, nor SD peripheral interrupt (as in the example).. The file ffconf.h is left untouched with _USE_LFN = 0, _USE_STRFUNC=2, _MIN_SS=__MAX_SS=512.. Systick priority is as low as possible (0x0F)..

Outcomes