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