mikrocontroller.net

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


Autor: Alexander Höller (Gast)
Datum:

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

Autor: Alexander Höller (Gast)
Datum:

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

Autor: Matthias H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was hängt denn an dem FT232BM noch dran, ein µC?

Autor: Alexander Höller (Gast)
Datum:

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

Autor: Matthias H. (Gast)
Datum:

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

Autor: Alexander Höller (Gast)
Datum:

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

Autor: Matthias H. (Gast)
Datum:

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

Autor: Alexander Höller (Gast)
Datum:

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

Autor: Franz Wudy (Gast)
Datum:

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

Autor: Steven Kienast (Gast)
Datum:

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

Autor: Profi (Gast)
Datum:

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

Autor: Steven Kienast (Gast)
Datum:

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

Autor: Franz (Gast)
Datum:

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

Autor: Steven Kienast (Gast)
Datum:

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

Autor: Franz Wudy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Invertieren: invertiert (Mist) = Mist invertiert!!! ;-)

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

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.