Forum: FPGA, VHDL & Co. SD Karte 4 Bit Mode Schreiben


von Mana (Gast)


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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.