1
\$\begingroup\$

I've been working on some code to talk to an SD card with the MSP430. I can't get the card to enter into idle mode, and I'm actually pretty stumped as to why. I've looked at the microcontroller output with a logic analyzer and everything looks as it should. I've tried a few different cards and SD card adapters with the same results so it seems like a code issue. I'm initializing the SD card with this code:

void MMC_initSPI(void){
//SOMI: 3.1
//SIMO: 3.0
//CLK: 3.2
//CS: 1.4
//chip select
SD_CSn_PxDIR|=SD_CSn_PIN;
SD_CSn_PxOUT|=SD_CSn_PIN;

UCB0CTL1 = UCSSEL_2 | UCSWRST;  // source USCI clock from SMCLK, put USCI in reset mode
UCB0CTL0 |= SPI_MODE_0;         // SPI MODE 0 - CPOL=0 CPHA=0
                                // note: UCCKPH is inverted from CPHA
//do I need to do this??
UCB0BR0 = LOBYTE(SPI_400kHz);   // set initial speed
UCB0BR1 = HIBYTE(SPI_400kHz);

P3SEL  |= BIT0 + BIT1 + BIT2;   // configure for USCI

UCB0CTL1 &= ~UCSWRST;           // release for operation
}

and then sending 0xFF within a for loop 11 times (well within the 71 clock pulses needed to awaken the card to new data) before using the mmc_GoIdle() function, which is as follows:

char mmc_GoIdle(){
char response=0x01;
CS_LOW();

//Send Command 0 to put MMC in SPI mode
mmcSendCmd(MMC_GO_IDLE_STATE, 0, 0x95);
//Now wait for READY RESPONSE
if(mmcGetResponse()!=0x01)
return MMC_INIT_ERROR;

while(response==0x01)
{
  CS_HIGH();
spiSendByte(0xff);
CS_LOW();
mmcSendCmd(MMC_SEND_OP_COND,0x00,0xff);
response=mmcGetResponse();
}
CS_HIGH();
spiSendByte(0xff);
return (MMC_SUCCESS);
}

but it always returns MMC_INIT_ERROR. Can anyone spot anything obviously wrong? The logic analyzer tells me it's returning 0x00 and not 0x01 as it should. Any ideas?

\$\endgroup\$
-3
\$\begingroup\$

Try with SPI_MODE_1 it will work.

\$\endgroup\$
  • 6
    \$\begingroup\$ Would you care to explain why this change will work? \$\endgroup\$ – Dave Tweed May 25 '15 at 11:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.