Forum: Mikrocontroller und Digitale Elektronik RTS und CTS beim FT232R


von Johann (Gast)


Lesenswert?

Hallo @ all

Ich habe einen FPGA an einem FT232R angeschlossen. Der FPGA sendet mit 
3MBit Daten an den FTDI Chip. Die Daten werden von dem USB-Chip an den 
PC übertragen. Dort habe ich eine Empfangssoftware geschrieben, die mir 
die übertragenen Daten darstellt.

Nun sehe ich das in meinen Daten ab und zu Sprünge vorhanden sind. Dies 
erkläre ich mir wie folgt:

Ich sende kontinuierlich Daten an den FT232R. Irgendwann ist der 
RX-Buffer voll und die Daten werden per USB an den PC übertragen. 
Während dieser Zeit schreibe ich natürlich immer weiter in den RX-Buffer 
vom FTDI-Chip. Das dabei Daten verloren gehen ist ja dann logisch. Nun 
gibt es ja die RTS und CTS Leitung beim FTDI FT232R. Diese sind ja für 
das Hardwarehandshake vorhanden.

Jedoch weiß ich nicht wie ich diese ansteuern soll. Im Datenblatt steht 
dazu nicht besonders viel. Die Beiden Leitungen sind mit dem FPGA 
verbunden.

Laut Datenblatt ist das RTS-Port ein Ausgang und der CTS-Port ein 
Eingang.

Wie muß ich dies jetzt programmieren?

von Purzel H. (hacky)


Lesenswert?

Diese Handshakeleitungen werden vom PC ueber USB  bedient, wuerd ich mal 
sagen. Ich denk nicht, dass ein Automatismus besteht.

von Johann (Gast)


Lesenswert?

Wie soll ich denn erkennen ob der RX-Buffer vom FT232R voll ist oder 
nicht?

von Zorc (Gast)


Lesenswert?

Na. du liest den ja kontinuierlich vom Controller her. Dann wird er nie 
zu voll. Oder was steht denn im Datenblatt zu diesen Pins ?
Ich wuerd mich hueten Hardwarehandshake zu verwenden, dann lieber die 
Baudrate eins tiefer legen.

von ich (Gast)


Lesenswert?

oder gleich ein FT245. Der hat ein hardwaremäsig erzeugtes Signal für 
"Puffer voll"

von Johann (Gast)


Lesenswert?

Warum wollen gleich immer alle einen anderen Baustein andrehen. Ich habe 
2000€ für FPGA-Board gezahlt das Daten mit 800MHz digitalisiert. Das 
dort dieser FTDI-Chip für die Datenübertragung eingesetzt wird ist nur 
von kurzer Dauer, dann muß diese durch eine schnelle Verbindung 
ausgetauscht werden. Aber ich werde jetzt nicht an einer 8 lagigen 
Platine löten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Für die Übetragung von Daten vom FPGA über den FT232 zum PC ist genau 
eine der beiden Handshakeleitungen erforderlich, nämlich RTS.

Damit signalisiert der FT232, daß er jetzt keine Daten mehr aufnehmen 
kann, das aber tut er nur, wenn über den Devicetreiber das 
Hardwarehandshake mit RTS/CTS aktiviert wurde.

Wenn Daten in der Gegenrichtung übertragen werden, also vom PC über den 
FT232 ins FPGA hinein, kann das FPGA den Datenstrom mit der 
korrespondierenden Handshakeleitung bremsen, und das ist hier CTS.

von ich (Gast)


Lesenswert?

Da gibts nur das Problem der Zeitverzögerung bei der RTS Leitung, da 
diese ja, wie bekannt, softwaremäsig durch den PC gesetzt wird. Und je 
nach dem wie schnell du deine Daten vom FPGA in den FTDI schreibst, kann 
es sein dass der Puffer voll ist, aber RTS noch nicht gesetzt ist.

Aber mich würde wirklich mal interessieren auf welchem 2000€ Board ein 
FT232 drauf ist. In dieser Preisklasse hätte ich was anderes erwartet.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ich weiß nicht, wieso hier so gerne angenommen wird, daß die 
Handshakeleitungen des FT232R vom PC-Treiber behandelt würden; das macht 
das Ding in Hardware. Steht auch so im Datenblatt.

von Johann (Gast)


Lesenswert?

Es ist ein Evaluationsboard von TI. Hier sind zwei 400MHz 14Bit 
AD-Wandler verbaut, die um 180° Phasenversetzt wandeln. Zudem ist auf 
diesem Board ein Virtex 5 mit 288DSP-Einheiten verbaut. Die 
Datenübertragung ist momentan leider nur über den FT232 möglich. Warum 
dieser Chip verwendet wurde bleibt ein Rätzel. Jedoch reicht es um alles 
zu testen. Anschließend muß man halt eine schnellere Datenübertragung 
erzeugen.

Rufus t. Firefly schrieb:
> Für die Übetragung von Daten vom FPGA über den FT232 zum PC ist genau
>
> eine der beiden Handshakeleitungen erforderlich, nämlich RTS.
>
>
>
> Damit signalisiert der FT232, daß er jetzt keine Daten mehr aufnehmen
>
> kann, das aber tut er nur, wenn über den Devicetreiber das
>
> Hardwarehandshake mit RTS/CTS aktiviert wurde.
>
>
>
> Wenn Daten in der Gegenrichtung übertragen werden, also vom PC über den
>
> FT232 ins FPGA hinein, kann das FPGA den Datenstrom mit der
>
> korrespondierenden Handshakeleitung bremsen, und das ist hier CTS.


Genau so habe ich es gemacht und was soll ich sagen es funktioniert ^^

Ich übertrage Testdaten die mir bekannt sind und vergleiche diese auf 
dem PC. Nach einer halben Stunde war bis jetzt noch kein 
Datenübertragungsfehler aufgetreten.

Vielen Dank

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.