Forum: Mikrocontroller und Digitale Elektronik Geschwindigkeit von SD-Karte


von Martin M. (martin69)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe mir einen Webserver zusammen gebaut. Im Prinzip geht er auch, 
aber ich möchte die Geschwindigkeit beim Auslesen der SD-Karte erhöhen. 
Mit einem SPI-Takt von 3,69 MHz geht die Karte noch. Ich würde aber 
gerne mit 7,37 MHz SPI-Takt arbeiten, geht aber nicht. Das 
Initialisieren mit der langsamen Geschwindigkeit (1,23 MHz) geht noch, 
dann ist bei der Routine "volume_boot_record_addr" Feierabend. Es wird 
dann zyklisch getaktet, wenn man auf dem Oszi den SPI-Takt anschaut. Das 
Programm bleibt irgendwo hängen.

Die Entkopplung der Signale 5V <=> 3,3V habe ich mit I-Couplern gemacht, 
die mit 10MHz spezifiziert sind.

Am SPI-Bus hängt noch:
* ein Display (das habe ich schon entfernt - bringt nichts)
* ein Schieberegister zur Porterweiterung.

Ich habe im Netz gelesen, daß die SD-Karten bis 50 MHz getaktet werden 
können, da sollten dann meine 7,37 MHz eigentlich kein Problem sein. Auf 
der 3,3V-Seite sehen die Signale sauber aus. Die Übertragung mit den 
I-Couplern scheint also zu gehen.

Es handelt sich bei der Karte um eine 1GB von Memorex (Micro-SD mit 
SD-Adapter). An was könnte es liegen, daß es mit "hoher" Frequenz nicht 
mehr geht? Den Schaltplan habe ich angehängt.

Gruß
Martin

von Tilo (Gast)


Lesenswert?

Die Frage ist auch, ob der SPI Master den Takt auch generieren kann. Bei 
dem ADUC kann man zwar höhere Taktraten als 3,5MHz einstellen, 
allerdings sind dann die Signale nicht mehr synchron und eine 
Übertragung unmögich.

Des weiteren wird bei höheren Frequenzen die Leitung zum Bauteil. Vor 
allem wenn da noch andere Komponenten dran hängen, wird das schnell 
eklig.

Eventuell mit einem Logic Analyzer auf Fehlersuche gehen .....

von holger (Gast)


Lesenswert?

Mach mal R60 (560R) wesentlich kleiner.

von Benedikt K. (benedikt)


Lesenswert?

Ein ADUM ist hier leicht oversized bzw. fehl am Platz (da keine 
galvanische Trennung notwendig ist). Ein paar einfache HCT Buffer bzw. 
5V tolerante LVX Buffer hätten den Zweck auch erfüllt und wären sogar 
noch schneller.
Der ADUM hat 20-50ns Delay, ergibt 100ns für 2 Buffer. Da bei SPI das 
ganze max einen halben Takt daneben sein darf, ist daher irgendwo 
zwischen 5 und 10MHz Schluss.
Desweiteren sind maximal 10MBps spezifiziert, also max 10M 
Pegelwechseln, also max 5MHz.

SD Karten selbst sind bis >20MHz zu gebrauchen. Ich habe etliche 
Anwendungen in denen die Karte mit 10-15MHz läuft, und das im 
Dauerbetrieb ohne Probleme.

von Martin M. (martin69)


Lesenswert?

@Tilo Lutz:
ja, der hohe Takt kommt aus dem AVR auch raus. Logic Analyzer hab ich 
leider nicht...


@Holger:
das mit dem kleineren R60 werde ich probieren. Den habe ich rein 
gemacht, daß der Strom limitiert wird, wenn 2 SPI-Einheiten was ausgeben 
wollen. Welcher Wert wäre sinnvoll?

@Benedikt K.:
ja ich weiß, die galvanische Trennung habe ich in diesem Schaltungsteil 
nicht gebraucht. Aber ich habe auch noch eine galvanisch getrennte 
Schnittstelle auf dem Board. Und mit den ADUM´s finde ich die 
Pegelwandlung ne saubere Sache.
Wieso doppelte Delay? Ist doch nur 1 ADUM in jeder Leitung????
10MBps sind doch auch 10 MHz, oder nicht? Die Signale sehen sauber aus 
(habe auf der 3,3V-Seite gemessen), ich denke nicht, daß es daran liegt.

von holger (Gast)


Lesenswert?

>@Holger:
>das mit dem kleineren R60 werde ich probieren. Den habe ich rein
>gemacht, daß der Strom limitiert wird, wenn 2 SPI-Einheiten was ausgeben
>wollen. Welcher Wert wäre sinnvoll?

100 Ohm oder noch kleiner. Aber Benedikt hat schon recht.
Wenn die so lange Duchlaufzeiten haben dann passt das
nicht mehr.

>Wieso doppelte Delay?

Siehs mal von der AVR Seite aus:
SCK wird gesendet und kommt verzögert an.
Dann erst kommt die Antwort aus der Karte
und wird wieder durch den Pegelwandler verzögert.
Versuch mal den Pegelwandler auf der Empfangsseite
raus zu nehmen und direkt an den 74AHC anzuschließen.

von Martin M. (martin69)


Lesenswert?

OK, werde es morgen Abend mal probieren. An die Delayzeiten habe ich 
nicht so gedacht, aber stimmt schon, wenn man drüber nachdenkt.

Danke für Eure Hilfe!

von Martin M. (martin69)


Lesenswert?

zur Info:

Ich habe die Signale vor und nach dem ADUM angeschaut. Bei der hohen 
Frequenz ergibt sich ein Phasenversatz von ca. 90° zwischen Eingangs- 
und Ausgangssignal. Kein Wunder, daß es Probleme macht....

Ich habe nun je einen Spannungsteiler in die Leitungen zur SD-Karte 
geschaltet und den Datenausgang direkt mit dem AVR verbunden (anstelle 
dem ADUM). Prinzipiell geht es nun mit der hohen Frequenz. Ab und zu 
gibt es Probleme, liegt aber eventuell auch an der Software. Auf jeden 
Fall ist klar, was prinzipiell an der Hardware falsch war. Schade um das 
Geld für die teuren ADUM´s...

von Thomas (Gast)


Lesenswert?

Wie groß ist denn der Spannungsteiler? Hast du dir jetzt nochmal die 
Pegel angeschaut. Kann sein das durch die Eingangskapazitäten das Signal 
jetzt nicht mehr so "eckig" ist.

von Martin M. (martin69)


Lesenswert?

ich habe 1k8 mit 3k3 in Reihe. Die Signale habe ich mir nicht 
angeschaut.

Ich werde nun vermutlich die Bilder beim Booten von der SD-Karte ins 
externe RAM kopieren. Ich denke das geht vom RAM beim Abruf der Bilder 
dann noch deutlich schneller als mit der SD-Karte. Ich werde das morgen 
mal testen. Dann wäre die Geschwindigkeit der SD-Karte nur zweitrangig.

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.