опять забуксовал(
подскажите пожалста, такая проблема:
инициализирую - в ответ приходит ОК, монтирую - тоже ОК, пробую создать директорию и файл - не получается, почему то не проходит условие в функции chk_mounted вот тут:
Код:
if (fs->fs_type) { /* If the logical drive has been mounted */
stat = disk_status(fs->drv);
if (!(stat & STA_NOINIT)) { /* and the physical drive is kept initialized (has not been changed), */
if (!_FS_READONLY && chk_wp && (stat & STA_PROTECT)) /* Check write protection if needed */
return FR_WRITE_PROTECTED;
return FR_OK; /* The file system object is valid */
}
в fs->fs_type ноль. соответственно, второй раз запускается инициализация и естественно она возвращает ошибку.
а вот это в мэйне:
Код:
FRESULT f_err_code;
FIL fil_obj;
if(disk_initialize(0)==RES_OK)
{
printf("init_OK\r\n"); //если карта есть
if(f_mount(0,&fs)==FR_OK)
{
printf("mount\r\n");
}
f_err_code = f_mkdir ("0:newdir"); // Create newdir
printf ("creating newdir ");
if(f_err_code==0) printf ("OK\r\n");
else printf("FAIL\r\n");
f_err_code = f_open(&fil_obj, "newfile.txt",FA_CREATE_NEW|FA_WRITE); //Create newfile into newdir
printf ("creating newfile.txt into newdir ");
if(f_err_code==0) printf ("OK\r\n");
else printf("FAIL\r\n");
scan_files ("0:/newdir");
}
else
{
printf("init_fail"); //карты нет
}
в чем проблема может быть?
UPD
функция f_mkfs(0, 0, 512) заработала, форматнул. SD_TotalSize тоже заработала, если просто вызвать их без инициализации, инициализация проходит в теле. последняя возвращает 3729 MB available, 3729 MB total space.
Код:
FunctionalState SD_TotalSize(void)
{
FATFS *fs;
DWORD fre_clust;
FRESULT res; /* FatFs function common result code */
res = f_getfree("0:", &fre_clust, &fs); /* ±ШРлКЗёщДїВјЈ¬СЎФсґЕЕМ0 */
if ( res==FR_OK )
{
/* Print free space in unit of MB (assuming 512 bytes/sector) */
printf("\r\n%d MB total drive space.\r\n"
"%d MB available.\r\n",
( (fs->n_fatent - 2) * fs->csize ) / 2 /1024 , (fre_clust * fs->csize) / 2 /1024 );
return ENABLE;
}
else
return DISABLE;
}