Hallo zusammen, FatFS mit STM32 und USB-Stick geht reibungslos solange der Dateiname in der Firmware festcodiert ist (E511.DAT). Wenn ich aber anhand von "f_findfirst" beliebige Datei mit der Endung ".DAT" suche und danach versuche diese zu öffnen, scheitert die Funktion "f_open". wo liegt der Fehler? muss irgendwas zwischen f_findfirst und f_open geschehen? reinitialisiert? Danke für eure Hilfe. Gruß fr = f_findfirst(&dp, &fno, "", "*.DAT"); if (fr == FR_OK && fno.fname[0]) strcpy(file_ndesc[0].file_name, fno.fname); .... if(f_open(&fp,file_ndesc[0].file_name,FA_READ)==FR_OK) { printf("Ok"); } else { printf("Fehler"); }
oder andersrum formuliert, was ist zu beachten wenn "f_findfirst()" von FatFS verwendet wird? in der Online-Doku bin ich nicht schlauer geworden. Danke
Vermutlich musst Du das von f_findfirst verwendete "directory object" (wird als erster Parameter an f_findfirst übergeben, bei Dir also "dp") auch wieder schließen. Das geschieht mit f_closedir. Siehe Beispielcode: http://elm-chan.org/fsw/ff/doc/findfirst.html
Erstmal Danke Rufus für die Antwort. ich habe f_closedir schon danach aufgerufen. Leider hat nichts gebracht. Ein anderer Vorschlag vielleicht? Danke. fr = f_findfirst(&dp, &fno, "", "*.DAT"); if (fr == FR_OK && fno.fname[0]) strcpy(file_ndesc[0].file_name, fno.fname); if(f_open(&fp,file_ndesc[0].file_name,FA_OPEN_EXISTING)==FR_OK) { printf("Ok"); } else { printf("Fehler"); } f_closedir(&dp);
wenn ich debugge finde ich in den tiefen "Dschungel" von FatFS einen Rückgabefehler RES_NOTRDY beim Aufruf voin disk_read(....). Ist es ein Hindweis auf Timming fehler oder lege ich falsch? Danke für eure Hilfe. Gruß