Odpowiedzi:
Ta odpowiedź jest nadal poprawna i wyjaśnia bardziej szczegółowo charakter zmian, ale większość użytkowników obecnego Raspbian powinna po prostu uruchomić
sudo raspi-config
Wybierz,Interfacing Options / Serial
a następnie określić, czy chcesz mieć konsolę szeregową (prawdopodobnie nie), a następnie, czy chcesz włączyć sprzęt portu szeregowego (prawdopodobnie tak). Następnie użyj/dev/serial0
w dowolnym kodzie, który uzyskuje dostęp do portu szeregowego.
BCM2837 na Raspberry Pi3, Pi3B +, Pi3A +, PiZeroW ma 2 UART (podobnie jak jego poprzednicy), jednak w celu obsługi funkcji Bluetooth w pełni funkcjonalny PL011 UART został przeniesiony z pinów nagłówka do układu Bluetooth, a mini UART udostępniony na piny nagłówka 8 i 10.
(SOC na Pi4 ma dodatkowe UART, ale te same 2 UART co BCM2837 są używane do domyślnego portu szeregowego na pinach 8 i 10 oraz Bluetooth.)
Ma to szereg konsekwencji dla użytkowników interfejsu szeregowego.
/dev/ttyAMA0
Poprzednio używany do dostępu UART teraz łączy się z Bluetooth.
MiniUART jest teraz dostępny na /dev/ttyS0
.
W najnowszej wersji oprogramowania systemu operacyjnego jest /dev/serial0
który wybiera odpowiedniego urządzenia, dzięki czemu można zastąpić /dev/ttyAMA0
z /dev/serial0
i korzystać z tego samego oprogramowania na PI3 i wcześniejszych modeli.
Niestety istnieje wiele innych konsekwencji:
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.
Nie ma obsługi parzystości i przepustowość jest ograniczona, ale ta ostatnia nie powinna wpływać na większość zastosowań.
Istnieje jedna funkcja zabójcy „Baudrate pochodna od zegara systemowego”, która sprawia, że miniUART jest bezużyteczny, ponieważ zegar ten może zmieniać się dynamicznie, np. Gdy system przejdzie w tryb obniżonej mocy lub w tryb niskiej mocy.
Modyfikowanie /boot/config.txt
usuwa tę zależność, dodając na końcu następujący wiersz: -
core_freq=250
To rozwiązuje problem i wydaje się, że ma niewielki wpływ. SPI clock frequency
I ARM Timer
są również zależne od zegara systemowego.
Z jakiegoś dziwnego powodu domyślnym ustawieniem Pi3 przy użyciu najnowszego jądra 4.4.9 jest WYŁĄCZ UART. Aby ją włączyć należy zmienić
enable_uart=1
w/boot/config.txt
. (To także rozwiązujecore_freq
problem, więc nie jest to już konieczne).
Wreszcie, jeśli nie korzystasz z Bluetooth (lub masz mało wymagające zastosowania), możesz zamienić porty z powrotem w drzewie urządzeń. Istnieje moduł pi3-miniuart-bt
i pi3-disable-bt
, które są opisane w /boot/overlays/README
.
w końcu to działa dla mojego pi3 (os: debian jessie)
proszę dokładnie wykonać te 6 kroków .
Krok 1 - Zainstaluj Raspbian Jessie na karcie SD i uruchom Pi po podłączeniu do sieci Zaloguj się przez terminal lub komputer i powłokę Skonfiguruj system za pomocą:
sudo raspi-config
Rozwiń system plików i włącz serial na stronie zaawansowanej, zakończ i uruchom ponownie.
Krok 2 - nie będzie to konieczne, jeśli masz nową wersję jessie Zaktualizuj system za pomocą:
sudo apt-get update
sudo apt-get upgrade
Krok 3 - Ustawienia drzewa urządzeń, jak poniżej:
Dodaj drzewo urządzeń do /boot/config.txt, aby wyłączyć bluetooth Raspberry Pi 3.
sudo nano /boot/config.txt
Dodaj na końcu pliku
* jeśli chcesz zmienić port blutooth na port miniuart (zły)
dtoverlay=pi3-miniuart-bt
* jeśli chcesz wyłączyć blutooth (dobre)
dtoverlay=pi3-disable-bt
Wyjdź z edytora, zapisując zmiany.
Krok 4 - uruchom ponownie pi
sudo reboot
krok 5 -
a) Aby wyłączyć konsolę szeregową, edytuj plik za pomocą
sudo nano /boot/cmdline.txt
usuń słowo faza „ console=serial0,115200
” lub „ console=ttyAMA0,115200
”
Wyjdź i zapisz zmiany
b) Aby włączyć konsolę szeregową, edytuj plik za pomocą
sudo nano /boot/cmdline.txt
Zmień plik na następujący:
dwc_otg.lpm_enable=0 console=tty1 console=serial0(or ttyAMA0),115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Wyjdź i zapisz zmiany
Krok 6 - uruchom ponownie pi
sudo reboot
----------------- to wszystko, baw się dobrze ---------------------------- ---
Odpowiedź Naseera jest poprawna, ale nieco skomplikowana, jeśli tylko sflashowałeś najnowszego rasbasa. Wszystko, co musiałem zrobić, to po prostu dodać następujący wiersz do pliku config.txt (np. Z systemu Windows, w którym podłączasz kartę SD na partycji fat32):
dtoverlay=pi3-disable-bt
Następnie podłącz go, a pi bezpośrednio wydrukuje rzeczy na pinach konsoli.
9600
. Więc to powinno działać, jeśli ustawię,core_freq=250
a następnie skonfiguruję prędkość transmisji w skrypcie ma python? Byłoby również świetnie, gdybyś mógł spojrzeć na: raspberrypi.stackexchange.com/questions/47379/… Dziękuję!