mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SD-Karte schreiben: ja, lesen: nein


Autor: Ulrich M. (Firma: ---) (ulrich1267)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

ich habe schon fleißig gesucht im Forum. Mein Problem habe ich aber 
nicht gefunden. Ich verwende einen MSP430F169 und versuche eine SD-Karte 
zu lesen. Dabei gehe ich wie im Dokument slaa281a.pdf von TI vor. 
Allerdings habe ich SIMO und SOMI vertauscht, weil das offensichtlich 
falsch dokumentiert wurde. Alle Anschlüsse gehen direkt von MSP nach 
Kartenhalter (mit ca 5cm Flachbandkabel). Den Quellcode habe ich 
ebenfalls von TI. Es geht auch schon so einiges. Die Karte wird 
initialisiert und ich kann auch darauf schreiben (mmcWriteBlock). Aber 
ich kann NICHT lesen. mmcReadBlock kommt immer mit Fehler 
MMC_DATA_TOKEN_ERROR zurück. Häh? Schreiben ja, lesen nein?!?! Was soll 
das? Kennt das Problem jemand oder hat vielleicht einen Tip für mich?

Flankensteilheit, Verbindungsprobleme, Pegel o.ä. kommt eigentlich nicht 
in Frage, wenn ich doch schreiben kann, oder?

Vielen Dank schon mal für's Lesen.

Gruß
Uli

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte ich auch und habs auch nicht hinbekommen. Falls Du eine Lösung 
findest wäre ich sehr daran interessiert. Schreiben kann ich auch ohne 
Probs, aber lesen...

Greets

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vieleicht ist das Timeout hier zu kurz:

char mmcGetXXResponse(const char resp)
{
  //Response comes 1-8bytes after command
  //the first bit will be a 0
  //followed by an error code
  //data will be 0xff until response
  int i=0;

  char response;

  while(i<=1000)
  {
    response=spiSendByte(0xff);
    if(response==resp)break;
    i++;
  }
  return response;
}


Ändere doch mal auf
  while(i<=65000)

Autor: Ulrich M. (Firma: ---) (ulrich1267)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Holger,

ich hab's gerade probiert. Geht leider auch nicht :-(

Gruß
Uli

Autor: Ulrich M. (Firma: ---) (ulrich1267)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heureka :-)

Die Leute von TI haben die Parameter und den Rückgabewert der Funktion 
mmcGetXXResponse() als char definiert. Die geforderte Response zum Lesen 
ist aber 0xFE, sodass ein strenger Compiler (wie meiner) signed mit 
unsigned vergleicht und mit dem Kopf schüttelt, weil -2 != 0xFE. Wenn 
man die Compiler option "plain_char = unsigned" setzt, geht's.

Oder man schreibt alle Funktionen auf unsigned char um...

Gruß
Uli

Autor: Mathias U. (munter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Glückwunsch!!!
Darauf soll mal einer kommen...

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und warum benutzt du dann nicht stdint's wie uint8_t?

Autor: Ulrich M. (Firma: ---) (ulrich1267)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil der Code nicht von mir ist, sondern von TI :-P

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mist! :-)

Aber ändere doch den Rückgabeparameter auf uint8_t, statt 
Compilerparameter dafür zu verändern.

Aber verdammt verzwickter "Fehler", muss man schon sagen...

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bist du dir sicher, dass Schreiben klappt? Wenn du ja nichts lesen 
kannst :-)

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.