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ß
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.