Gast
#518051
Hallo,
ich möchte mit einem Sam7 eine SDKarte beschreiben, das funktioniert
auch ganz gut. Meine writebyte routine so aus:
inline char mmc_write_byte (char Byte)
//######################################################################
######
{
while( !( AT91C_BASE_SPI->SPI_SR & AT91C_SPI_TDRE ) ); // Wait until
the character can be sent
AT91C_BASE_SPI->SPI_TDR = Byte;
while( !( AT91C_BASE_SPI->SPI_SR & AT91C_SPI_RDRF ) ); // Wait until
the character can be received
return (char)( AT91C_BASE_SPI->SPI_RDR ); // it's important to read
RDR here!
}
Hierbei dauert das Auslesen des Empfangsregisters (RDR) sehr lange, so
daß ich diesen Teil beim Übertragen der 512 Byte hintereinander
weggelassen habe.
Leider schreibt die Karte dann nur sehr unzuverläßig die Daten in ihren
Speicher.
Wieso dauert das Auslesen des Empfangsregisters solange und wieso ist es
"important" dieses bei jeder Übertragung auszulesen?
Danke