Der serielle UART ist eine der am häufigsten verwendeten Schnittstellen in eingebetteten Anwendungen und Kommunikationsbereichen. Obwohl das Schnittstellenprotokoll einfach ist, treten bei der Kommunikation zwischen verschiedenen Geräten in realen Anwendungen verschiedene kleine Probleme auf. Im Folgenden finden Sie eine Liste der häufigsten Probleme in der Praxis. Die Probleme sind zusammengefasst und sortiert, was als Referenz für die Fehlersuche verwendet werden kann.
1. Häufig gestellte Fragen zur seriellen Kommunikation
-
Serielle Kommunikation verstümmelter Code
Gestörte serielle Kommunikation bedeutet in der Regel, dass die vom Empfänger empfangenen Daten nicht den Erwartungen entsprechen. Zu den Faktoren, die in diesem Fall berücksichtigt werden müssen, gehören in der Regel die folgenden Aspekte:
ob die von beiden Parteien eingestellten Parameter der seriellen Schnittstelle übereinstimmen
Sie müssen die Einstellungen überprüfen: Baudrate der seriellen Schnittstelle, Datenformat der seriellen Schnittstelle und andere Parameter.
Die Spannung der seriellen Kommunikation stimmt nicht überein
Verschiedene Geräte mit serieller Schnittstelle haben unterschiedliche Schwellenwerte für hohe und niedrige Pegel, die normal dekodiert werden können. Wenn es sich beispielsweise um dieselbe 3,3-V-Kommunikation über die serielle Schnittstelle handelt, liegt der Schwellenwert für den niedrigen Pegel von Gerät A bei 1,5 V und der Schwellenwert für den niedrigen Pegel von Gerät B bei 1 V. Wenn der tatsächliche niedrige Pegel der Spannung der seriellen Schnittstelle nur 1,5 V beträgt, kann Gerät B keine Daten normal empfangen. Ein anderes Beispiel: Gerät A hat eine serielle 5-V-Schnittstelle und Gerät B eine 3,3-V-Schnittstelle. Auch hier gibt es ein Problem der Spannungsinkongruenz.
Der tatsächliche Baudratenfehler bei der Kommunikation über die serielle Schnittstelle ist groß
Das heißt, dass die tatsächliche Baudrate beim Betrieb der seriellen Schnittstelle stark von dem theoretischen Wert abweicht. Da die von einigen MCUs und Geräten mit serieller Schnittstelle verwendeten Taktgeber andere Ressourcen und Anwendungsanforderungen berücksichtigen, weichen die tatsächliche Geschwindigkeit und die Einstellungen der seriellen Schnittstelle ab. Ein Beispiel: Wenn die Nenngeschwindigkeit 9600bps beträgt, arbeitet sie tatsächlich mit 10000bps (der Fehler übersteigt 4%). Zu diesem Zeitpunkt kann es die Designstandards des Empfängers überschritten haben.
Schlechte Qualität des seriellen Kommunikationssignals
Wenn das Signal während der Kommunikation an- und abschwillt und stark zittert, das Signal überschwingt oder sich langsam ändert, prüfen Sie, ob die gemeinsame Masse der Hardware gut ist und ob andere Geräte in Reihe/Parallelschaltung an der Leitung angeschlossen sind.
Problem mit der Anzeige des Datenformats
In der Regel wird das Hexadezimal- oder ASCII-Code-Format verwendet, das bei der Verwendung unterschieden werden muss.
-
Die serielle Schnittstelle kann nicht senden
Wenn die serielle Schnittstelle nicht sendet, bedeutet dies in der Regel, dass der RXD-Kanal des Peer-Geräts, das mit dem TXD dieser seriellen Schnittstelle verbunden ist, keine Daten empfangen kann. Die Zusammenfassung lautet wie folgt:
Verwenden Sie Instrumente, um tatsächliche Messungen des TXD-Kanals vorzunehmen.
Beobachten Sie die Wellenform der Hardware, um festzustellen, ob das Signal ausgegeben wird und ob es normal ist. (Spannung der seriellen Schnittstelle, Anstiegs- und Abfallzeit des Signals der seriellen Schnittstelle)
TXD- und RXD-Kanal-Loopback-Test von kurzgeschlossenen Geräten
Prüfen Sie, ob der Selbstversand und -empfang erfolgreich sein kann. Stellen Sie fest, ob das Problem durch eine Anomalie im eigenen Gerät oder auf der Gegenseite verursacht wird.
Feststellen, ob die Anwendungssoftware die Hardware-Flusskontrolle der seriellen Schnittstelle aktiviert
Wenn z. B. die RTS/CTS-Hardware-Flusskontrolle aktiviert ist, der Pin aber nicht angeschlossen ist oder zwar angeschlossen ist, aber laut Protokoll nicht wirkt, wenn der CTS-Eingang ungültig ist, unterbricht der Absender die Datenübertragung.
MCU-Software-Codierungsproblem oder abnormes Funktionieren der Computersoftware
-
Die serielle Schnittstelle kann nicht empfangen
Wenn die serielle Schnittstelle keine Daten empfangen kann, hat das in der Regel folgende Ursachen:
Die serielle Schnittstelle der Gegenstelle konnte keine Daten erfolgreich senden.
Die von der seriellen Schnittstelle gesendete Effektivspannung entspricht nicht den Empfangs- und Dekodieranforderungen des Chips.
MCU-Software-Codierungsproblem oder abnormes Funktionieren der Computersoftware
2. Häufig verwendete Tipps zur Fehlerbehebung
Für die oben genannten häufigen Probleme bei der Fehlersuche an der seriellen Schnittstelle gibt es mehrere Methoden und Techniken, auf die Sie zurückgreifen können:
Verwendung von Hardware-Instrumenten
Beherrschen Sie den Umgang mit Hardware-Erfassungs- oder Analyse-Tools wie Oszilloskopen, um Probleme zu finden. Mit dieser Methode können die Spannung der seriellen Schnittstelle, das Datenformat der seriellen Schnittstelle, die Baudrate der seriellen Schnittstelle und andere Parameter des Signals auf der Leitung bestimmt werden.
Erkennung der seriellen Schnittstelle als Loopback
Wenn kein Hardware-Instrument zur Verfügung steht, ist es auch eine gute Wahl, TXD und RXD des Geräts selbst kurz zu schließen, um das Senden und Empfangen zu testen. Diese Methode kann einfach bestätigen, ob der Hardwarepfad und die gesamte Logik verbunden sind. Der Nachteil ist jedoch, dass das Positionierungsproblem nicht genau genug ist.
Software zum Debuggen der seriellen Schnittstelle austauschen
Es gibt viele Arten von Software für die serielle Schnittstelle auf der Computerseite. Es ist nicht ausgeschlossen, dass sich einige Geräte oder Treibersoftware nicht erfolgreich an alle Debugging-Software für serielle Schnittstellen anpassen lassen. Zu diesem Zeitpunkt können Sie versuchen, mehrere verschiedene Software für Vergleichstests zu verwenden.
3. Zusammenfassung
Lösungsvorschläge bei Problemen mit der Kommunikation über die serielle Schnittstelle:
1. Bestätigen Sie den Signaltyp, d.h. TTL, RS485, RS232. Signale mit unterschiedlichen Datentypen können nicht normal kommunizieren.
2. Bestätigen Sie die Software-Einstellungen für den seriellen Anschluss, die Baudrate, die Nummer des seriellen Anschlusses und andere Signalformate.
3. Vergewissern Sie sich, dass der Treiber korrekt installiert wurde.
4. Überprüfen Sie, ob die Hardwareverdrahtung korrekt ist und schließen Sie die entsprechende Signalschnittstelle an die entsprechende Schnittstelle an. Bei TTL und 485 können Sie versuchen, die beiden Drähte gegeneinander auszutauschen, wenn Sie sich über die Signaldefinition nicht sicher sind.
5. Vergewissern Sie sich, dass das Gerät normal eingeschaltet ist.
6. Prüfen Sie mit einem Oszilloskop oder anderen Debugging-Tools, ob die Wellenform der Kommunikation korrekt ist. Bei 5-V-Systemen und 3,3-V-Systemen müssen Pull-up-Widerstände und Dioden zu den entsprechenden Signalleitungen hinzugefügt werden.
7. Nachdem Sie festgestellt haben, dass kein Problem mit der Hardware vorliegt, suchen Sie nach Softwareproblemen.
Wie man Softwareprobleme grob von Hardwareproblemen unterscheiden kann:
Hardware-Probleme treten fast immer wieder auf, während Software-Probleme kommen und gehen können.