Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage USB / FT-245R


von Ralf G. (dl5eu)


Lesenswert?

Hallo Forengemeinde,

auch nach vielen Wochen Experimentieren ist mir die Geschichte mit PC, 
USB und FT245R noch nicht ganz klar. Ich verwende den D2xx-Treiber unter 
Windows (kein VCP). Die Verbindung zwischen PC und µC über den FT245 
funktioniert grundsätzlich, ich kann auf beiden Seiten Daten senden und 
empfangen.

Was ich glaube verstanden zu haben:

- Die Übertragung über den USB erfolgt in Paketen u.U. unterschiedlicher 
Größe alle 1 Millisekunden;
- Es werden immer alle Daten übertragen, die zu diesem Zeitpunkt in den 
Puffern sind bzw. hinein passen und die innerhalb einer Millisekunde 
übertragen werden können.

Was macht nun mehr Sinn, FT_Read oft hintereinander aufzurufen um immer 
alle Daten, die aktuell im Puffer sind, schnell zu lesen und die dann in 
einen noch größeren Puffer im PC zu speichern und anschließend zu 
verarbeiten oder mittels FT_Read immer jeweils nur so viele Daten 
einzulesen wie gerade erwartet werden? Das gibt einen ziemlichen 
Overhead bei sehr kleinen Paketen. Eine zusätzliche Pufferverwaltung 
möchte ich mir aber, wenn möglich, gerne ersparen.

Meine Daten werden in beiden Richtungen in kleinen Paketen übertragen, 
wobei immer eine Paketnummer und die Paketgröße mitgesendet wird. Das 
erlaubt mir festzustellen, ob die Pakete in der richtigen Reihenfolge 
ankommen und ob sie vollständig sind. Aktuell habe ich es mir so 
überlegt: FT_Read aufrufen um die Paketnummer und -größe zu lesen und 
dann in einem zweiten Aufruf die reinen Daten lesen, sofern mindestens 
so viele Daten wie erwartet werden im Puffer vorhanden sind 
(FT_GetQueueStatus).

Hierzu noch eine Frage: Liest der D2xx-Treiber den FT245 aus auch wenn 
kein Aufruf von FT_Read erfolgt (ist)? Wenn ja, würde das bedeuten, dass 
er eigene Puffer hat. Sollte das so sein, weiß jemand, wie groß die 
sind? Darüber habe ich bis jetzt nämlich nichts gefunden und die Puffer 
des FT245 selbst sind ja recht klein (128 bzw. 256 Bytes).

Wie macht Ihr so etwas?

Vielen Dank für Eure Hilfe!

Beste Grüße,

Ralf

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.