Forum: Mikrocontroller und Digitale Elektronik FATFS FR_DISK_ERR mit fr_write


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von ben (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.