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 |