Toshiba SD-M04G SDHC-Karte Initialisierungsproblem

OP #1573920
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
Gast #1574007
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.
OP #1574686
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

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