Antworten:
Diese Antwort ist immer noch korrekt und erläutert detaillierter die Art der Änderungen, aber die meisten Benutzer von Raspbian sollten nur
sudo raspi-config
Select ausführen undInterfacing Options / Serial
dann angeben, ob Sie eine serielle Konsole (wahrscheinlich nein) möchten, und dann, ob die serielle Port-Hardware aktiviert werden soll (wahrscheinlich) Ja). Verwenden Sie dann/dev/serial0
in jedem Code, der auf die serielle Schnittstelle zugreift.
Das BCM2837 auf dem Raspberry Pi3, Pi3B +, Pi3A + und PiZeroW verfügt (wie seine Vorgänger) über 2 UARTs. Zur Unterstützung der Bluetooth-Funktionalität wurde jedoch der voll ausgestattete PL011-UART von den Header-Pins auf den Bluetooth-Chip verschoben und der Mini-UART auf bereitgestellt Header-Pins 8 und 10.
(Der SOC auf dem Pi4 verfügt über zusätzliche UARTs, aber die gleichen 2 UARTs wie der BCM2837 werden für die Standardserie auf den Pins 8 und 10 und Bluetooth verwendet.)
Dies hat eine Reihe von Konsequenzen für Benutzer der seriellen Schnittstelle.
Der /dev/ttyAMA0
zuvor für den Zugriff auf den UART verwendete verbindet sich jetzt mit Bluetooth.
Der miniUART ist ab sofort verfügbar /dev/ttyS0
.
In der neuesten Betriebssystem - Software gibt es eine , /dev/serial0
die das entsprechende Gerät wählt , so dass Sie ersetzen können /dev/ttyAMA0
mit /dev/serial0
und die gleiche Software auf dem Pi3 und frühere Modelle.
Leider gibt es eine Reihe anderer Konsequenzen:
The mini UART is a secondary low throughput UART
intended to be used as a console.
The mini Uart has the following features:
• 7 or 8 bit operation.
• 1 start and 1 stop bit.
• No parities.
• Break generation.
• 8 symbols deep FIFOs for receive and transmit.
• SW controlled RTS, SW readable CTS.
• Auto flow control with programmable FIFO level.
• 16550 like registers.
• Baudrate derived from system clock.
Es gibt keine Unterstützung für Parität und der Durchsatz ist begrenzt, letzteres sollte jedoch die meisten Verwendungen nicht beeinträchtigen.
Es gibt eine Killerfunktion "Baudrate abgeleitet von der Systemuhr", die den miniUART unbrauchbar macht, da sich diese Uhr dynamisch ändern kann, z. B. wenn das System in den Energiesparmodus oder in den Energiesparmodus wechselt.
Durch Ändern von /boot/config.txt
wird diese Abhängigkeit entfernt, indem die folgende Zeile am Ende hinzugefügt wird:
core_freq=250
Dies behebt das Problem und scheint nur geringe Auswirkungen zu haben. Die SPI clock frequency
und ARM Timer
sind auch abhängig von der Systemuhr.
Aus irgendeinem bizarren Grund lautet die Standardeinstellung für Pi3 mit dem neuesten 4.4.9-Kernel DISABLE UART. Um sie zu aktivieren müssen Sie ändern
enable_uart=1
in/boot/config.txt
. (Dies behebt auch die,core_freq
so dass dies nicht mehr erforderlich ist.)
Wenn Sie kein Bluetooth verwenden (oder eine anspruchslose Verwendung haben), können Sie die Ports zurück in den Gerätebaum tauschen. Es gibt ein pi3-miniuart-bt
und ein pi3-disable-bt
Modul, die in beschrieben sind /boot/overlays/README
.
endlich habe ich arbeit für mein pi3 (os: debian jessie)
Bitte befolgen Sie diese 6 Schritte sorgfältig.
Schritt 1 - Installieren Sie Raspbian Jessie auf einer SD-Karte und starten Sie den Pi, wenn Sie mit einem Netzwerk verbunden sind. Anmelden über Terminal oder Desktop und Shell Konfigurieren Sie das System mit:
sudo raspi-config
Erweitern Sie das Dateisystem und aktivieren Sie die Seriennummer auf der erweiterten Seite, beenden Sie das Programm und starten Sie es neu.
Schritt 2 - Dies ist nicht erforderlich, wenn Sie eine neue Version von Jessie haben. Aktualisieren Sie das System mit:
sudo apt-get update
sudo apt-get upgrade
Schritt 3 - Gerätebaumeinstellungen wie folgt:
Fügen Sie den Gerätebaum zu /boot/config.txt hinzu , um Raspberry Pi 3 Bluetooth zu deaktivieren.
sudo nano /boot/config.txt
Fügen Sie am Ende der Datei hinzu
* wenn du den blutooth auf miniuart port ändern willst (bad)
dtoverlay=pi3-miniuart-bt
* wenn du den blutooth deaktivieren willst (gut)
dtoverlay=pi3-disable-bt
Verlassen Sie den Editor und speichern Sie Ihre Änderungen.
Schritt 4 - Starten Sie den pi neu
sudo reboot
Schritt 5 -
a) Zum Deaktivieren der seriellen Konsole bearbeiten Sie die Datei mit
sudo nano /boot/cmdline.txt
entferne die Wortphase " console=serial0,115200
" oder " console=ttyAMA0,115200
"
Beenden Sie und speichern Sie Ihre Änderungen
b) Um die serielle Konsole zu aktivieren, bearbeiten Sie die Datei mit
sudo nano /boot/cmdline.txt
Ändern Sie die Datei wie folgt:
dwc_otg.lpm_enable=0 console=tty1 console=serial0(or ttyAMA0),115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Beenden Sie und speichern Sie Ihre Änderungen
Schritt 6 - pi neu starten
sudo reboot
----------------- das ist alles, viel Spaß ------------------------ ---
Die Antwort von Naseer ist richtig, aber ein bisschen kompliziert, wenn Sie gerade die neueste Rasbian-Version installiert haben. Alles was ich tun muss, ist einfach die folgende Zeile in meine config.txt einzufügen (zB unter Windows, wo Sie die SD-Karte auf der Fat32-Partition einstecken):
dtoverlay=pi3-disable-bt
Schließen Sie es dann an, und der Pi druckt das Zeug direkt auf die Konsolenstifte.
9600
. Das sollte also funktionieren, wenn ichcore_freq=250
meine Baudrate in einem Python-Skript einstelle und dann konfiguriere? Wäre auch toll, wenn Sie einen Blick darauf werfen könnten: raspberrypi.stackexchange.com/questions/47379/… Vielen Dank!