Forum: Mikrocontroller und Digitale Elektronik FT2232H Maximale Geschwindigkeit FTCSPI DLL


von Tom (Gast)


Lesenswert?

Ich experimentiere gerade mit der FTCSPI DLL um einen USB-SPI Konverter 
zu bauen.
Mich interessiert jedoch die maximal erzielbare Geschwindigkeit. Es gibt 
einen Modus, wo man 64K Bytes auf einmal übertragen oder lesen kann. 
Dann erreicht er auch tatsächlich eine sehr hohe Geschwindigkeit (30MHz 
SCLK- Takt)
Problematisch wird es, wenn man einzelne Übertragungen machen will, d.h. 
den CS-Pin dazwischen mal wieder umschalten. Dann legt das Ding Pausen 
im ms-Bereich zwischen den einzelnen Übertragungen ein und die 
Übertragungsrate ist sehr gering. Gibt es irgend eine Einstellung die 
ich übersehen habe?
Ich möchte einen 16Bit ADC mit >1MSPS anschließen, aber ich habe leider 
keinen gefunden, der die Ergebnisse kontinuierlich ausgibt, solange CS 
low ist und ein Takt anliegt. Dann würde es im schnellen Modus 
funktionieren...

von Tom (Gast)


Lesenswert?

Ich habe weiterexperimentiert: die Pause zwischen den einzelnen 
Übertragungen bekomme ich nicht unter 5ms. Schlecht.
Darüberhinaus ist mir aufgefallen, dass bei einer Mehrfachübertragung 
die Pause zwischen dem letzten und dem vorletzten Byte ca. 4x so lange 
ist wie die Pause zwischen den anderen Bytes.
Langsam bezweifle ich, dass dieser Baustein für was anderes als 
SPI-Flash lesen wie im Datenblatt tauglich ist...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tom schrieb:
> Ich habe weiterexperimentiert: die Pause zwischen den einzelnen
> Übertragungen bekomme ich nicht unter 5ms.

Das kann auch an Windows selber liegen. Reduziere mal die Granularität 
des Schedulers mit der Win32-API-Funktion timeBeginPeriod, der Du 1 
übergibst.

http://msdn.microsoft.com/en-us/library/ms713413%28v=vs.85%29.aspx

von Christian R. (supachris)


Lesenswert?

Für sowas ist weder USB noch Linux/Windows ausgelegt. Ungepuffert geht 
das garantiert schief. Du musst die Daten in Hardware irgendwie puffern. 
Mit FPGA oder µC und dann blockweise abholen.

von Max (Gast)


Lesenswert?

Oder schalt nen µC deiner Wahl als Puffer dazwischen (Bei AVRs kann man 
die UART zum SPI umfunktionieren damit sind schon kleine AVR geeignet 
und wenns nid langt nimmt man halt nen Xmega oder gleich nen anderen 
(ARM?))

von Karl M. (movex)


Lesenswert?

Ich stand vor dem ähnlichen Problem, Daten von mehreren ADCs per SPI zu 
holen. Mittels uC, der eine DMA Engine hat geht das super. Also ein 
XMEGA oder v.a. ein ARM würd sich da schon anbieten.

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.