SD-Karten Schreibgeschwindigkeit (XMC4500)

Gast #3806788
Lesenswert?

Hallo,

ich habe auf einem XMC4500 ein SD-Karten Interface implementiert (ohne 
Dave Apps), das funktioniert eigentlich auch wunderbar.
Nur die erreichte Schreibgeschwindigkeit ist mir noch ein Dorn im Auge, 
da sie lediglich 150KB/s für einen Singleblock von 512Byte beträgt. (Die 
Lesegeschwindigkeit ist auch nicht sonderlich berauschend)

Ich verwende gerade den 1-Bit Modus (SD Protokoll, kein SPI) mit aktuell 
12MHz. Dabei is es (fast) egal, ob ich in den 4-Bit Modus wechsle 
und/oder die Frequenz erhöhe.

Im Logic Analyzer habe ich dann gesehen, dass die meiste Zeit auf die SD 
Karte gewartet wird (DAT0 Busy Signal). Bei 12MHz und 1-Bit Bus dauert 
die eigentliche Datenübertragung ca. 350us (512Byte) und das 
anschließende Warten auf das Busy-Ende ca. 3ms.

Ich dachte jetzt, dass ich vielleicht irgendwas in der SD Karte falsch 
konfiguriert hätte, aber ich kann beim besten Willen nichts finden. Die 
Initialisierungsschritte habe ich laut Spezifikation von www.sdcard.org 
durchgeführt.

Die Datenrate wäre zwar für meine Anwendung gut genug, dennoch würde ich 
gerne die Ursache kennen. In Windows erreiche ich übrigens ca. 20MB/s 
mit dieser Karte.

Hat jemand eine Idee?

Grüße
Gast #3806881
Lesenswert?

150KB/s entspricht ungefähr meinen Erfahrungen im 1-bit Modus.

Ich hatte es mit 4, 8 und 16 Mhz Takt versucht. Die effektive 
Übertragungsrate bei größeren Dateien wurde dadurch kaum beeinflusst.

Es scheint auch kaum eine Rolle zu spiele, ob man dazu eine uralte 64MB 
karte verwendet, oder eine schnelle 4GB Karte mit Class 10.
#3807072
Lesenswert?

LX schrieb:
> lediglich 150KB/s für einen Singleblock von 512Byte beträgt.

Wenn Du da mehr rausholen willst, musst Du Multi-Block Schreibmodus 
benutzen. Das wird in den Karten intern anders behandelt, so dass 
deutlich schnellere Schreibraten - auch mit SPI - möglich sind.

Nachteil: Braucht entweder mehr RAM oder komplexere Zugriffsfunktionen 
auf die SD.
Gast #3807140
Lesenswert?

@Grundschüler: Es sind 150KByte/s. Auf welcher Grundlage hast du die 
Geschwindigkeit ermittelt? Auch Single Block mit 512Byte?

Ich werde mal den Multiblockwrite testen und dann die Geschwindigkeit 
ermitteln...allerdings bringt mir das nichts für meine Anwendung, aber 
vielleicht bringt es die Erleuchtung.
(Firma: Vescomp) #3807318
Lesenswert?

LX schrieb:
> Ich werde mal den Multiblockwrite testen und dann die Geschwindigkeit
> ermitteln...allerdings bringt mir das nichts für meine Anwendung, aber
> vielleicht bringt es die Erleuchtung.

 Ich glaube mich dunkel zu erinnern (lange her), dass die ungeraden
 Blocks beim schreiben bzw. löschen viel schneller waren, wahrscheinlich
 arbeitet SD intern mit 1KB.

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