Risposte:
Questa risposta è ancora corretta e spiega in modo più dettagliato la natura delle modifiche, ma la maggior parte degli utenti dell'attuale Raspbian deve semplicemente eseguire
sudo raspi-config
SelezionaInterfacing Options / Serial
quindi specificare se si desidera una console seriale (probabilmente no), quindi se si desidera abilitare l'hardware della porta seriale (probabilmente sì). Quindi utilizzare/dev/serial0
in qualsiasi codice che accede alla porta seriale.
Il BCM2837 su Raspberry Pi3, Pi3B +, Pi3A +, PiZeroW ha 2 UART (come i suoi predecessori), tuttavia per supportare la funzionalità Bluetooth l'UART PL011 completamente descritto è stato spostato dai pin di intestazione al chip Bluetooth e il mini UART reso disponibile su pin di intestazione 8 e 10.
(Il SOC su Pi4 ha UART aggiuntivi, ma gli stessi 2 UART di BCM2837 sono usati per il seriale predefinito sui pin 8 e 10 e Bluetooth.)
Ciò ha una serie di conseguenze per gli utenti dell'interfaccia seriale.
Il /dev/ttyAMA0
precedentemente utilizzato per accedere a UART ora si collega a Bluetooth.
Il miniUART è ora disponibile su /dev/ttyS0
.
Nella più recente del software del sistema operativo c'è un /dev/serial0
che seleziona il dispositivo appropriato in modo da poter sostituire /dev/ttyAMA0
con /dev/serial0
e utilizzare lo stesso software sul Pi3 e modelli precedenti.
Sfortunatamente ci sono una serie di altre conseguenze: -
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.
Non esiste supporto per la parità e la velocità effettiva è limitata, ma quest'ultima non dovrebbe influire sulla maggior parte degli usi.
C'è una caratteristica killer "Baudrate derivato dall'orologio di sistema" che rende inutile il miniUART in quanto questo orologio può cambiare dinamicamente, ad esempio se il sistema passa a potenza ridotta o in modalità a bassa potenza.
La modifica di /boot/config.txt
rimuove questa dipendenza aggiungendo la seguente riga alla fine: -
core_freq=250
Questo risolve il problema e sembra avere un impatto limitato. I SPI clock frequency
e ARM Timer
dipendono anche dall'orologio di sistema.
Per qualche bizzarra ragione, l'impostazione predefinita per Pi3 che utilizza l'ultimo kernel 4.4.9 è DISABILITARE UART. Per abilitarla è necessario modificare
enable_uart=1
in/boot/config.txt
. (Questo risolve anche il problema,core_freq
quindi non è più necessario.)
Infine, se non si utilizza il Bluetooth (o si hanno usi poco impegnativi) è possibile scambiare nuovamente le porte nella Struttura dei dispositivi. C'è un modulo pi3-miniuart-bt
e pi3-disable-bt
che sono descritti in /boot/overlays/README
.
finalmente questo ha funzionato per il mio pi3 (os: debian jessie)
seguire attentamente questi 6 passaggi .
Passaggio 1: installare Raspbian Jessie su una scheda SD e avviare il Pi quando connesso a una rete Accesso tramite terminale o desktop e shell Configurare il sistema con:
sudo raspi-config
Espandere il filesystem e abilitare seriale su pagina avanzata, uscire e riavviare.
Passaggio 2: questo non è necessario se si dispone di jessie new release Aggiornare il sistema con:
sudo apt-get update
sudo apt-get upgrade
Passaggio 3: impostazioni dell'albero dei dispositivi come di seguito:
Aggiungi la struttura dei dispositivi a /boot/config.txt per disabilitare il bluetooth Raspberry Pi 3.
sudo nano /boot/config.txt
Aggiungi alla fine del file
* se vuoi cambiare il blutooth alla porta miniuart (cattivo)
dtoverlay=pi3-miniuart-bt
* se vuoi disabilitare il blutooth (buono)
dtoverlay=pi3-disable-bt
Esci dall'editor salvando le modifiche.
Passaggio 4: riavviare il pi
sudo reboot
passaggio 5 -
a) per disabilitare la console seriale modificare il file usando
sudo nano /boot/cmdline.txt
rimuovere la parola fase " console=serial0,115200
" o " console=ttyAMA0,115200
"
Esci e salva le modifiche
b) per abilitare la console seriale modificare il file usando
sudo nano /boot/cmdline.txt
Modificare il file nel seguente:
dwc_otg.lpm_enable=0 console=tty1 console=serial0(or ttyAMA0),115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Esci e salva le modifiche
Passaggio 6: riavviare il pi
sudo reboot
----------------- questo è tutto, divertiti ---------------------------- ---
La risposta di Naseer è corretta ma un po 'elaborata se hai appena mostrato l'ultima rasbian. Tutto quello che dovevo fare è solo aggiungere la seguente riga al mio config.txt (ad esempio da Windows in cui si collega la scheda SD sulla partizione fat32):
dtoverlay=pi3-disable-bt
Quindi collegalo e il pi stamperà direttamente le cose sui pin della console.
9600
. Quindi dovrebbe funzionare se impostocore_freq=250
e quindi configuro la mia velocità di trasmissione nello script ma python? Inoltre, sarebbe fantastico se potessi dare un'occhiata a: raspberrypi.stackexchange.com/questions/47379/… Grazie!