mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SDHC Card keine Antwort auf cmd0


Autor: Ingo Appelt (neulingo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an alle,

ich versuche verzweifelt eine SDHC-Card (Sandisk 4GB Class2) zum laufen 
zu bringen, aber diese reagiert nicht einmal auf CMD0. Ich kann alle 
möglichen SD-Cards ansprechen mit meiner Software, das funktioniert 
wunderbar, auch habe ich in anderen Beiträgen schon gesucht und die 
Initialisierung nach Datenblatt duchgeführt, doch diese Karte hält es 
nicht für nötig in irgendeiner weise zu Antworten :-(. Über einen 
Kartenleser kann ich auch problemlos auf diese zugreifen. Hat schon 
irgendjemand ähnliche Erfahrungen gemacht?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PullUp an MISO? Genügend Clocks?

Autor: Ingo Appelt (neulingo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist alles i.O.
Ich habe die mindestens 74Clocks die man am Anfang bringen soll schon 
erhöht bzw. auch extrem erhöht aber ohne Ergebniss.

Autor: Siggi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum postest Du Dein Programm nicht?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie lange clockst Du auf die Antwort des CMD0?

Autor: Ingo Appelt (neulingo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
max. 64 Zyklen

Autor: Ingo Appelt (neulingo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Siggi
das ist der Ausschnitt mit der Initialisierung
ist für MSP430F149 an 8Mhz, was mich wie gesagt wundert ist, dass 
"normale"
SD-Cards einwandfrei funktionieren
// Initialisieren
char init_SD (void)
{
  int i;
  unsigned char antwort=0x00;
  unsigned char antworten[8];

  initSPI(0x14);//SPIGeschwindigkeit auf 125Khz
  CS_HIGH();
  for(i=0;i<=10;i++)
    spiSendByte(0xff);
  //Send Cmd0
  for(i=0;i<=200;i++){
    CS_LOW();
    SendCmd(0x00,0x00,0x95);
    antwort=WARTE_ANTWORT();
    CS_HIGH();
    if (antwort==0x01) break;
  }
   if (antwort!=0x01) return TIMEOUT_ERROR;//
   spiSendByte(0xff);

   CS_LOW();
   SendCmd(0x08,0x0122,0x95);
   antwort=WARTE_ANTWORT();

// setup usart1 in spi mode
void initSPI (unsigned char teiler)
{
  ME2 |= USPIE1;    // Enable USART1 SPI mode
  UTCTL1 =  CKPH | SSEL1 | SSEL0 | STC; 
  UBR01 = teiler;    
  UBR11 = 0x00;      // -"-
  UMCTL1 = 0x00;    // no modulation
  UCTL1 = CHAR | SYNC | MM;  // 8-bit SPI Master **SWRST**
  while (!(IFG2 & UTXIFG1));  
}

Autor: Ingo Appelt (neulingo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten,

das Problem hat sich erledigt. Ich habe mir eine andere SDHC Card 
besorgt und mit der hat es funktioniert.
Nachdem ich dann alle kleinen (hoffentlich alle) Fehlerchen aus meinem 
Programm entfernt habe habe ich das Board ohne MSP-FET Adapter laufen 
lassen und siehe da auch mein Problemkind unterhält sich aufeinmal 
mühelos mit dem Controller. Ich kann es mir nicht erklären warum, bin 
aber trotzdem mit dem Ergebniss zufrieden :-)

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
64 Clocks reichen nicht immer, um auf ein R1 zu warten. Bei manchen 
SD-Karten braucht´s über 500 Clocks - ist ganz verschieden. Wirklich 
sicher funktioniert das nur über ein Timeout <0.5 sek.

Autor: Ingo Appelt (neulingo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, ich habe mich falsch ausgedrückt: 64 Zyklen a 8 Clocks hätte ich 
schreiben müssen

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reicht trotzdem nicht - ich hab´s schon richtig verstanden mit den 
Zyklen ;-) Ich meinte auch 500 Packete zu je 8 Clocks.

Autor: Ingo Appelt (neulingo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tipp. Dann werde ich mein Prog dahingehend ändern.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja - das Finden dieses Problems, das sich nur manchen Karten geäußert 
hat, hat bei mir auch etwas länger gedauert ;-)

Autor: Siggi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... Timeout <0.5 sek ...

Das ist Blödsinn. Erst denken - dann posten.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siggi, laß es. Wenn Du wirklich etwas beitragen kannst, dann ´raus 
damit.

0.5 Sekunden Timeout ist ein empirisch ermittelter Wert für die 
längstmögliche Wartezeit auf die Antwort von verschiedenen getesteten 
Karten. Die langsamste Karte brauchte etwa 320 ms, was kleiner 0.5 
Sekunden ist.

Autor: stealth2k (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

funktionieren SDHC Karten mit 8 bzw 16 usw GB auch im SPI MODE??

Hat da jemand erfahrung?
Oder gibt es da nur ein paar Ausnahmen bei den 4GB Karten...

lg

Autor: Klauli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es funktionieren alle SDHC-Karten im SPI-Mode. Ohne Ausnahmen!
Ansteuerung wie normale SD-Karte, lediglich die Adressierung ist jetzt 
eben nicht mehr Byte-Adresse, sondern Block-Adresse. Das ist auch schon 
alles (für die Erbsenzähler: natürlich gibt es auch zusätzliche Befehle, 
aber die braucht man nicht unbedingt).

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.