UART significa receptor / transmisor asíncrono universal y es una forma en que las computadoras pueden "hablar" entre sí a través de una línea serie. Es asíncrono porque no hay una línea de reloj separada como la que hay para otros protocolos en serie como SPI y I2C. Cada byte está precedido por un bit de inicio y seguido por uno o dos bits de parada (generalmente uno).
Las velocidades típicas son 9600, 19200, 57600 o 115200 baudios, aunque algunas UART pueden superar el millón de baudios. La velocidad en baudios es esencialmente de bits por segundo, por lo que una velocidad en baudios de 115.200 significa que está enviando 11.500 bytes por segundo, ya que cada byte tiene la sobrecarga de un bit de inicio y un bit de parada.
Además de hablar directamente con otro chip de computadora, los UART a veces se usan para comunicarse con otros periféricos. Por ejemplo, es muy común usar un UART para comunicarse con un módem inalámbrico, ya sea por radio celular o Bluetooth usando los comandos "AT".
Las salidas de un UART (Tx = transmitir, Rx = recibir) están en los mismos niveles lógicos (generalmente 3.3v o 5v) que el resto del circuito. El estado inactivo de una línea UART es una lógica alta. Para conectar dos microcontroladores juntos, puede vincular el cable Tx de un UART al cable Rx de otro y viceversa.
Sin embargo, los UART también se usan comúnmente para controlar interfaces RS-232 , que permiten que las señales viajen por varios cien pies Para esto, necesita un circuito de cambio de nivel, ya que RS-232 utiliza voltajes diferentes a los niveles lógicos en la PCB, es decir, la lógica alta se convierte en una tensión negativa (típicamente de -5v a -12v), y la lógica baja se convierte en una tensión positiva (normalmente + 5v a + 12v).
Conecte NOT para conectar los cables Tx y Rx de un UART directamente a un cable RS-232.
Los UART se incluyen generalmente dentro de un conjunto de microcontroladores de periféricos de E / S, y habrá una serie de registros asociados con el UART. El UART usualmente tendrá un conjunto dedicado de rutinas de biblioteca proporcionadas por el fabricante del microcontrolador para acceder a ellas. Estos incluirán una rutina (o rutinas) para iniciar el UART, como establecer su velocidad en baudios y otras características como el tamaño del carácter (7 u 8 bits), paridad y bits de parada (casi siempre se pueden ignorar estos últimos tres elementos). ).
Luego habrá rutinas para escribir un carácter y leer un carácter. A 115,200 baudios, puede haber un personaje entrando cada 100 µs. Por lo tanto, a menudo necesita usar una rutina de interrupción para reunirlos en un búfer para que el nivel base de su firmware pueda procesarlos más tarde. Los UART a menudo proporcionan FIFO (desde cuatro caracteres hasta 128 o más), por lo que es menos probable que se pierda un personaje.
Puede haber varios UART en el mismo microcontrolador, un PIC32 con el que he trabajado tenía seis de ellos. (Por lo general, los pines para los UART se comparten con otros periféricos como SPI e I2C, por lo que eso significa que puedes tener algunos UART, un par de SPI y un par de interfaces I2C, o muchos UART, pero ninguno de los otros). Si uno se queda sin UART en el microcontrolador, puede obtenerlos en circuitos integrados separados, generalmente conectados mediante interfaces I2C o SPI.