SD-Karte schreiben: ja, lesen: nein

OP (Firma: ---) #656251
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
Gast #656299
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)
OP (Firma: ---) #656665
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren