Montag, Januar 20, 2020

Raspberry Pi UART nicht funktionieren

Ich versuche zum senden/empfangen von Daten über eine serielle Verbindung (GPIO UART-pins) zwischen einem Raspberry Pi (Modell B, raspian wheezy) und ein STM32F4 board.

Setup der seriellen Schnittstelle, ich habe alle die stepts in mehreren tutorials, wie:
http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port

Wenn andernfalls eine Verbindung zu dem STM32F4-board, ich habe gelesen, dass können Sie testen, die serielle Schnittstelle lokal auf dem pi, wenn Sie gerade die Verbindung der TX -, RX-pins aus dem pi zu verbinden und es sollte, wiederholen Sie einfach die eingegebenen Daten in minicom.

leider funktioniert das nicht, entweder.

Den Einstellungen für ttyAMA0 in Dateien ‚cmdline‘ und ‚inittab‘ sind ok. (wie in vielen tutorials)

und allso versucht die automatische Konfiguration Scripte aus
https://github.com/lurch/rpi-serial-console

Anschluss RX an den TX-pin des rpi direkt nicht geben, jede Ausgabe in minicom. Allso ich habe versucht, mit einem python-Skript, das wiederholt gegebene Eingabe. Nichts scheint zu funktionieren, bin ich irgendwie hier verloren.

Minicom starten Befehl sollte richtig sein(versucht, mit verschiedenen baud-raten):

[email protected]:/home/jef# minicom -b 9600 -o -D /dev/ttyAMA0

OPTIONS: I18n
Compiled on Apr 28 2012, 19:24:31.
Port /dev/ttyAMA0

Auf der Unterseite von minicom es zeigt immer den status offline:

CTRL-A Z for help |  9600 8N1 | NOR | Minicom 2.6.1  | VT102 |      Offline

Beim prüfen des verfügbaren seriellen Schnittstellen mit python nothinig ist swown:

python -m serial.tools.list_ports
no ports found

Benutzer ist in dailout-Gruppe, so dass sollte nicht das Problem sein(habe versucht, als root und nicht-root):

[email protected]:/home/jef# id
uid=0(root) gid=0(root) groups=0(root),20(dialout),1001(indiecity)

Überprüfung, dass der serielle port nicht verwendet wird, die von getty mehr:

[email protected]:/home/jef# ps aux | grep getty
root      2809  0.0  0.1   3740   804 tty1     Ss+  10:36   0:00 /sbin/getty --noclear 38400 tty1
root      2810  0.0  0.1   3740   804 tty2     Ss+  10:36   0:00 /sbin/getty 38400 tty2
root      2811  0.0  0.1   3740   804 tty3     Ss+  10:36   0:00 /sbin/getty 38400 tty3
root      2812  0.0  0.1   3740   804 tty4     Ss+  10:36   0:00 /sbin/getty 38400 tty4
root      2813  0.0  0.1   3740   804 tty5     Ss+  10:36   0:00 /sbin/getty 38400 tty5
root      2814  0.0  0.1   3740   804 tty6     Ss+  10:36   0:00 /sbin/getty 38400 tty6
root      3129  0.0  0.1   2012   624 pts/0    S+   11:57   0:00 grep getty

habe ich überprüft, die für andere apps mit ttyAMA0, allso nichts:

[email protected]:/home/jef# ps aux | grep ttyAMA0
root      3125  0.0  0.1   2012   628 pts/0    S+   11:56   0:00 grep ttyAMA0

Benutzer hat die richtigen Rechte für den Zugriff auf die serielle Schnittstelle:

[email protected]:/home/jef# ls -l /dev/ttyAMA0
crw-rw---T 1 root dialout 204, 64 Dec 25 11:53 /dev/ttyAMA0

Ist es etwas, das ich verpasst? Ich lese etwa 20 verschiedenen tutorials und blogs, wie setup die serielle Schnittstelle und ich kann mir nicht gerne was sind die Ursachen dieser. Könnten Sie mir einige Ratschläge, die ich schauen konnte bitte.

  • Es ist erwähnenswert korrekte Verwendung der seriellen ports auf raspberry pis nun ist /dev/serial0 oder /dev/seriell1. Neuere pis verwenden UART für bluetooth und viele ältere pis nicht. Damit wird es so machen, dass Ihr pi-Programm wird immer in Verbindung mit den vorgesehenen port UART oder nicht.
InformationsquelleAutor Martin Law | 2013-12-25

