I use a TMS570LS3137HDK development board test in SPI mode to use micro SD card.
My micro SD card is a SanDisk Ultra 16GB HC.
When I use SPI send cmd0
to initialize SD card, it responses 0x5
, but should answer 0x01
instead.
Here is my code.
gioInit();
sciInit();
spiInit();
gioSetBit(spiPORT2, SPI_PIN_CS1, 1);
gioSetBit(spiPORT2, SPI_PIN_CS0, 1);
for (int i = 0; i < 10; i++) {
spiTransmitAndReceiveData(spiREG2, &spiDat1, 1, (uint16 *) 0xFF, NULL);
}
uint16_t cmd0[6] = {0x40, 0x00, 0x00, 0x00, 0x00, 0x95};
uint16_t resultData[6] = {0};
spiDAT1_t spiDat1;
spiDat1.CS_HOLD = CS_HOLD;
spiDat1.WDEL = WDEL;
spiDat1.DFSEL = DFSEL;
spiDat1.CSNR = CSNR;
gioSetBit(spiPORT2, SPI_PIN_CS0, 0);
spiTransmitAndReceiveData(spiREG2, &spiDat1, 6, cmd0, resultData);
gioSetBit(spiPORT2, SPI_PIN_CS0, 1);
I tried to change CLK and loop cmd0
but that did not work.