Forum: Mikrocontroller und Digitale Elektronik FT232BM: Flusskontrolle CTS/RTS


von Alexander Höller (Gast)


Lesenswert?

Hallo,

also ohne Flusskontrolle funktioniert der FT232BM bei mir prima. Nur
wenn ich die Flusskontrolle (CTS/RTS) dann einschalte will er nicht
mehr. Wenn ich CTS auf Masse ziehe dann kann er zwar einwandfrei senden
.. nur gibt er bei RTS immer nen High-Pegel (nicht empfangsbereit aus).
Woran kann das liegen? Sogar gleich nach dem Einschalten &
Initilaisieren, wenn noch keine Daten an den FT232BM gesendet wurden
meint er, er sei nicht empfangsbereit. Ich b

mit freundlichen Grüßen,
Alexander Höller

von Alexander Höller (Gast)


Lesenswert?

Hmmm, das "Ich b" war mal ein Satz den ich wohl nicht ganz wegelöscht
hab - ignoeriert den bitte einfach fg

von Matthias H. (Gast)


Lesenswert?

was hängt denn an dem FT232BM noch dran, ein µC?

von Alexander Höller (Gast)


Lesenswert?

an Rxd und TxD hängt direkt ein µC dran .. die andrne Pins sind an ne
Stiftleiste rausgeführt !
Und wie gesagt, hab ich an CTS Masse angelegt und an RTS mit nem
Multimeter gemessen...

Senden hat auch perfekt funktioniert ... und beim Auslesen kam immer
ein "Read_TimeOut" - auch wenn ich testweise Daten in den FT232BM
reingeschickt hab (vom µC aus) ohne auf die Flusskontrolle zu achten
(weil laut Flusskontrolle hätt ich ja gar nix senden dürfen) - also
scheint er auch gar keineDaten anzunehmen wenn RTS anzeigt, dass er
nicht empfangsbereit ist.

mfG,
aleX

von Matthias H. (Gast)


Lesenswert?

ich weiß nicht, ob ich das jetzt richtig verstanden habe. Du sendest
Daten vom µC zum PC, hast CTS auf Masse gelegt und RTS freihängend.
Will der µC nun senden, muss er doch RTS auf Masse ziehen, um beim PC
nachzufragen, ob er bereit ist. Der PC antwortet dann auf der
CTS-Leitung.

von Alexander Höller (Gast)


Lesenswert?

Hmmm ... ich erklär's nochmal:

Ich hab ein einen FT232BM + Beschaltung (Quarz, USB Stecker, EPROM,
usw.) und ein µController Board.
ALLE Leitungen des FT232BM sind auf ne Steckerleiste geführt:
RxD und TxD vom FT232BM hab ich dann über Kabel mit TxD und RxD des
µControllers verbunden. Die andren Leitungen des FT232BM habe ich noch
immer frei auf der Steckerleiste (ist nur ein Prototyp und da will ich
alles verbinden können wies mir passt). Wenn die Verbindung zwischen
FT232BM und µC OHNE Flusskontrolle eingestellt wird, dann funktioniert
das auch super!!

Nur wenn ich dann die Flusskontrolle mit CTS und RTS einschalte, dann
gibtz Probleme. CTS vom FT232BM wird dann direkt mit Masse verbunden
(somit sag ich dem FT232BM, dass er senden darf). Und in diese Richtung
(vom PC via USB zum FT232BM und von dort zum µC) funktioniert es auch.

Nur in die andere Richtung (µC -> FT232BM) geht es nicht, der FT232BM
meint immer, er sei nicht empfangsbereit (also keine Daten vom µC zum
FT232BM erlaubt) - also RTS gibt immer nen High-Pegel aus! Und das
sogar direkt nach dem Einschalten des FT232BM, wenn der Buffer also
leer sein muss, und er bereit sein müsste Daten vom µC zu bekommen!



Kommunikation zwischen PC und FT232BM ist kein Problem, das regelt der
mit seinem Treiber von selbst (außerdem is das ja via USB, also keine
CTS Leitngen, etc.). Das Problem oben besteht eben nur beim Interface
zwischen FT232BM und µC!

Hoffe, ich hab jetzt einigermasen verständlich erklärt was mein Problem
ist!

mit freundichen Grüßen,
aleX

von Matthias H. (Gast)


Lesenswert?

Entschuldige, aber bin selber grad dabei, mich in den FTDI
einzuarbeiten. So wie ich das verstanden habe, stellt der FTDI eine
normale serielle Schnittstelle bereit. Auch für den PC ist es nur eine
serielle Schnittstelle. Wenn du CTS auf Masse legst, dann heißt das für
den PC, dass der µC bereit zum Empfang ist. Er kann also senden. Wenn
der µC senden will, dann muss er über RTS nachfragen ob der PC bereit
ist. Kann er aber nicht, weil RTS nicht angeschlossen auf high liegt.
Ich weiß nun nicht, wie der FTDI das auswertet, wenn trotzdem Daten
kommen. Es kann schon sein, dass es dann eine Fehlermeldung gibt.

