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


von mkalte (Gast)


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)


Lesenswert?

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

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


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)


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)


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.

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.