¿Cómo puedo configurar la velocidad UART?

12

¿Cómo debe establecer la velocidad en baudios del UART?

Pregunta adicional: ¿Qué velocidades de transmisión están disponibles en el RPi?

Editar : desde que leí la respuesta de Steve, descubrí que hay dos UART disponibles.

El mini-UART puede funcionar hasta 32Mbaudios, pero tiene un pequeño búfer y, por lo tanto, necesitaría una gran cantidad de CPU para mantenerse al día.

También hay un UART más completo con buffers más grandes, todavía no he encontrado la velocidad mínima / máxima.

John La Rooy
fuente
¿Desea establecer la velocidad en baudios en tiempo de ejecución, para interactuar con otro dispositivo o en el momento del arranque, para que pueda iniciar sesión en el Pi a través de su puerto serie?
Malvineous
@Malvineous, el tiempo de arranque está bien, pero el tiempo de ejecución también es útil. Estoy interesado en hablar con otros dispositivos.
John La Rooy

Respuestas:

9

Según la Guía de inicio rápido de Farnell , la velocidad de transmisión predeterminada es: 115200 . Se puede encontrar una discusión bastante detallada de las configuraciones y capacidades de UART en esta publicación de blog Más sobre los puertos seriales de Raspberry Pi . Los detalles / desafíos de implementación más específicos de trabajar con el puerto serie se pueden encontrar en la publicación del blog Cómo configurar mi Raspberry Pi para la comunicación UART serie de alta velocidad .

No menciona qué distribución está ejecutando, pero suponiendo que esté ejecutando Debian, puede establecer la velocidad en baudios haciendo lo siguiente:

Tenga en cuenta que Raspberry Pi utiliza el UART para mensajes de consola (incluidos los mensajes de arranque) y getty para que pueda iniciar sesión a través de serie. Para utilizar este puerto serie para sus propios usos, deberá desactivar estos servicios.

Para cambiar la velocidad en baudios de la consola, edite /boot/cmdline.txt relacionando 115200 con la velocidad en baudios deseada (tenga en cuenta que esto es todo una línea).

dwc_otg.lpm_enable = 0 console = ttyAMA0,115200 kgdboc = ttyAMA0,115200 console = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 rootwait

luego edite / etc / inittab para cambiar la velocidad en baudios del getty (debe encontrar una línea como la siguiente con la velocidad en baudios de 115200, cámbiela a la velocidad en baudios deseada)

2:23: reaparecer: / sbin / getty -L ttyAMA0 115200 vt100

y recuerde vigilar los voltajes de sus clavijas para evitar daños a su Pi.

Referencias adicionales

http://www.andremiller.net/content/raspberry-pi-and-arduino-via-gpio-uart

Steve Robillard
fuente
3

Este hilo tiene una solución para una velocidad de transmisión arbitraria (no estándar): /programming/12646324/how-to-set-a-custom-baud-rate-on-linux/21960358

Hacer primero las manipulaciones POSIX, luego esto para establecer la velocidad personalizada, funciona bien en el UART incorporado de la Raspberry Pi para obtener una velocidad de transmisión de 250k. Entonces, además de las tarifas estándar POSIX, puede tener prácticamente cualquier factor entero de 16M, hasta al menos 1M ( http://fw.hardijzer.nl/?p=138 para cosas de muy alta velocidad)

RichardAshAudacity
fuente