Hello Carsten,
thank you for your help. I don't use OS, so f_mount is:
FRESULT f_mount (
BYTE vol, /* Logical drive number to be mounted/unmounted */
FATFS *fs /* Pointer to new file system object (NULL for unmount)*/
)
I try it again:
DWORD fre_clust, fre_sect, tot_sect;
FATFS *fs;
FRESULT res;
NVIC_DisableIRQ(SDIO_IRQn);
Chip_Clock_Disable(CLK_MX_SDIO);
Chip_SDIF_DeInit(LPC_SDMMC);
App_SDMMC_Init();
NVIC_EnableIRQ(SDIO_IRQn);
f_mount(0, &Fatfs);
res = f_getfree("0:", &fre_clust, &fs);
tot_sect = (fs->n_fatent - 2) * fs->csize;
fre_sect = fre_clust * fs->csize;
//debug into file
res_file = f_open(&Fil, "SD_info.txt", FA_WRITE | FA_CREATE_ALWAYS);
itoa(res, str_file, 10);
f_write(&Fil, str_file, strlen(str_file), &bw);
f_write(&Fil, "\n", 1, &bw);
itoa(fs->n_fatent, str_file, 10);
f_write(&Fil, str_file, strlen(str_file), &bw);
f_write(&Fil, "\n", 1, &bw);
itoa(fre_clust, str_file, 10);
f_write(&Fil, str_file, strlen(str_file), &bw);
f_write(&Fil, "\n", 1, &bw);
//total drive space
itoa(tot_sect / 2 , str_file, 10);
f_write(&Fil, str_file, strlen(str_file), &bw);
f_write(&Fil, "\n", 1, &bw);
//free space
itoa(fre_sect / 2 , str_file, 10);
f_write(&Fil, str_file, strlen(str_file), &bw);
f_write(&Fil, "\n", 1, &bw);
f_close(&Fil);
And:
SD card from Total commander:
Free space: 4 149 056 kB
SD size: 7 708 672 kB
From program:
0 -> OK - return value from f_getfree
120450 -> fs->n_fatent
64830 ->fre_clust
7708672 -> total drive space: 7708672/1024 = 7528MB
4149120 -> free space: 4149120/1024 = 4051MB
I don't understand, why now it works. I did only "Error Control" in Windows .
The code from my question is "same"....