FT232R (USB zu seriell) lässt nicht alles durch

OP #1260887
Hallo Forumgemeinde

Ich suche jemanden, der Erfahrung mit dem FT232R von FTDI hat.
Mein Problem: Ich kommuniziere über den FT232R mit einem anderen Chip an 
den ich Kommandos schicke (einfache Hex Werte), die dieser dann 
ausführen soll. Das funktioniert soweit eigentlich wunderbar! Aber es 
ist ein Kommando dabei (0xF0) das der FT232R einfach nicht durchlassen 
will!? Ist es möglich dass der FT232R selbst einige Kommandos kennt mit 
dem man diesen einstellen könnte? Das Datenblatt habe ich natürlich 
sorgfältig durchgelesen, aber zu diesem Kommando ist nirgends etwas 
beschrieben.
Kann mir da jemand weiterhelfen?

Gruss
Pascal
Persönliche Seite #1260889
Pascal Bazelli schrieb:
> Hallo Forumgemeinde
>
> Ich suche jemanden, der Erfahrung mit dem FT232R von FTDI hat.
> Mein Problem: Ich kommuniziere über den FT232R mit einem anderen Chip an
> den ich Kommandos schicke (einfache Hex Werte), die dieser dann
> ausführen soll. Das funktioniert soweit eigentlich wunderbar! Aber es
> ist ein Kommando dabei (0xF0) das der FT232R einfach nicht durchlassen
> will!? Ist es möglich dass der FT232R selbst einige Kommandos kennt mit
> dem man diesen einstellen könnte? Das Datenblatt habe ich natürlich
> sorgfältig durchgelesen, aber zu diesem Kommando ist nirgends etwas
> beschrieben.
> Kann mir da jemand weiterhelfen?
>
> Gruss
> Pascal

Der FT232R sollte eigentlich alles senden, was ihm gegeben wird. 
Konfiguriert wird er nicht per RS232 sondern über USB.

Kommt überhaupt nichts durch oder wird es verstümmelt?
Eventuell 7bit-Ausgewählt?
Persönliche Seite #1260906
Dann sieh Dir mal das übertragene Bitmuster an. Und kontrolliere die 
Baudratenerzeugung in Deinem µC - was ist dessen Taktquelle?
Ist die zu ungenau, kann es zu Abtastfehlern beim Empfangen auf der 
seriellen Schnittstelle kommen, und die dürften sich bei einer Bitfolge 
wie 0xF0 besonders stark zeigen.
Gast #1260921
Beim 245 muss man unter Linux "stty raw" auf das device, das ftdi_sio 
anlegt, anwenden, um "einfach alles" zu empfangen. vielleicht ist es 
hier aehnlich.
OP #1260925
der vorschlag von rufus mit der baudrate scheint mir am 
wahrscheinlichsten. aber auch da hab ich meine zweifel, denn die 
kommunikation zwischen USB und FT232R sollte doch eigentlich nicht von 
der baudrate abhängig sein, die auf der sekundären seite an der RS232 
schnittstelle eingestellt ist, oder? und auch dann sollte ich wenigstens 
ein signal (dann eben in der falschen baudrate) sehen?!?
Persönliche Seite #1260940
> aber auch da hab ich meine zweifel, denn die kommunikation zwischen
> USB und FT232R sollte doch eigentlich nicht von der baudrate
> abhängig sein, die auf der sekundären seite an der RS232
> schnittstelle eingestellt ist, oder?

Nein, das ist sie auch nicht. Aber die Kommunikation zwischen Deinem 
"anderen Chip" und dem FT232 ist davon abhängig. Wenn Dein "anderer 
Chip" mit einer fehlerhaften Baudrate (also einer, die ein paar Prozent 
zu hoch oder zu niedrig ist) sendet, dann kann der Empfänger im FT232 
die Daten nicht mehr richtig erkennen. Und das spezifische Bitmuster 
0xF0 kann dann durchaus auch komplett unter den Tisch fallen.
OP #1261027
dass die baudrate zwischen FT232R und DS2480 ein rolle spielt ist mir 
soweit klar. die sache ist aber die: wenn ich das kommando 0xF0 an die 
USB schnittstelle schicke gibt diese diesen wert an den FT232R weiter. 
der FT232R wandelt das signal in RS232 um und gibt das dann raus (in 
einer bestimmten baudrate). auch wenn die baudrate nun für den DS2480 
nicht die richtige ist, so sollte der FT232R auf der TxD leitung ein 
signal ausgeben. das passiert aber bei genau diesem kommando nicht!
abgesehen davon muss die baudrate stimmen, denn alle anderen kommandos 
funktionieren einwandrei!
Persönliche Seite #1261058
Gut, aus Deiner Beschreibung wurde nicht klar, in welcher Richtung das 
Problem auftritt.