4 Kommentare

  1. 3

    Ich habe ein Arduino angeschlossen, um meine Raspberry Pi-serielle Schnittstelle über einen Pegelwandler (3,3 v bis 5v) und war auch Probleme mit minicom. Ich konnte empfangen, der Ausgang aus dem Arduino in minicom, aber ich konnte nicht alles zu senden, egal welche Einstellungen ich versucht habe. Ich hatte auch genau das gleiche problem mit minicom mit dem Arduino angeschlossen an die USB-Schnittstelle (/dev/ttyUSB0).

    Am Ende behalf ich mir mit dem basic-python die serielle Konsole installieren, pyserial mit pip (pip pyserial installieren) und führen Sie den folgenden Befehl ein:

    python -m serial.tools.miniterm -p /dev/ttyAMA0 -e
    
    • Hallo, ich habe versucht wieder mit einem neuen raspberry pi und habe es mit der Methode, die Sie beschrieben. Thx a bunch!! Edit:Es allso scheint zu funktionieren mit minicom jetzt.
    • Was war das Problem? Sie sagte, einen neuen rPi es behoben? Ich habe das exakt gleiche Problem und nichts scheint zu beheben
    • Hi @SoFLy Sorry für die extrem späte Antwort, aber ich denke, die Antwort-Benachrichtigung von Ihrer Botschaft endete in meinem smap Ordner. Das Problem war kurz geschnitten GPIO-pins, die verwendet wurden, durch die serielle Schnittstelle des raspberry pi. Mit einem neuen raspberry pi, einer Methode, die ich versuchte, bevor arbeitete.
  2. 3

    Ging ich einfach durch etwas ähnliches heute. Ich musste minicom deaktivieren Sie die hardware-Steuerung und looping für mich gearbeitet, sowie cross-Anschluss 2 Raspis zusammen über UARTs.

    Außerdem benutze ich 115200 buad-rate auf meinem TTYAMA0 Verbindungszeichenfolge
    minicom -b 115200 -o -D /dev/ttyAMA0

    Alt Ein

    Z

    O

    Serial Port Setup [enter]

    F schaltet die hardware flow control off

    *Speichern Sie die Einstellungen und Eingaben, die Sie sollten zeigen, bis auf dem Bildschirm, sondern tatsächlich übertragen wird, über uarts.

    Meine minicom Fußzeile sieht wie folgt aus sowie (nur diff baud-rate, zeigt aber auch offline funktioniert aber)

    CTRL-A Z für Hilfe |115200 8N1 | NOR | Minicom 2.5 | VT102 | Offline

    Glück!

    • Ausschalten der hardware-Steuerung hat es für mich! Danke!
    • Sollte man das nicht „Strg-A“ anstelle von „Alt-A“ und dann mit „Z“? Das ist zumindest die Reihenfolge, ich habe zu Folgen, um in die minicom setup-Menü…
  3. 2

    Führen Sie einen einfachen test, indem Sie diesen sketch auf den Arduino:

    #define SERIAL_BAUD 115200
    
    void setup() {
    
      //Init serial connection
      Serial.begin(SERIAL_BAUD);
      Serial.setTimeout(1);
    
    }
    
    void loop() {
    
      if ( Serial.available() ) {
        byte type = Serial.read();
        Serial.write(type);
      }
    
    }
    

    Und wire es mit dem folgenden Diagramm:

    Raspberry Pi UART nicht funktionieren

    Hinweis: stellen Sie sicher, dass Sie nicht schließen Sie ein usb-Kabel an den Arduino. Angetrieben wird er von der Raspberry Pi.

    Hinweis: der Raspberry Pi läuft auf 3,3 V, so müssen Sie sicher sein, dass alles, was Sie verbinden es läuft mit 3,3 V oder hat einen level-shifter. Weitere Informationen über level-shifter hier. (gehen Sie nach unten zu den Logik Spannungspegel Abschnitt) Sparkfun hat ein paar basic-level-shifter (mit Schaltplan) hier wenn Sie mehr erfahren möchten.

    Anschließend können Sie installieren und ausführen screen. Bildschirm ist ein Toter einfache Weise eine Verbindung zu einem seriellen port.

    apt-get install screen
    

    Führen Sie dann die folgenden:

    screen /dev/ttyAMA0 115200
    

    Dem Bildschirm erscheint leer. Aber, wenn Sie mit der Eingabe beginnen, werden Sie bemerken, dass die Zeichen, die Sie schreiben, sind immer geloopt zurück zu Ihrem terminal.

    Hinweis: Wenn der Bildschirm noch leer ist, sollten Sie doppelt überprüfen Sie die Anschlüsse (power led auf dem Arduino ist eine gute Sache, um zu überprüfen).

    Wenn Sie Zweifel haben, können Sie sehen, meine ganze Beispiel hier.

  4. 1

    Thankt für die Tipps Jungs. Ich habe versucht, Ihnen, aber Sie trifft das Problem nicht lösen, Es scheint, dass der raspberry pi UART-port ist shortcutted. Ich verbinden Sie es mit einem anderen raspberry pi (Modell A), die ich geliehen und die B-Modell gerade alle gesendeten Zeichen, die ich gesendet, mit der Ein Modell ohne Anzeige vor Ort.

    Kaufte ich ein neues Modell B und getestet, die AURT-port und es funktioniert, wie es sollte.

    Obwohl das STM32F4 board, die ich gekauft, sollte allso werden 3.3 V, es scheint gebrochen zu haben meine raspi-UART-irgendwann (oder nie gearbeitet). Ich werde jetzt eine LLC sowieso, wenn ich test nochmal mit dem STM32F4 board nur um sicherzugehen, dass ich nicht Schlag nichts nach.

    Thx nochmal für die Tipps!

Kostenlose Online-Tests