Wie verbinde ich uC mit RS232 mit einer minimalen Anzahl von Signalen an einen PC?


7

Der standardmäßige 9-polige RS232-Anschluss verfügt über 9 Stifte. Jene sind:

1 - DCD -
Datenträger erkannt 2 - RxD - Daten empfangen
3 - TxD - Daten senden
4 - DTR - Datenanschluss bereit
5 - GND - Signalmasse
6 - DSR - Datensatz Bereit
7 - RTS - Anforderung zum Senden von Daten
8 - CTS - Löschen zum Senden von Daten
9 - RI - Ringanzeige

  1. Wenn ich bidirektionale Kommunikation benötige, ist es offensichtlich, dass ich RxD und TxD verbinden sollte. Was soll ich mit anderen Signalen / Pins tun - mit Masse verbinden, offen lassen, sie mit geeigneten Signalen gemäß Protokoll ansteuern müssen?
  2. Wenn ich mich nur für eine unidirektionale Verbindung interessiere, kann ich dann nur RxD oder TxD anschließen?
  3. Was sind die Konsequenzen, wenn bestimmte Signale nicht verwendet / angeschlossen werden? Welche Software auf der PC-Seite erwartet diese Signale? Welche Funktionalität geht verloren?

ANMERKUNG 1: Ich verwende hier das Wort "Verbinden" im Sinne einer logischen Verbindung -> Für eine elektrische Verbindung würde ich eine Pegelumsetzerschaltung wie MAX232 benötigen. ANMERKUNG
2: Ich bin auf uC beschränkt - es macht mir nichts aus, irgendwelche Signale an die anzuschließen Brett (wie sie nach oben / unten ziehen).


Eine Randnotiz, da Sie ohnehin einen Level Shifter für RS232 benötigen, können Sie stattdessen über einen USB-USB-Chip nachdenken ( ftdichip.com/Products/ICs/FT232R.htm ), da es viel einfacher ist, einen PC mit USB zu finden ...
Johan

Antworten:


13

Dies hängt von der verwendeten Software ab.

A) In meinem Fall habe ich bei der Entwicklung meiner eigenen PC-Software nie andere Pins verwendet, nur RxD, TxD und GND. In diesem Fall können Sie also andere Stifte offen lassen. Dies wird als Nullmodem ohne Handshake bezeichnet

Geben Sie hier die Bildbeschreibung ein

B) Ja (unter der Annahme, dass GND in Betracht gezogen wird)

C) Auch dies hängt von der Software auf der PC-Seite ab. Einige Software, die Sie so konfigurieren können, dass sie sich nicht um die Hardwaresteuerung kümmert. Andere erfordern RTS / CTS-Handshake, sodass Sie ein Nullmodem mit Loop-Back-Handshake ausführen können

Geben Sie hier die Bildbeschreibung ein

Quelle der Bilder: RS232 serielle Nullmodemkabelverkabelung


B) Nein. Sie müssen GND gemeinsam nutzen.
Robert

Danke für die Antwort - eine weitere Sache sollte ich nicht verwendete Eingänge schweben lassen?
Mazurnifizierung

@mazurnification - technisch sollten Sie die Eingänge nicht schweben lassen. Der PC verfügt über Pull-Ups / Pull-Downs, um sich selbst zu schützen. Wenn auf Ihrer Karte die zusätzlichen Signale am Anschluss nicht angeschlossen sind, müssen Sie nichts tun. Stellen Sie sicher, dass auf Ihrem RS232-Treiberchip alle Eingänge auf einen Pegel eingestellt sind.
Robert

3
Normalerweise würde man kein Nullmodem verwenden, wenn man eine Verbindung zu einem eingebetteten System oder Peripheriegerät herstellt. Stattdessen ist das eingebettete System / Peripheriegerät so verdrahtet, dass es an entgegengesetzten Pins vom PC sendet / empfängt, sodass ein gerades Kabel verwendet werden kann. Nullmodems sind eigentlich dazu gedacht, zwei PCs miteinander zu verbinden (oder gelegentlich zwei eingebettete Karten).
Chris Stratton

6

Sie müssen nur RxD und TxD und natürlich Masse verbinden. (Wenn Sie eine unidirektionale Kommunikation verwenden, ist nur Masse und RxD oder TxD erforderlich.) Die anderen Signale werden für die Kommunikation mit einem Modem verwendet. Die meisten UARTs auf Mikrocontrollern liefern diese Steuersignale nicht. Ich erinnere mich, dass ich es auf 1 oder 2 UARTs eines uC mit mehreren weiteren UARTs gesehen habe (obwohl ich mich nicht erinnere, welches uC es war).

Weitere Informationen zum Modem (FYI):
EIA-232 definiert DTE (Datenendgeräte, in diesem Fall Ihren PC oder SBC) und DCE (Datenkommunikationsgeräte, häufig ein Modem).

DTE-DCE-Konfiguration

Sie haben verschiedene Möglichkeiten, die PCs anzuschließen.

  1. Bei einer direkten Verbindung ohne Modems wird ein Crossover-Kabel verwendet (RxD auf der einen Seite ist mit TxD auf der anderen Seite verbunden und umgekehrt). Sie brauchen nur diese beiden Signale + Masse. Damit verbinden Sie einen PC mit einem SBC.
  2. Bei einer Modemverbindung werden auch die zusätzlichen Signale verwendet. Der PC und das Modem sind über ein Durchgangskabel (Pin 1 mit Pin 1 usw. verbunden) verbunden.
  3. Sie können eine Verbindung zwischen zwei DTEs herstellen, als ob Modems vorhanden wären. In diesem Fall verwenden Sie ein Nullmodem, um Steuersignale zwischen DTEs zu verbinden, so wie RTS von 1 DTE mit CTS auf dem anderen verbunden ist. Hierbei wird ein komplett verdrahtetes Crossover-Kabel verwendet.
  4. Ein Nullmodem-Setup, bei dem die Steuersignale nicht zwischen PCs verbunden sind, Sie jedoch betrügen und RTS nicht mit CTS auf dem anderen PC, sondern auf Ihrem eigenen PC verbinden. Andere Signale werden ebenfalls lokal zurückgeschleift. Das Ergebnis ist, dass wie in Fall 1) nur RxD, TxD und Ground zwischen PCs verbunden sind.

Die anderen Zeilen können auch zur Codierung verwendet werden. Sie können Dinge tun, wie Ihr Mikrocontroller Ihrem PC mitteilt, wann er zum Empfang von Daten bereit ist. Dies kann sehr hilfreich sein, wenn Sie einige Dinge tun müssen, die Ihre Aufmerksamkeit erfordern, und Sie nicht unterbrochen werden können, um Ihren Puffer zu löschen.
Kellenjb

3
Sie benötigen auch GND.
Robert

5

Sie müssen mindestens Tx, Rx und Signalmasse haben. Während Sie theoretisch nicht senden müssen, wenn Sie nur empfangen, müssen Sie in vielen Situationen aus praktischen Gründen den Empfang der Nachricht bestätigen. Die anderen Pins werden zum "Hardware-Handshake" eines Berechtigungssystems verwendet, bei dem das sendende Gerät überprüft, ob das empfangende Gerät bereit ist. Sie können stattdessen Xon / Xoff verwenden (Software-Handshake). Einige Geräte, beispielsweise serielle Mäuse, verwendeten auch die Hardware-Handshake-Leitungen für die Stromversorgung.


1

Beachten Sie, dass es unter bestimmten Umständen möglich sein kann, ohne Verwendung des 232-Chips davonzukommen. Dies beruht auf einer gewissen Schlaffheit des Protokolls und dem Missbrauch einiger Stifte auf eine Weise, wie sie eigentlich nicht sein sollten. Leider kenne ich die Schaltung nicht genau, aber ich habe sie benutzt. Ich habe danach gesucht, als ich auf diese Frage gestoßen bin. Ich würde es nicht in der Produktion verwenden und ich weiß nicht, dass es für alle RS232-Verbindungsimplementierungen funktioniert, aber es war praktisch, als ich es verwendet habe.


Sie benötigen jedoch einen Überspannungsschutz und die Möglichkeit, das Signal entweder in einem Software-UART, mithilfe eines Wechselrichters oder in einigen Fällen in einem Konfigurationsbit eines Mikrocontroller-UART-Peripheriegeräts irgendwo zu invertieren. Die Grundidee beruht darauf, dass die meisten seriellen Schnittstellen Eingänge mit Logikpegel akzeptieren können.
Chris Stratton

1

Für eine minimale Anzahl von Signalen ist es durchaus möglich, eine UART-Schnittstelle mit nur zwei Drähten herzustellen - einer bidirektionalen Signalleitung und Masse. Erforderlich ist, dass die Leitungstreiber an jedem Ende deaktiviert werden können (dreifach angegeben) und dass die Software ein abwechselndes Protokoll implementiert. Oft sendet das Slave-Gerät nur, um eine Frage vom Master zu beantworten.

Bei einer Verbindung auf Logikpegel zwischen Mikrocontrollern (keine Leitungstreiber) ist die Hardware recht einfach, da Sie den Sende-Pin fast immer tristieren können (möglicherweise durch Zurückschalten in den GPIO-Modus).

Während die Technik an nahegelegenen Peripheriegeräten nicht sehr häufig verwendet wird, ist die Verwendung der Differenzsignalisierung als RS485 recht häufig und kann ein Netzwerk mit vielen Knoten anstelle von nur zwei umfassen. Software-Schemata, die für die Kommunikation mit einem bidirektionalen RS485-Paar entwickelt wurden, funktionieren jedoch problemlos zwischen zwei Geräten, die mit einer einseitigen (nicht differenziellen) Schaltung verbunden sind, vorausgesetzt, der Abstand / Rauschpegel erfordert keine differenzielle Lösung. Natürlich wäre dies nicht streng genommen RS232, sondern eine benutzerdefinierte Erweiterung davon.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.