Respuestas:
Esta respuesta sigue siendo correcta y explica con más detalle la naturaleza de los cambios, pero la mayoría de los usuarios de Raspbian actual solo deben ejecutar
sudo raspi-config
Seleccionar yInterfacing Options / Serial
luego especificar si desea una consola serie (probablemente no) y luego si desea que el hardware del puerto serie esté habilitado (probablemente si). Luego, use/dev/serial0
cualquier código que acceda al puerto serie.
El BCM2837 en Raspberry Pi3, Pi3B +, Pi3A +, PiZeroW tiene 2 UART (al igual que sus predecesores), sin embargo, para admitir la funcionalidad Bluetooth, el PL011 UART con todas las funciones se movió de los pines del encabezado al chip Bluetooth y el mini UART disponible en encabezado pines 8 y 10.
(El SOC en el Pi4 tiene UART adicionales, pero los mismos 2 UART que BCM2837 se utilizan para la serie predeterminada en los pines 8 y 10 y Bluetooth).
Esto tiene una serie de consecuencias para los usuarios de la interfaz en serie.
El /dev/ttyAMA0
utilizado anteriormente para acceder al UART ahora se conecta a Bluetooth.
El miniUART ya está disponible en /dev/ttyS0
.
En el último software de sistema operativo hay una /dev/serial0
que selecciona el dispositivo adecuado para que pueda reemplazar /dev/ttyAMA0
con /dev/serial0
y utilizar el mismo software en el Pi3 y modelos anteriores.
Lamentablemente, hay otras consecuencias:
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.
No hay soporte para la paridad y el rendimiento es limitado, pero este último no debería afectar a la mayoría de los usos.
Hay una característica asesina "Baudrate derivado del reloj del sistema" que hace que el miniUART sea inútil ya que este reloj puede cambiar dinámicamente, por ejemplo, si el sistema entra en potencia reducida o en modo de baja potencia.
La modificación de /boot/config.txt
elimina esta dependencia al agregar la siguiente línea al final: -
core_freq=250
Esto soluciona el problema y parece tener poco impacto. El SPI clock frequency
y ARM Timer
también dependen del reloj del sistema.
Por alguna extraña razón, el valor predeterminado para Pi3 que usa el último kernel 4.4.9 es DESHABILITAR UART. A fin de que necesita cambiar
enable_uart=1
en/boot/config.txt
. (Esto también corrigecore_freq
lo que ya no es necesario).
Finalmente, si no usa Bluetooth (o tiene usos poco exigentes), es posible intercambiar los puertos nuevamente en el Árbol de dispositivos. Hay un pi3-miniuart-bt
y un pi3-disable-bt
módulo que se describen en /boot/overlays/README
.
finalmente esto consiguió trabajo para mi pi3 (os: debian jessie)
Siga estos 6 pasos cuidadosamente.
Paso 1: instale Raspbian Jessie en una tarjeta SD y arranque el Pi cuando esté conectado a una red Inicie sesión a través de un terminal o escritorio y shell Configure el sistema con:
sudo raspi-config
Expanda el sistema de archivos y habilite el serial en la página avanzada, salga y reinicie.
Paso 2: esto no será necesario si tienes una nueva versión de jessie Actualiza el sistema con:
sudo apt-get update
sudo apt-get upgrade
Paso 3: configuración del árbol de dispositivos de la siguiente manera:
Agregue el árbol de dispositivos a /boot/config.txt para deshabilitar el bluetooth Raspberry Pi 3.
sudo nano /boot/config.txt
Agregar al final del archivo
* si desea cambiar el blutooth al puerto miniuart (malo)
dtoverlay=pi3-miniuart-bt
* si quieres desactivar el blutooth (bueno)
dtoverlay=pi3-disable-bt
Salga del editor guardando sus cambios.
Paso 4 - reinicia el pi
sudo reboot
paso 5 -
a) para deshabilitar la consola serie, edite el archivo usando
sudo nano /boot/cmdline.txt
eliminar la palabra fase " console=serial0,115200
" o " console=ttyAMA0,115200
"
Salga y guarde sus cambios
b) para habilitar la consola serie, edite el archivo usando
sudo nano /boot/cmdline.txt
Cambie el archivo a lo siguiente:
dwc_otg.lpm_enable=0 console=tty1 console=serial0(or ttyAMA0),115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Salga y guarde sus cambios
Paso 6 - reinicia el pi
sudo reboot
----------------- eso es todo, diviértete ---------------------------- ---
La respuesta de Naseer es correcta pero un poco elaborada si acabas de mostrar el último rasbian. Todo lo que necesitaba hacer es agregar la siguiente línea a mi config.txt (desde, por ejemplo, Windows donde conecta la tarjeta SD en la partición fat32):
dtoverlay=pi3-disable-bt
Luego, conéctelo, y el pi imprimirá directamente cosas en los pines de la consola.
9600
. Entonces, ¿eso debería funcionar si configurocore_freq=250
y luego configuro mi velocidad de transmisión en el script ma python? Además, sería genial si pudieras echar un vistazo a: raspberrypi.stackexchange.com/questions/47379/… ¡ Gracias!