Forum: Mikrocontroller und Digitale Elektronik FATFS FR_DISK_ERR mit fr_write


von ben (Gast)


Lesenswert?

Hallo,

habe ein Problem mit FATFs. Lesen funktioniert problemlos, f_mount, 
f_open, etc.. geben FR_OK zurück.
Möchte ich jedoch mit f_write schrieben bekomme ich FR_DISK_ERR

Hier mein Testcode:
1
FRESULT myres = f_mount(&FatFs_SDCARD, "", 0);
2
    if(myres == FR_OK)
3
    {
4
        FIL fp;
5
        if(f_open(&fp,"test.txt",FA_CREATE_ALWAYS|FA_WRITE) == FR_OK)
6
        {
7
            TCHAR * txt ="Das ist ein test";
8
            UINT cnt = 0;
9
10
            //__asm volatile("CPSID i");          //disable all interrupts
11
            myres = f_write(&fp,txt,17,&cnt);
12
            //__asm volatile("CPSIE i");          //enable all interrupts
13
14
            if(myres == FR_OK)
15
            {
16
                //super
17
            }
18
            f_close(&fp);
19
        }
20
     }

Habe auch schon versucht alle Interrupts während das Schreibens zu 
deaktivieren, leider Erfolglos.

hat jemand eine Idee? Sitze hier seit Stunden und habe keine Ahnung 
mehr..

Danke :)

von Jim M. (turboj)


Lesenswert?

Versuche eine andere SD Karte. Die f_open() Funktion muss schon auf die 
Karte schreiben können (Verzeichnis Eintrag etc), wenn das klappt ist 
die Kommunikation grundsätzlich OK - bleibt IMHO nur die Karte selbst 
als Ursache übrig.

ben schrieb:
> //__asm volatile("CPSID i");          //disable all interrupts

Wenn Du auf einem Cortex-M unterwegs bist, dann könntest Du mit dem 
Debugger auch die genaue Stelle suchen wo das Schreiben in FATFS 
fehlschlägt.

von ben (Gast)


Lesenswert?

Jim M. schrieb:
> Die f_open() Funktion muss schon auf die
> Karte schreiben können (Verzeichnis Eintrag etc), wenn das klappt ist
> die Kommunikation grundsätzlich OK

Genau. Die Datei wird auch erfolgreich erstellt. Und wie oben schon 
erwähnt funktioniert das Lesen auch problemlos.
Ich habe die Karte auch schon einmal neu formatiert - ändert aber 
nichts.

Wenn ich die Fehlerursache mit dem Debugger verfolge lande ich tief im 
FATFs Kern - kann ich gerne hier posten, persönlich sagt mir das nichts.

von Falk B. (falk)


Lesenswert?

@ben (Gast)

>Wenn ich die Fehlerursache mit dem Debugger verfolge lande ich tief im
>FATFs Kern - kann ich gerne hier posten, persönlich sagt mir das nichts.

Dort muss man nicht rumstochern, der ist gut getestet. Man muss nur die 
IO-Anpassung an die jeweilige Hardware sauber vornehmen. Wie sehen deine 
SPI-Routinen aus? Welchen Prozessor verwendest du?

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
Noch kein Account? Hier anmelden.