mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FTDI FT2232 UART Verzögerung


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.