Ich vermute, da stimmt etwas nicht
stty
...
...
Gibt es etwas, was mir beim Versuch fehlt, die UART-Baudrate mit stty zu konfigurieren?
Ja, Ihr Test ist fehlerhaft, so dass Sie nicht feststellen, dass die Baudrate geändert wurde.
Einige (möglicherweise unklare) Fakten:
- Eine serielle Schnittstelle könnte überhaupt keine Daten empfangen, wenn die Daten mit einer gegenüber ihrer Konfiguration sehr langsamen Baudrate gesendet werden (z. B. bei 9600 Baud und Empfangen bei 115200 Baud).
- Der Befehl cat hat eine Eigenheit, die dazu führen kann, dass er keine Stdio-Puffer löscht, wenn er auf ein Zeilenendezeichen stößt. IOW-aufeinanderfolgende cat- Befehle könnten dieselben Daten anzeigen, wenn keine Leitungsbeendigung erfolgt ist. Die akzeptierte Antwort auf diese Frage spielt auf dieses Problem an.
Ihre spezielle Wahl und Reihenfolge der Shell-Befehle führen zusammen zu einem falschen Ergebnis.
# Stty -F / dev / ttyUSB0 9600
# stty -F / dev / ttyUSB0
# cat / dev / ttyUSB0
Daten Daten Daten
^ C
Sie konfigurieren also das serielle Terminal mit der richtigen Baudrate und empfangen einige Daten.
# Stty -F / dev / ttyUSB0 115200
# stty -F / dev / ttyUSB0
# cat / dev / ttyUSB0
Daten Daten Daten
^ C
Nach der Neukonfiguration mit einer viel schnelleren Baudrate erkennt der serielle Port möglicherweise keine gültigen Frames mehr, und es werden keine neuen Daten empfangen.
Wenn Sie einen anderen cat- Befehl ausgeben, werden dieselben Daten angezeigt, die zuvor empfangen wurden (dh vor der Änderung der Baudrate).
Nachtrag
Sie sollten sich zumindest davon überzeugen können, dass der Befehl stty nicht fehlerhaft ist und die Baudrate wie erwartet ändert.
Entweder:
Antwort: Wechseln Sie nicht zu einer sehr schnellen Baudrate (die keine Rahmen erkennen kann), sondern zu moderaten 38400 Baud oder langsameren 4800 Baud. Beides sollte den Empfang / die Anzeige von Speicherzeichen (anstelle von gültigen Daten oder nichts) bewirken.
Oder
B. Vertauschen Sie die Reihenfolge der Baudraten. Setzen Sie die Systeme, und verwenden Sie stty die schnelle, ungültige Baudrate konfigurieren zunächst verursachen entweder Empfang / Anzeige der Garbage Collection - Zeichen oder nichts.
Verwenden Sie dann stty, um die richtige Baudrate zu konfigurieren, und beginnen Sie mit dem erwarteten Empfang der Daten.