Configurar UART Raspberry

LOS UART RASPBERRY PI Los SoCs utilizados en Raspberry Pi tienen dos UART incorporados, un PL011 y un mini UART. Se impl

Views 108 Downloads 0 File size 30KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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