von Alexander Höller (Gast)


Lesenswert?

Hmmm, ich verwende aber nicht den VCP (Virtual Com Port) Treiber sondern
  D2XX DLL USB Treiber. Somit kann ich die Flusskontrolle nicht am PC
schon regeln.

Es geht mir auch nicht so sehr darum, warum es nicht geht wen ich
trotzdem Daten reinschicke, wenn RTS High ist. Sondern viel mehr darum,
warum RTS überhaupt Hight ist wenn der FT232BM eigentlich bereit sein
müsste Daten vom µC zu empfangen!

mit freundlichen Grüßen,
aleX

von Franz Wudy (Gast)


Lesenswert?

Hallo Alex!
Hast du das Problem mit der dauernd aktivierten RTS# - Leitung lösen
können?
Ist bei mir nämlich auch so!

Danke und beste Grüße -


Franz

von Steven Kienast (Gast)


Lesenswert?

Also ich steh jetzt auch "vor" dem Problem (vor, weil ich noch am
designen in eagle bin).

Ich hab eigentlich noch keine Ahnung von Flusskontrolle, aber hier mal
ein Auszug aus dem FTDI app note AN232B-04_DataLatencyFlow:

1. None - this may result in data loss at high speeds
2. RTS/CTS - 2 wire handshake. The device will transmit if CTS is
active and will drop RTS if it
cannot receive any more.
3. DTR/DSR - 2 wire handshake. The device will transmit if DSR is
active and will drop DTR if it
cannot receive any more.


Also erstmal ein paar Fragen:

Gibts eigentlich einen Unterschied zu Variante 2 und 3, ausser dass die
Leitungen anders heißen?

Dann Verständnis: Die # hinter RTS/CTS heißt active low?
Also ich interpretiere das ganze weniger kompliziert als ihr.
Also für CTS nen output am controller auf 0 stellen wenn der controller
empfangen können soll. für RTS eben einen input am controller abfragen
bevor man was rausschickt. fragt sich nur noch: was heißt it will drop
rts... im falle active low jetzt?

Mhm. So wie ich das gelesen hab ist Flusskontrolle für seriell über usb
schon wichtig auch bei 115kbaud, drum will ich eben sicher gehen.



MfG Steven

von Profi (Gast)


Lesenswert?

Bei der guten alten Seriellen gibt es 3 Ausgänge und 5 Eingänge.
Unter DOS hat das meist nur geklappt, wenn alle 3 Eingänge (außer RxD
natürlich und RI) richtiges Potential hatten.
Vielleicht ist das hier auch so nachgebildet?
Klemm also die anderen beiden freien Handshake-Leitungen auch mal an.
Soweit ich mich erinnere, müssen alle 3 den selben Pegel haben, weiß
nicht mehr welchen.

von Steven Kienast (Gast)


Lesenswert?

Na das klingt mir jetzt aber argh komisch, schliesslich kann man sie ja
aussuchen welche Flusskontrolle man benutzt.

Mir gehts nur darum ob die rts/cts version so richtig verstehe... hat
vielleicht jemand nen link zu der offiziellen rs232 spezifikation?


MfG Steven

von Franz (Gast)


Lesenswert?

Also, ich will jetzt nicht gekillt werden, aber soviel zum Thema
Flusskontrolle:
Ich lese eine MMC-Karte mit dem Microkontroller aus, schreibe also auf
Kommando 512 Bytes seriell auf den FT232 raus, mit einer
Geschwindigkeit von 500'000 Baud.
Hat man die D2XX-Treiber offen, ich weiß nicht obs mit dem VComs auch
geht, geht kein Bytchen verloren, dank den Buffer auf der USB-Seite.
Ich hab also das Handshake komplett über Bord geworfen, es geht ja auch
so.
Die Statusleitungen kapier ich nicht, der FT232 zieht schon nach dem
Initialisieren die Statusleitung für überfüllten Puffer nach oben.
(siehe erstes Posting). Die Doku ist auch reichlich schlecht (siehe
oben).

Vielleicht schaffts ihr ja....

Franz

von Steven Kienast (Gast)


Lesenswert?

Kein Grund dich zu killen :D

In dem Appnote wirds halt nur so kritisch dargestellt :/. Und ich werd
mal mit ausprobieren, wenns nicht hinhaut dann halt ohne. Werde
übrigends den ft 232 rl verwenden... da kann man wenns is das signal
intern invertieren lassen^^

von Franz Wudy (Gast)


Lesenswert?

Invertieren: invertiert (Mist) = Mist invertiert!!! ;-)

Aber interessieren würds micht trotzdem, obs bei dir klappt!

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.