Hallo! Ich habe einen µC der über UART eine Anbindung an den FT2232 hat. Am PC verwende ich den D2xx Treiber und nicht den Virtual Comport Treiber. Der µC fungiert als loopback, d.h. der µC sendet sobald er ein Zeichen empfangen hat dieses sofort wieder an den FT2232 zurück. Dies funktioniert fehlerfrei, jedoch mit einer sehr hohen Verzögerung. So vergehen ca. 300 ms zwischen Senden und Empfangen am PC. Baudrate habe ich auf 19200 gesetzt, 8 Bits, 1 Stopbit, Parity None. Latencytimer auf 2 ms und allgemeine Timeouts auf 500 ms. Daten lese ich vom FTDI, sobald der FTDI Treiber ein Eventhandle(FT_SetEventNotification) setzt. Danke!
Kannst Du beim D2xx-Treiber die Fifo-Größen konfigurieren? Der FT2232 hat recht große Sende- und Empfangs-Fifos, die beim Übertragen sehr kleiner Datenmengen eher hinderlich sind, da das entsprechende Event zum Senden/Empfangen erst nach einem gewissen Timeout erzeugt wird.
Hi, Welche FIFOs meinst du, die Hardware FIFOs am FT2232 oder die Empfangspuffer im Treiber? Letzere sollten durch FT_SetUSBParameters beeinflussbar sein. Für die Hardwarefifos kenne ich nichts. Allerdings habe ich den Latencytimer auf 2 ms gesetzt. Dadurch sollte der FT2232 auch kurze Pakete nach zumindest 2 ms zum PC schicken. Lg
Die Hardwarefifos meine ich, nicht treiberinterne Puffer. Beim Hardware-Fifo sollte sich die Triggerschwelle festlegen lassen, die darüber bestimmt, bei welchem Füllstand ein Event/Interrupt generiert wird.
300ms sind selbst in dem Fall zu viel, da der Latency-Timer in jedem Fall den Empfang auslöst, wenn er abgelaufen ist. Also müßte hier nach 2ms etwas aufschlagen. Kann es sein, daß das Problem eher auf der PC-Seite zu finden ist?
Die µC Seite würde ich einmal ausschließen, denn diese macht nichts anderes als RX Flag zu pollen und das empfangene Byte sofort wieder in den uart Puffer zu schreiben. Am PC habe ich per FT_SetEventnotification ein EventHandle registriert und ein eigener Thread wartet bis das EventHandle im signaled state ist, prüft danach wie viele Bytes gelesen werden können und ließt diese ein. Das hat bei mir auf einem anderen Board problemlos funktioniert - allerdings im FIFO-Modus und nicht im UART Modus des FTDIs.
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.