Вы находитесь на странице: 1из 3

LOS UART RASPBERRY PI

Los SoCs utilizados en Raspberry Pi tienen dos UART incorporados, un PL011 y un


mini UART. Se implementan utilizando diferentes bloques de hardware, por lo que
tienen características ligeramente diferentes. Sin embargo, ambos son dispositivos
de 3.3V, lo que significa que se debe tener cuidado adicional cuando se conecta a
un RS232 u otro sistema que utiliza diferentes niveles de voltaje. Se debe usar un
adaptador para convertir los niveles de voltaje entre los dos protocolos.
Alternativamente, los adaptadores USB UART de 3.3V se pueden comprar a precios
muy bajos.
Por defecto, en Raspberry Pi equipado con el módulo inalámbrico / Bluetooth
(Raspberry Pi 3 y Raspberry Pi Zero W), el UART PL011 está conectado al módulo
BT, mientras que el mini UART se utiliza para la salida de la consola Linux. En todos
los demás modelos, el PL011 se usa para la salida de la consola Linux.
En términos de dispositivos Linux, por defecto, /dev/ttyS0 se refiere al mini UART,
y /dev/ttyAMA0 se refiere al PL011. El UART primario es el asignado a la consola
Linux, que depende del modelo Raspberry Pi como se describe anteriormente, y se
puede acceder a través de /dev/serial0.
Frecuencia de núcleo mini UART y CPU
La velocidad en baudios del mini UART está vinculada a la frecuencia central de la
VPU en la GPU VC4. Esto significa que como el gobernador de frecuencia VPU
varía la frecuencia del núcleo, también cambia la velocidad en baudios del UART.
Esto hace que el UART de uso limitado en el estado predeterminado. Además,
cuando la consola Linux utiliza el mini UART (Raspberry Pi 3, Raspberry Pi Zero W),
como consecuencia de que el UART esté desactivado, la consola también se
desactiva.
La consola de Linux se puede volver a habilitar agregando enable_uart=1 a
config.txt. Esto también corrige el core_freq a 250Mhz (a menos que se establezca
force_turbo, cuando se fijará a 400Mhz), lo que significa que la velocidad de baudios
UART permanece constante.
El valor predeterminado del indicador enable_uart depende de las funciones reales
de los UART, de modo que si ttyAMA0 está asignado al módulo BT, el valor
enable_uart predeterminado es 0. Si el mini UART está asignado al módulo BT, se
establece de manera predeterminada enable_uart en 1. Tenga en cuenta que si el
Los UART se reasignan utilizando una superposición de árbol de dispositivos
(consulte a continuación), los valores enable_uart predeterminados seguirán
obedeciendo esta regla.
Deshabilitando el uso de la consola UART por parte de Linux
En una instalación predeterminada de Raspbian, el UART primario (serial0) se
asigna a la consola de Linux. El uso del puerto serie para otros fines requiere que
se modifique este comportamiento predeterminado. Al inicio, systemd comprueba
la línea de comandos del kernel de Linux para ver si hay entradas de consola, y
usará la consola definida allí. Para detener este comportamiento, la configuración
de la consola serie debe eliminarse de la línea de comandos.
Esto se puede hacer utilizando la utilidad raspi-config o manualmente.
sudo raspi-config
Seleccione la opción 5, Interfacing options, a continuación, la opción de P6, de
Serial, y seleccione No. Salga de raspi-config.
Para cambiar manualmente la configuración, edite la línea de comando del kernel
con sudo nano /boot/cmdline.txt. Busque la entrada de la consola que hace
referencia al dispositivo serie0 y elimínela, incluida la configuración de velocidad en
baudios. Se verá algo así console=serial0,115200. Asegúrese de que el resto de
la línea permanezca igual, ya que los errores en esta configuración pueden impedir
que el Raspberry Pi se inicie.
Reinicie la Raspberry Pi para que el cambio surta efecto.
Salida UART en pines GPIO
Por defecto, los pines de transmisión y recepción UART están en GPIO 14 y GPIO
15 respectivamente, que son pines 8 y 10 en el encabezado GPIO.
UART y árbol de dispositivos
Varias definiciones de superposición de árbol de dispositivos UART se pueden
encontrar en el árbol kernel github. Las dos superposiciones más útiles son:
pi3-disable-bt
pi3-miniuart-bt.
pi3-disable-bt desactiva el dispositivo Bluetooth y restaura UART0/ttyAMA0 a
GPIO 14 y 15. También es necesario desactivar el servicio del sistema que
inicializa el módem para que no se utilice la UART:
sudo systemctl disable hciuart.
pi3-miniuart-bt cambia la función Bluetooth Raspberry Pi 3 y Raspberry Pi Zero W
para usar el mini UART (ttyS0) y restaura UART0/ttyAMA0 a los GPIO 14 y 15.
Tenga en cuenta que esto puede reducir la tasa de baudios máxima utilizable
(consulte las limitaciones de mini UART a continuación). También es necesario
editar /lib/systemd/system/hciuart.service y reemplazar ttyAMA0 con ttyS0, a
menos que tenga un sistema con reglas udev que creen /dev/serial0 y /dev/
serial1. En este caso, use /dev/serial1 en su lugar porque siempre será correcto.
Si cmdline.txt usa el alias serial0 para hacer referencia al puerto accesible para el
usuario, el firmware lo reemplazará con el puerto apropiado, se use o no esta
superposición.
Hay otras superposiciones específicas de UART en la carpeta. Consulte
/boot/overlays/README para obtener más detalles sobre las superposiciones del
árbol de dispositivos o ejecute dtoverlay -h overlay-name para obtener
descripciones e información de uso.
Para obtener instrucciones completas sobre cómo usar Superposiciones de árbol
de dispositivos, consulte esta página. En resumen, agregue una línea al archivo
config.txt para habilitar Overlays del árbol de dispositivos. Tenga en cuenta que
la -overlay.dts parte del nombre de archivo se elimina.
...
dtoverlay=pi3-disable-bt
...
Diferencias relevantes entre PL011 y mini UART
El mini UART tiene FIFO más pequeños. Combinado con la falta de control de flujo,
esto hace que sea más propenso a perder caracteres a velocidades de transmisión
más altas. También es generalmente menos capaz que el PL011, principalmente
debido a su velocidad de transmisión en baudios a la velocidad de reloj de la VPU.
Las deficiencias particulares de la mini UART en comparación con la PL011 son:
 Sin detección de interrupción
 No hay detección de errores de encuadre
 Sin bit de paridad
 No hay interrupción de tiempo de espera de recepción
 Sin señales DCD, DSR, DTR o RI

Para consultas de la información proporcionada dirigirse al siguiente enlace:


https://www.raspberrypi.org/documentation/configuration/uart.md

Вам также может понравиться