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