Frage:
Was muss ich über RS232 & FT232R wissen?
talsit
2010-07-17 05:43:14 UTC
view on stackexchange narkive permalink

Ich versuche, eine XSens-IMU mit meinem Computer zu verbinden, und stoße auf interessante Schwierigkeiten. Die IMU verfügt über einen RS232-Anschluss, der nur die Pins VCC, GND, TX, RX und sonst nichts verwendet. Das mitgelieferte SDK verfügt über einen benutzerdefinierten RS232-USB-Adapter, der FT232R und MAX3160 verwendet. Abgesehen davon scheint es jedoch nichts Besonderes zu tun.

Der Hersteller behauptet, dass die IMU Standard-RS232 verwendet ( und ich habe keinen Grund, an ihnen zu zweifeln. Um Platz zu sparen (ihr Konverter ist ziemlich sperrig), versuche ich, einen Sparkfun FTDI Basic Breakout 5V zu verwenden.

Wenn ich alle COM-Einstellungen gleich einstelle (Baudrate, Parität, Stopp usw.) und eine Verbindung zum Gerät herstelle, erhalte ich zwar Daten zurück, aber es scheint nur Kauderwelsch zu sein. Ich gebe Befehle aus, die TX-LED am FTDI blinkt, die RX-LED auch, und ich erhalte Daten, aber es entspricht nicht meinen Erwartungen.

Kann mir jemand "Fallstricke" vorstellen, die mir möglicherweise fehlen? ? Gibt es eine FooBar, die zum Aktivieren mit dem DingDing verbunden werden muss?

Was sind die Porteinstellungen und womit haben Sie sie bisher verbunden? War dies ein PC, an den Sie ihn angeschlossen haben? Ist dies das 921600-Bit / s-Gerät in Ihrer anderen Frage?
Ich habe das Gerät und den VCOM-Port auf 115200 eingestellt, 8 Bit, keine Parität, 2 Stopbits, kein xonxoff, keine rtscts, keine dsrdtr. Ja, es ist das Gerät in meiner anderen Frage. Im Moment werde ich einen PC verwenden, möchte aber später das gesamte System in eine Box packen.
VCC ist nicht Standard RS232.
2 Stoppbits sind ungewöhnlich, der Standardwert ist normalerweise ein Stoppbit.
Ich akzeptiere 5-30V als VCC und es werden 2 Stoppbits verwendet. Ich habe jedoch sowohl 1 als auch 2 Stoppbits ausprobiert.
Fünf antworten:
#1
+12
Jeanne Pindar
2010-07-17 16:59:16 UTC
view on stackexchange narkive permalink

Standard rs-232 (wie Ihre IMU) und TTL-Level rs-232 (wie der FTDI-Chip) unterscheiden sich.

Standard rs-232 schaltet zwischen + V und -V um (wobei V ursprünglich 12 war, aber jetzt arbeiten die meisten Geräte mit viel niedrigeren Spannungen). Der TTL-Pegel rs-232 schaltet zwischen 0 und 5 V um. Sie benötigen einen rs-232-Transceiver, um die Spannungen umzuwandeln, wie z. B. den MAX3160-Chip (obwohl dies ungewöhnlich ist - so etwas wie der max2332 ist üblicher) Mit dem von Ihnen verknüpften Gerät wird eine Verbindung zu einem Mikrocontroller hergestellt, nicht zu einem typischen rs-232-Gerät.

Ich denke, das klingt nach dem, was ich falsch mache. Ich würde einen dieser Transceiver benötigen. Ich denke, sie haben sich für den MAX3160 entschieden, weil er bis zu 1 Mbit / s unterstützt. Jeder weiß, wo ich eine einzelne Karte bekommen kann, die an einem Ende USB kann, und am anderen "echte" rs232 / EIA-232 ? Und in der Lage sein, Geschwindigkeiten bis zu 921600 zu erreichen?
#2
+4
starblue
2010-07-17 13:54:04 UTC
view on stackexchange narkive permalink

Sind Sie sicher, dass die Spannungspegel kompatibel sind?

Standard RS232 hat ± 12 V-Pegel, die normalerweise von einigen MAX-Chips in TTL-Pegel umgewandelt werden.

In Ihrem Fall der Sparkfun Das FTDI-Breakout-Board hat TTL-Pegel (0 / 5V), während der MAX3160 RS232 und RS485 (!) Kann, sodass eine Nichtübereinstimmung vorliegt.

Ich werde es noch einmal versuchen, aber nach dem Lesen der technischen Daten akzeptieren die xsens 5-30 V!
Ja, aber was gibt es * aus *?
Beachten Sie auch, dass die Polarität zwischen RS232 und TTL invertiert ist.
#3
+3
JustJeff
2010-07-17 06:53:13 UTC
view on stackexchange narkive permalink

Wenn Sie sich die technischen Daten einiger Geräte auf dieser Site ansehen, wird die digitale Schnittstelle als "maximal 921600 Bit / s" aufgeführt. Wenn Sie also keinen guten Grund zu der Annahme haben, dass das Gerät mit dieser bestimmten Baudrate arbeitet, würde dies der Fall sein Es lohnt sich, mit ein paar anderen Baudraten darüber zu sprechen, insbesondere wenn Sie eine gute Vorstellung davon haben, wie die Daten aussehen sollen. Ich würde mein Terminal auf 115200 einstellen und prüfen, ob die Daten bei dieser Rate sinnvoll sind, und dann die Baudraten-Skala herunterarbeiten. Wenn Sie 9600 erreichen und es immer noch nach Kauderwelsch aussieht, gehen Sie zurück zu 115200 und arbeiten Sie auf.

Eine Rate von 921600 ist fast unbekannt. Es ist ein Standard-Multiple, aber ich habe ehrlich gesagt noch nie gesehen, dass RS232 schneller als 115200 geschoben wurde. Wenn es erforderlich wird, schnellere Raten als 115200 zu verwenden, wechseln Designer normalerweise zu einer anderen, zuverlässigeren Schnittstelle.

Übrigens gehe ich immer noch davon aus, dass Sie das Gerät an einen PC angeschlossen haben Port und haben einige Dokumentation, die das Datenformat vorschlägt. Wenn es sich um eine Option zur Auswahl einer Baudrate handelt, verwenden Sie 115200. Dies ist viel zuverlässiger, vorausgesetzt, sie ist mit Ihren allgemeinen Datenratenanforderungen kompatibel.

Ja, ich habe die meisten mir zur Verfügung stehenden Baudraten ausprobiert. Ich habe alle Kombinationen aus Stopbit, Bytesize und Buadrate ausprobiert. Ich sende über das serielle Kabel etwa 44 kB / s. Als Test habe ich jedoch versucht, die Datenrate vom Gerät auf 8,4 kB / s und die Baudrate auf 115200 zu reduzieren Mit ihrer USB-Serie funktioniert alles, mit dem FTDI bekomme ich den gleichen Kauderwelsch wie zuvor. Ich kann das Gerät auf eine Vielzahl von Baudraten, Abtastraten usw. konfigurieren, aber ich hatte kein Glück mit dem FTDI: (Aber danke!
Ich bin einmal auf eine Situation gestoßen, in der ein USB / FTDI-basierter Port, der 115,2 KB groß sein sollte, mit einem bestimmten Gerät nicht mit dieser Geschwindigkeit abgespielt werden konnte. In diesem Fall funktionierte das Gerät einwandfrei, wenn es an einen im Computer integrierten "echten" COM-Port angeschlossen war, und der FTDI-basierte Port funktionierte bei 115,2 mit anderen Geräten. Aber FTDI und dieses eine Gerät waren nur eine pathologische Kombination von Schnittstellenchips.
JustJeff, ich habe eine ähnliche Situation mit einem Peripheriegerät, das wir in unsere Produkte einbetten. Es funktioniert gut mit der seriellen Schnittstelle eines Computers, aber nicht mit einem PIC. Es stellt sich heraus, dass die Baudrate etwas abweicht. Anscheinend sind "echte" serielle Schnittstellen fehlerverzeihender als Mikrocontroller. Glücklicherweise kann der PIC mit nicht standardmäßigen Baudraten betrieben werden.
@Jeanne Pindar: Ja, das ist mir auch passiert. Sie erhalten ein Gerät, das etwas langsam ist, ein anderes, das etwas schnell ist, und die meisten Dinge spielen mit den meisten anderen Dingen. Aber hin und wieder stellen Sie fest, dass A zwar mit B und B mit C spricht, Sie A und C jedoch nicht zum Sprechen bringen können und das O-Scope herauskommt.
#4
+1
supercat
2013-08-13 20:56:33 UTC
view on stackexchange narkive permalink

Ein Ärger, den ich mit FTDI-Chips hatte, der wahrscheinlich nicht die Ursache Ihrer Probleme ist, aber möglicherweise sein könnte, ist, dass der FTDI Informationen verwirft, wenn das Remote-Gerät sendet, was der FTDI als "lange Pause" empfindet die es vom Remote-Gerät empfangen, aber noch nicht an den PC weitergeleitet hat. Dies kann auf zwei Arten zu Problemen führen:

  • Einige eingebettete Geräte sind im Leerlauf, und ihre serielle Ausgabe ist niedrig. Wenn sie etwas zu sagen haben, schalten sie ihren seriellen Ausgang ein, senden einige Daten und kehren dann zu Leerlauf zurück, sobald sie es gesagt haben. Wenn das eingebettete Gerät etwas speist, das in den Ruhezustand wechseln kann, wenn sein serieller Eingang für einen längeren Zeitraum niedrig ist, und aufwacht, wenn es hoch geht, bietet diese Funktion möglicherweise ein wirksames Mittel zur Aufwecksignalisierung, ohne dass ein zusätzlicher Pin erforderlich ist. Leider kann das Remote-Gerät, das seine serielle Schnittstelle ausschaltet, dazu führen, dass das FTDI den letzten Teil der vom Gerät gesendeten Daten löscht (ich habe dies mit einem Bereich überprüft - die Daten wurden gesendet, bevor die Leitung unterbrochen wurde, aber das FTDI wurde gelöscht es trotzdem).

  • Wenn Sie einen typischen UART verwenden, der auf eine schnellere Baudrate eingestellt ist als das Gerät, an das er angeschlossen ist, erhalten Sie im Allgemeinen Mülldaten, die eine identifizierbare enthalten Teilmenge möglicher Bytewerte. Wenn beispielsweise eine für 38.400 konfiguriert ist und das Remote-Gerät auf 9600 eingestellt ist, erhält man richtig gerahmte Bytewerte und 80, F8 und falsch gerahmte Bytewerte 00 und 78. Das Empfangen vieler dieser bestimmten Bytewerte kann dazu führen es ist leicht, das Problem zu identifizieren. Leider neigt das FTDI jedes Mal, wenn es eine falsch eingerahmte 00 sieht, dazu, die vorhergehenden Daten zu verwerfen. Anstatt leicht identifizierbare Mülldaten zu sehen, sieht man möglicherweise nichts.

Unter anderem aus diesem Grund habe ich eine Hassliebe zu den FTDI-Chips. Ich benutze sie und sie sind in vielerlei Hinsicht recht praktisch, aber sie sind kein so einfacher Ersatz für einen UART, wie man es gerne hätte.

#5
+1
Eric
2014-03-19 19:25:33 UTC
view on stackexchange narkive permalink

Wenn Sie ihre Software verwenden, stellen Sie sicher, dass Sie die VID / PID Ihres FTDI an ihre anpassen. Andernfalls erkennt die Software Ihren benutzerdefinierten seriellen Konverter

nicht


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 2.0-Lizenz, unter der er vertrieben wird.
Loading...