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
Hmmm, das "Ich b" war mal ein Satz den ich wohl nicht ganz wegelöscht hab - ignoeriert den bitte einfach fg
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
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.
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
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.
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
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
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
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.
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
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
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^^
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.