1
我从我的SD卡(CMD8,CMD55和CMD41)收到无效的响应代码。使用SPI接口初始化SD卡
初始化程序:
SDCS = 1; // MMC deaktiviert
SPI1CON1bits.SMP = 0;
SPI1CON1bits.CKE = 1;
SPI1CON1bits.MSTEN = 1;
SPI1CON1bits.CKP = 0;
SPI1STATbits.SPIEN = 1;
for(i=0; i<10; i++)
SPI(0xFF);
// RESET
unsigned char rr=Command(CMD0,0);
SDCS=1; // MMC deactivated
/* OK response == 1 */
r = Command(CMD8,0); // Check voltage
SDCS=1;
/*
esponse == 0xC1 ?!?
*/
r = Command(CMD58,0); // READ_OCR
unsigned char ocr1 = SPI(0xFF);
unsigned char ocr2 = SPI(0xFF);
unsigned char ocr3 = SPI(0xFF);
unsigned char ocr4 = SPI(0xFF);
unsigned char ocr5 = SPI(0xFF);
/*
r = 0xF8; ?!?
ocr1 = 0x0F;
ocr2 = 0xFF;
ocr3 = 0xFF;
ocr4 = 0xFF;
ocr5 = 0xFF;
*/
SDCS=1;
// INIT
unsigned char rrr = 0;
i = 10000;
do
{
rrr = Command(55,0); // Next is APP CMD
SDCS = 1;
if(r)
break;
} while(--i>0);
/*
OK response == 1
*/
// APP CMD 41 with OCR = 0x0F??
您可以阅读注释的响应代码。
是否有可能对CMD8
的回答代码是0xC1
?位7应该是0,对吧?
这是硬件错误吗?
下次格式化您的代码。 – 2010-05-17 16:26:30
有些卡基本上不支持SPI模式。什么牌子的牌子?它是一张真正的卡片还是假的? – 2010-05-17 16:36:04