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