Forum: Mikrocontroller und Digitale Elektronik Gründe das SD Card über SPI nicht schreib?


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 mkalte (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Heyho,

ich arbeite an einer Messelektronik für ein Studentenprojekt.
Ein Teil der Aufgabe ist es, Daten auf eine SD Karte zu speichern.
Wir benutzen einen Atmega8535. Die SD-Karte ist via SPI mit dem Mega 
verbunden. Ich benutze eine leicht abgeänderte version des petitFatFs 
codes (avrmmcp.c) um rohdaten(!) ohne FS auf die Karte zu speichern (RAM 
is knapp, daher so und nicht in ein file)
Ich habe die Kommunikation sowohl über UART ausgegeben als auch mit 
einem Logic analyzer die Übertragungen begutachtet. Die SD Karte 
initialisiert erfolgreich und diskWritep gibt auch Erfolg zurück. Im 
Analyzer konnte ich auch deutlich sehen, das die Kommunikation klappt 
und eine positive data-response zurück kommt.

Dieser code (angenommen das die Rückgabewerte erfolg anzeigen - ich 
teste das aber das würde hier etwas unübersichtlich glaub ich)
1
// irgendwo in einer funktion "initLink" die in aufgerufen wird
2
initSpi(); // fsk/128 -> 125khz
3
initDisk();
4
spiMaxSpeed(); // fsk/2 -> 8mhz
5
const char* x = "Hallo Welt";
6
diskWritep(NULL,0x1);
7
for (int i = 0; i < 10; i++) {
8
    diskWritep(x,11);
9
}
10
diskWritep(NULL,0x0);
Ich nehme mir nun die Karte, setze sie auf null auf linux
1
dd if=/dev/null of=/dev/sdb bs=512 count=3906250
Tue sie in die Elektronik, Schalte das Ding an, warte einen Moment und 
sehe sofort dass das erfolgreich durchläuft. Schalte ich das ab. Karte 
zurück in den Rechner und
1
 dd if=/dev/sdb of=out.bin bs=512 count=3906250

Dann mache ich strings auf out.bin - und finde nichts. Auch wenn ich mir 
über hexedit die ersten Blöcke der Karte anschaue kann ich nichts sehen.

Hat hier irgendwer eine Idee woran das liegen könnte? Die Verwendete 
SD-Karte wird sonst in einem 3D-Drucker benutzt (2GB SD von SanDisk) und 
funktioniert mit dessen Arduino einwandfrei (da wird halt nur gelesen 
aber das geht)

Danke Schonmal
~mkalte

von Malte K. (Firma: ERIG e.V.) (mkalte)


Bewertung
0 lesenswert
nicht lesenswert
Ich hätte noch dazu sagen sollen, dass das lesen von der SD-Karte 
funktioniert :/

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht lesenswert
mkalte schrieb:
> Tue sie in die Elektronik, Schalte das Ding an, warte einen Moment und
> sehe sofort dass das erfolgreich durchläuft.

 Was läuft erfolgreich durch ?
 Siehst du die reingeschriebenen Daten ?

von Hinz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Trivialste aller Lösungen:
Schreibschutz der SD Karte ist aus? Diesen kleinen Schieber auf der 
Seite mein ich.

von Malte K. (Firma: ERIG e.V.) (mkalte)


Bewertung
0 lesenswert
nicht lesenswert
Marc V. schrieb:
> mkalte schrieb:
>> Tue sie in die Elektronik, Schalte das Ding an, warte einen Moment und
>> sehe sofort dass das erfolgreich durchläuft.
>
>  Was läuft erfolgreich durch ?
>  Siehst du die reingeschriebenen Daten ?

Jap - im logic analyzer kann ich den block-write sehen und auch die 
positive response der karte. Auch am atmega direkt: wenn ich das spi 
auch über uart ausgebe (read und writes) ist Data response ist XXX0101 - 
was laut  http://elm-chan.org/docs/mmc/mmc_e.html einen erfolgreichen 
write anzeigt.

Hinz schrieb:
> Trivialste aller Lösungen:
> Schreibschutz der SD Karte ist aus? Diesen kleinen Schieber auf der
> Seite mein ich.

Jap ist aus.

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.