Forum: Mikrocontroller und Digitale Elektronik Zugriffszeit auf SD/MMC über SPI


von greg (Gast)


Lesenswert?

Hallo,

hat jemand zufälligerweise schonmal die übliche Zugriffszeit auf 
SD/MMC-Karte n gemessen, wenn man auf sie über SPI zugreift?

In einer Anwendung möchte ich direkt von SD/MMC in einen kleinen 
Ringbuffer auf dem AVR "streamen". Das muss nicht besonders schnell 
sein, aber die Zugriffszeit ist dabei sehr wichtig, da RAM sehr knapp 
ist. :) Bevor ich jetzt herumprobiere, nur um herauszubekommen, dass die 
Zugriffszeiten normalerweise eh viel zu hoch sind, hab ich gedacht frage 
ich einfach mal.

von Fly (Gast)


Lesenswert?

Datenblatt lesen... Dieser Wert wird aber je nach Kartenmodell / 
Hersteller variieren.
Ich würde deinen Puffer so gross wie möglich gestalten.... Wenn es 
Überläufe gibt, mehr Ram auftreiben oder schnellere Karte :)

von greg (Gast)


Lesenswert?

Hmm, okay... ich dachte da gibt es Richtwerte oder Minima, wie zB 
"eigentlich immer unter 1ms" o.ä. Ich werde mich mal umschauen.

von fubu1000 (Gast)


Lesenswert?

hallo,
meine SD und auch MMC karte läuft auf mindestens 8 mhz in SPI 
READ_modus, und im 6 mhz WRITE_modus genau wie laut spezifikation, 
sollte jede neuere SD/MMC mitmachen ( bzw. SCHNELLER)) !!!
gruss

von greg (Gast)


Lesenswert?

Danke für die Antwort, aber das beantwortet meine Frage leider nicht... 
Laut Spezifikation laufen SD-Karten ja sogar bis 20Mhz SPI-Takt, die man 
mit einem AVR nie erreichen wird. :)

Was mich interessiert ist die Zeit, die zwischen Absetzen eines 
Blocklesekommandos bis zum Eintreffen der Daten vergeht. Ich habe jetzt 
ein paar (ungenaue) Benchmarks gemacht, da kam ich mit meinen beiden 
Karten auf etwa 0.6-0.8ms. Vielleicht mache ich heute nochmal genauere 
Tests.

Auf jeden Fall reicht das für meine Anwendung aus, wenn ich mich nicht 
verrechnet habe.

von greg (Gast)


Angehängte Dateien:

Lesenswert?

OK, nun habe ich einmal genau nachgemessen. Code ist im Anhang. Statt 
mit 500KHz SPI-Takt arbeite ich jetzt mit 6Mhz bei 12MHz CPU-Takt (AVR 
Mega8); dabei erreiche ich sehr gute Zugriffszeiten und Transferraten

* ExtremeMemory "Premium" 1GB: ca. 300KB/s bei single block transfers, 
0.19ms Zugriffszeit
* Noname 1GB: ca. 255KB/s bei single block transfers, 0.43ms 
Zugriffszeit

Bei multi block transfers scheinen die beiden Karten mit 330KB/s den 
Mikrocontroller (oder SPI-Bus?) auszulasten. Bei 16Mhz prognostizere ich 
dann etwa 440KB/s (einfach hochgerechnet).

Vielleicht ist das ja für jemanden nützlich zu wissen.

von Alex (Gast)


Lesenswert?

Das Lesen geht bei SD-Karten im SPI-Modus eigentlich noch relativ flott, 
erst beim Schreiben gehen die Dinger leider in die Knie. Mit gängigen 
Karten habe ich zu tun, dass ich etwa 160 kByte/s schaffe ...

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.