Gründe das SD Card über SPI nicht schreib?

Gast #4803589
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
(Firma: ERIG e.V.) #4803706
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.