Ha Tweakers 
Zoals de titel al verraad ben ik bezig een microcontroller (msp430f169) te interfacen met een SD Card (Sandisk 1GB Ultra II). Maar nu loop ik tegen een vrij hardnekkig probleem.
Ik probeer de kaart logischerwijs te initialiseren op de volgende manier:
Stuur een CMD0 met CRC 0x95.. -> SPI Modus (Krijg een R1 response van 0x01)
Stuuur een CMD55 gevolgt door ACMD41 net zolang tot de reply 0x00 wordt.. in iedergeval uit IDLE state.. maar dat gebeurt niet!
Als ik CMD55/ACMD41 vervang met CMD1 voor mmc Modus, blijft de reponse ook altijd 0x01
Op het moment als ik expres een fout commando stuur (zeg 99) dan krijg ik een 0x05 response.. wat dan weer duidt op een werkende SPI bus verbinding... en een illegal command en idle modus
Heet iemand ervaring en/of tips hiermee? Ik heb zo'n beetje alle mogelijke codes en informatiebronnen uitgeput, maar ik kom er niet uit...
http://www.k9spud.com/sdcard
http://www.cs.ucr.edu/~amitra/sdcard/ProdManualSDCardv1.9.pdf
http://www.maxim-ic.com/appnotes.cfm/appnote_number/3969
etc...
Zoals de titel al verraad ben ik bezig een microcontroller (msp430f169) te interfacen met een SD Card (Sandisk 1GB Ultra II). Maar nu loop ik tegen een vrij hardnekkig probleem.
Ik probeer de kaart logischerwijs te initialiseren op de volgende manier:
Stuur een CMD0 met CRC 0x95.. -> SPI Modus (Krijg een R1 response van 0x01)
Stuuur een CMD55 gevolgt door ACMD41 net zolang tot de reply 0x00 wordt.. in iedergeval uit IDLE state.. maar dat gebeurt niet!
Als ik CMD55/ACMD41 vervang met CMD1 voor mmc Modus, blijft de reponse ook altijd 0x01
Op het moment als ik expres een fout commando stuur (zeg 99) dan krijg ik een 0x05 response.. wat dan weer duidt op een werkende SPI bus verbinding... en een illegal command en idle modus
Heet iemand ervaring en/of tips hiermee? Ik heb zo'n beetje alle mogelijke codes en informatiebronnen uitgeput, maar ik kom er niet uit...
http://www.k9spud.com/sdcard
http://www.cs.ucr.edu/~amitra/sdcard/ProdManualSDCardv1.9.pdf
http://www.maxim-ic.com/appnotes.cfm/appnote_number/3969
etc...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| /* Put the card in the idle state */
if (mmcSendCmd(sdc, CMD0, CMD0_R, response, argument) == 0){
return 0;
}
/* Now wait until the card goes idle. Retry at most SD_IDLE_WAIT_MAX
times */
j = 0;
do
{
j++;
/*
// Flag the next command as an application-specific command
if (mmcSendCmd(sdc, CMD55, CMD55_R, response, argument) == 1)
{
// Tell the card to send its OCR
mmcSendCmd(sdc, ACMD41, ACMD41_R, response, argument);
}
else
{
// No response, bail early
j = SD_IDLE_WAIT_MAX;
}
*/
//mmcSendCmd(sdc, CMD58, R3, response, argument);
mmcSendCmd(sdc, CMD1, CMD1_R, response, argument);
}while ( ((response[0] & MSK_IDLE) == 0x01) && (j < SD_IDLE_WAIT_MAX) );
/* As long as we didn't hit the timeout, assume we're OK. */
if (j >= SD_IDLE_WAIT_MAX){
return 0;
} |
i7 - GTX760 - triple boot