SD Karte 4 Bit Mode Schreiben

Gast #5041572
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren