Ich habe ein Display, auf das ich schreiben möchte. Dies ist über die serielle Schnittstelle möglich. Wenn ich einen USB-zu-RS-232-Konverter verwende, funktioniert das Ding wie ein Zauber. Ich habe sogar versucht, nur die RX-, TX- und GND-Kabel des seriellen Konverters zu verwenden, und es funktioniert immer noch. Jetzt möchte ich dieses Display in einem kleinen Gehäuse zusammen mit einem Raspberry Pi verwenden, damit ich keinen Platz mehr für den großen USB-RS-232-Konverter habe.
Ich habe versucht, die interne serielle Schnittstelle des zu verwenden Himbeere. Es wird mit $ sudo stty -F /dev/ttyAMA0 9600
auf 9600 Baud eingestellt . Aber wenn ich es an das Display anschließe, zeigt es nur Müll und normale Steuerbefehle (die mit dem RS-232-Konverter funktionierten) funktionieren auch nicht.
Mit $ sudo minicom -b 9600 -o -D /dev/ttyAMA0
und die GPIOs TX zu RX durchschleifen, zeigt es die richtigen Zeichen im minicom
Konsole.
Schleifen Sie nun den GPIO-Serial-Port an die RX- und TX-Pins des USB-RS-232-Konverters und verbinden Sie Masse und öffnen Sie beide Ports in minicom
mit Baud auf 9600 eingestellt, zeigt nur manchmal etwas Ausgabe auf dem anderen Terminal, aber wenn es irgendeine Ausgabe zeigt, ist es auch nur Müll.
Akzeptierte Antwort:
Ich bin mir ziemlich sicher, dass das Problem darin besteht, dass der Pi keine RS232-Schnittstelle hat, während das Display eine hat.
Der Pi hat eine (LV-)UART-Schnittstelle, sein TX-Pin gibt 0 V für einen logischen aus und 3,3 V für eine logische
1
. Das ist recht einfach umzusetzen, da auf dem Pi bereits 3,3V zur Verfügung stehen. Dies funktioniert jedoch nur für die Kommunikation auf einer einzelnen Leiterplatte oder innerhalb eines einzelnen Geräts.
Für die Kommunikation zwischen Geräten über größere Entfernungen wird ein weniger störanfälliges System wie RS232 verwendet. Während die logische Struktur der Wellenform (Bitrate, Timing, Start-, Stopp-, Paritäts- und Datenbits) die gleiche wie bei UART ist, betragen die Spannungspegel -15 V…-3 V für eine logische 1
und +15V…+3V für einen logischen . Das heißt, es gibt nicht nur höhere (und negative) Spannungen, ihre Bedeutung ist auch invertiert.
Wenn also das Display RS232-Pegel erwartet und diese 3,3-V-Pegel vom Pi erhält, erkennt es die Daten meistens nicht, und wenn doch, ist es oft nur Müll.
Und wenn Sie RX und TX derselben Schnittstelle anschließen, bekommen Sie natürlich, was Sie erwarten.
Aber:Wenn der RS232-TX-Ausgang nicht strombegrenzt ist, kann er sogar Ihren Pi beschädigen!
Es gibt UART-zu-RS232-Konverterplatinen, aber wenn Sie gerne löten, enthalten die Platinen nur einen MAX3232 (plus vier Kondensatoren). Dieser IC erzeugt auch die höheren (und negativen) Spannungspegel aus der 3,3-V-Versorgungsspannung des Pi.
Siehe auch:Linux – Warum die Ausgabe auf 2>&1 und 1>&2 umleiten?Der gebräuchlichere ist der MAX232 (raten Sie mal, warum er so heißt), aber er ist für den 5-V-, nicht den 3,3-V-Betrieb.
Da der UART und der RS232 die gleiche logische Struktur verwenden, wird schließlich oft nicht zwischen beiden unterschieden, insbesondere durch Software (Programmierer). Sie werden oft auch nur als „serielle Schnittstelle“ bezeichnet, obwohl es andere Schnittstellen wie I²C und SPI gibt, die eine Art serielle Schnittstelle sind, aber nie als „die“ serielle Schnittstelle angesehen werden.