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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.