> die sache ist aber die: wenn ich das kommando 0xF0 an die
> USB schnittstelle schicke gibt diese diesen wert an den
> FT232R weiter. der FT232R wandelt das signal in RS232 um
> und gibt das dann raus (in einer bestimmten baudrate).
> auch wenn die baudrate nun für den DS2480 nicht die richtige
> ist, so sollte der FT232R auf der TxD leitung ein
> signal ausgeben. das passiert aber bei genau diesem kommando nicht!

Das hast Du mit einem Oszilloskop überprüft?
Mit was für einem Programm steuerst Du auf dem PC die (virtuelle) 
serielle Schnittstelle an?
#1261175
Pascal Bazelli schrieb:
> Ja ich habe das Signal mit dem Oszilloskop überprüft. Die Software die
> den virtuellen COM-Port ansteuert habe ich selbst geschrieben.

Dann öffne mal ein Hyperterminal und schicke damit 0xF0 ab.
Ich bin mir sicher, dann siehst Du es auch.


Peter
Persönliche Seite #1261237
Dieser Test ist mit dem sogenannten "Terminalprogramm" von Tobi 
(hterm) einfacher durchzuführen, da das die hexadezimale Eingabe von zu 
sendenden Daten zulässt.

Bei einem richtigen Terminalprogramm wie Hyperterminal dürfte das 
Eingeben des Zeichens ð auf der Tastatur nicht ganz einfach sein (das 
ist das ANSI-Zeichen mit dem Code 0xF0).
#1261289
Rufus t. Firefly schrieb:

> Bei einem richtigen Terminalprogramm wie Hyperterminal dürfte das
> Eingeben des Zeichens ð auf der Tastatur nicht ganz einfach sein (das
> ist das ANSI-Zeichen mit dem Code 0xF0).

Danke, dass Du das Zeichen gepostet hast. Jetzt kann man es via 
Copy&Paste in Hyperterminal einfügen oder, falls man es momentan nicht 
benötigt, in einer Textdatei abspeichern.

Im Ernst: Geht das nicht mit Alt-0240 ?
Gast #1262479
Ich habe das Problem lösen können und möchte hier noch kurz die Lösung 
posten für alle, die auch auf dieses Problem gestossen sind:
Und zwar geht es um den Handshake mit dem FT232R. Man muss darauf 
achten, dass beim öffnen des Ports die Einstellung für den Handshake auf 
Xoff eingestellt wird. Da beim COM-Port der Handshake entweder durch 
Hardware oder durch Software realisiert werden kann, muss man bei einer 
Lösung mit Hardware den softwaremässigen Handshake ausschalten. 0xF0 
wird vom FT232R so interpretiert, dass hier die Nutzdaten enden...

Gruss
Pascal
#1262533
Pascal schrieb:
> 0xF0
> wird vom FT232R so interpretiert, dass hier die Nutzdaten enden...

Nö, der FT232 ist unschuldig.
Ihm ist das vollkommen wurscht, der überträgt alles.

Die Auswertung des SW-Handshake geschieht erst im UART-Treiber, daher 
muß man auch dort einstellen, ob man SW-Handshake will oder nicht.

Daß Du SW-Handshake aktiviert hast, wurde aber schon vermutet.
Natürlich sind dann keine Binärdaten mehr übertragbar, da bestimmte 
Bytes für Sonderfunktionen reserviert sind.
SW-Handshake benutzt man deshalb nur für Textübertragung.


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.