Gast
#5041572
Hallo,
Die Schreibfunktion funktioniert noch nicht.
Hier folgt ein Teil der Schreibfunktion:
SD_DAT_OUT; // set DAT pins to send data to SD card
// start bits
SD_CLK_LOW;
SD_DAT_WRITE(0x00);
SD_CLK_HIGH;
// write data (512 bytes = 1 block)
for(i = 0; i < nDataLen; i++) // nDataLen = 512
{
Data8 = szDataWrite[i]; // was ich in der SD-Karte schreiben
möchte
#ifdef SD_4BIT_MODE
for(j = 0; j < 2; j++)
{
SD_CLK_LOW;
SD_DAT_WRITE((Data8 >> 4) & 0x0F);
SD_CLK_HIGH;
Data8 <<= 4;
}
#endif
}
// Crc-Datencheck
#ifdef SD_4BIT_MODE
for(j = 0; j < 16; j++)
{
SD_CLK_LOW;
Crc16Aux = DataCrc16 >> 15;
if (Crc16Aux == 0x01)
SD_DAT_WRITE(0x0F);
else
SD_DAT_WRITE(0x00);
SD_CLK_HIGH;
DataCrc16 <<= 1;
}
#endif
// stop bits (value '1')
SD_CLK_LOW;
#ifdef SD_4BIT_MODE
SD_DAT_WRITE(0x0F);
#endif
SD_CLK_HIGH;
//===== check busy bits (data0 only).
SD_DAT_IN; // set DAT pins to receive data from SD card
for(i = 0; i < 32 && !bWriteSuccess; i++) // Glaub sollte nur 12 bits
sein
{
SD_CLK_LOW;
SD_CLK_HIGH; // CRC response output is always two clocks after
the
// end of data
if ((SD_TEST_DAT & 0x01) == 0x01) // (DAT0==LOW: busy indicate
bWriteSuccess = TRUE;
}
if (!bWriteSuccess)
bSuccess = FALSE;
Das ist die Sequenz: S (Start Bit), content (512 bytes), CRC (16 bit für
jede der vier Leitungen DAT0-3), E (End Bit)
Es wird in der SD-Karte nicht geschrieben und ich weiß nicht warum.
Hat Jemand eine Idee?