Forum: Mikrocontroller und Digitale Elektronik Toshiba SD-M04G SDHC-Karte Initialisierungsproblem


von Billy _. (slowflyer)


Lesenswert?

Ich möchte mit meinem AVR32 eine Toshiba SD-M04G SDHC-Karte ansprechen. 
Eine andere SDHC Karte (SanDisk) wird als SDHC erkannt und verwendet.

Die Toshiba-Karte liefert mir auf CMD0 GO_IDLE_STATE in r1 immer ein 
0xE0 statt irgendwann ein 0x01. Irgendwelche Ideen? Benötiogen Toshiba 
Karten ein Sonderbehandlung, die sich meiner Kenntnis entzieht?

 Hier ein Code-Snippet meines Ini-Vorgangs:
1
// card needs 74 cycles minimum to start up
2
  spi_selectChip(SD_MMC_SPI, SD_MMC_SPI_NPCS);    // select SD_MMC_SPI
3
4
  for(i = 0; i < 10; i++)
5
  {
6
    spi_write(SD_MMC_SPI,0xFF);
7
  }
8
9
  spi_unselectChip(SD_MMC_SPI, SD_MMC_SPI_NPCS);  // unselect SD_MMC_SPI
10
11
  // RESET THE MEMORY CARD
12
  sd_mmc_spi_init_done = FALSE;
13
  card_type = MMC_CARD;
14
  retry = 0;
15
16
  do
17
  {
18
    // reset card and go to SPI mode
19
    //spi_selectChip(SD_MMC_SPI, SD_MMC_SPI_NPCS);    // select SD_MMC_SPI
20
    r1 = sd_mmc_spi_send_command(MMC_GO_IDLE_STATE, 0);
21
    //spi_unselectChip(SD_MMC_SPI, SD_MMC_SPI_NPCS);  // unselect SD_MMC_SPI
22
    spi_write(SD_MMC_SPI,0xFF);            // write dummy byte
23
    spi_write(SD_MMC_SPI,0xFF);            // write dummy byte
24
--> hier steht in r1 immer ein 0xE0 statt irgendwann 0x01
25
    // do retry counter
26
    retry++;
27
28
    if(retry > 100)
29
    {
30
--> und hier wird die Fkt dann verlassen nach 100 Versuchen
31
      return KO; 
32
    }
33
  }
34
  while(r1 != 0x01);   // check memory enters idle_state

von Olaf (Gast)


Lesenswert?

Pegelwandler? Flanken? Qualitaet des Taktsignals? Terminierung?

Olaf

von holger (Gast)


Lesenswert?

1
// card needs 74 cycles minimum to start up
2
  spi_selectChip(SD_MMC_SPI, SD_MMC_SPI_NPCS);    // select SD_MMC_SPI
3
4
  for(i = 0; i < 10; i++)
5
  {
6
    spi_write(SD_MMC_SPI,0xFF);
7
  }
8
9
  spi_unselectChip(SD_MMC_SPI, SD_MMC_SPI_NPCS);  // unselect SD_MMC_SPI

Ich würde das select / unselect mal tauschen.

von Georg (Gast)


Angehängte Dateien:

Lesenswert?

Schau Dir das mal an.

von Billy _. (slowflyer)


Lesenswert?

@Olaf: EVK1100 Eval Board

@Holger: Die SanDisk funktioniert auch mit umgedrehten Select/Unselect, 
die Toshiba weigert sich immer noch und gibt 0xE0 0x3F zurück

@Georg: So wie ich das interpretiere, ist CMD0 genauso wie alle anderen 
Kommandos zu behandeln, mit dem Unterschied, dass die 74 Flanken vorne 
weg für die Initialisierung der Karte benötigt werden.

Fazit: Habe mit versch. Varianten gespielt und bin immer noch keinen 
Deut schlauer geworden

von Kai (Gast)


Lesenswert?

Sorry, das ich einen alten Thread ausbuddel, aber ich habe das gleiche 
Problem wie der TO mit einer Toshiba SD-M01G SD-Karte. Hat sich da was 
getan?

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.