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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.