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


von Ingo A. (neulingo)


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?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

PullUp an MISO? Genügend Clocks?

von Ingo A. (neulingo)


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.

von Siggi (Gast)


Lesenswert?

Warum postest Du Dein Programm nicht?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wie lange clockst Du auf die Antwort des CMD0?

von Ingo A. (neulingo)


Lesenswert?

max. 64 Zyklen

von Ingo A. (neulingo)


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
1
// Initialisieren
2
char init_SD (void)
3
{
4
  int i;
5
  unsigned char antwort=0x00;
6
  unsigned char antworten[8];
7
8
  initSPI(0x14);//SPIGeschwindigkeit auf 125Khz
9
  CS_HIGH();
10
  for(i=0;i<=10;i++)
11
    spiSendByte(0xff);
12
  //Send Cmd0
13
  for(i=0;i<=200;i++){
14
    CS_LOW();
15
    SendCmd(0x00,0x00,0x95);
16
    antwort=WARTE_ANTWORT();
17
    CS_HIGH();
18
    if (antwort==0x01) break;
19
  }
20
   if (antwort!=0x01) return TIMEOUT_ERROR;//
21
   spiSendByte(0xff);
22
23
   CS_LOW();
24
   SendCmd(0x08,0x0122,0x95);
25
   antwort=WARTE_ANTWORT();
26
27
// setup usart1 in spi mode
28
void initSPI (unsigned char teiler)
29
{
30
  ME2 |= USPIE1;    // Enable USART1 SPI mode
31
  UTCTL1 =  CKPH | SSEL1 | SSEL0 | STC; 
32
  UBR01 = teiler;    
33
  UBR11 = 0x00;      // -"-
34
  UMCTL1 = 0x00;    // no modulation
35
  UCTL1 = CHAR | SYNC | MM;  // 8-bit SPI Master **SWRST**
36
  while (!(IFG2 & UTXIFG1));  
37
}

von Ingo A. (neulingo)


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 :-)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Ingo A. (neulingo)


Lesenswert?

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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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

von Ingo A. (neulingo)


Lesenswert?

Danke für den Tipp. Dann werde ich mein Prog dahingehend ändern.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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

von Siggi (Gast)


Lesenswert?

... Timeout <0.5 sek ...

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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von stealth2k (Gast)


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

von Klauli (Gast)


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).

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.