У меня вот это работает с 1G.
Посмотрите может поможет.
unsigned char MMC_Init(void)
{
unsigned char i=0,b=0;
SPICS=1; // disable MMC
for(i=0; i < 10; i++) SPI(0xFF);
SPICS=0; // enable MMC
b=Command(0x40,0,0x95);
i=0;
while (b!=1)
{
i++;
b=SPI(0xFF);
if (i==0) return 1;
}
delay_ms(2000);
b=Command(0x41,0,0xFF);
i=0;
//buf2=b;
while (b!=1)//!=0)
{
i++;
b=SPI(0xFF);
//buf2=b;
if (i==0) return 2;
}
return 0;
}