Saltar al contenido

USART, UART, RS232, USB, SPI, I2C, TTL, etc. ¿Qué son todos estos y cómo se relacionan entre sí?

Después de consultar especialistas en esta materia, programadores de varias ramas y profesores hemos dado con la respuesta a la pregunta y la dejamos plasmada en este post.

Solución:

De serie es una palabra general para todo lo que es “Multiplexado por división de tiempo”, para usar un término caro. Significa que los datos se envían distribuidos en el tiempo, la mayoría de las veces un bit tras otro. Todos los protocolos que está nombrando son protocolos en serie.

UART, para transmisor receptor asíncrono universal, es uno de los protocolos seriales más utilizados. Es casi tan viejo como yo y muy simple. La mayoría de los controladores tienen un UART de hardware a bordo. Utiliza una sola línea de datos para transmitir y otra para recibir datos. La mayoría de las veces, los datos de 8 bits se transfieren de la siguiente manera: 1 bit de inicio (nivel bajo), 8 bits de datos y 1 bit de parada (nivel alto). El bit de inicio de nivel bajo y el bit de parada de nivel alto significan que siempre hay una transición de alto a bajo para iniciar la comunicación. Eso es lo que describe UART. Sin nivel de voltaje, por lo que puede tenerlo a 3.3 V o 5 V, lo que use su microcontrolador. Tenga en cuenta que los microcontroladores que quieran comunicarse a través de UART deben acordar la velocidad de transmisión, la tasa de bits, ya que solo tienen el borde descendente de los bits de inicio para sincronizar. Eso se llama comunicación asincrónica.

Para comunicaciones de larga distancia (que no tienen que ser cientos de metros), el UART de 5 V no es muy confiable, es por eso que se convierte a un voltaje más alto, típicamente +12 V para un “0” y -12 V para un ” 1 “. El formato de los datos sigue siendo el mismo. Entonces usted tiene RS-232 (que en realidad debería llamar EIA-232, pero nadie lo hace).

La dependencia del tiempo es uno de los grandes inconvenientes de UART, y la solución es USART, para transmisor receptor universal síncrono / asíncrono. Esto puede hacer UART, pero también un protocolo sincrónico. En sincronía no solo se transmiten datos, sino también un reloj. Con cada bit, un pulso de reloj le dice al receptor que debe bloquear ese bit. Los protocolos síncronos necesitan un ancho de banda mayor, como en el caso de la codificación Manchester, o un cable adicional para el reloj, como SPI e I2C.

SPI (Interfaz de periféricos en serie) es otro protocolo en serie muy simple. Un maestro envía una señal de reloj, y en cada pulso de reloj cambia un bit hacia el esclavo y un bit hacia adentro, proveniente del esclavo. Por lo tanto, los nombres de las señales son SCK para el reloj, MOSI para Master Out Slave In y MISO para Master In Slave Out. Mediante el uso de señales SS (Selección de esclavos), el maestro puede controlar más de un esclavo en el bus. Hay dos formas de conectar varios dispositivos esclavos a un maestro, una se menciona anteriormente, es decir, usando la selección de esclavo, y la otra es la conexión en cadena, usa menos pines de hardware (líneas de selección), pero el software se complica.

I2C (Inter-Integrated Circuit, pronunciado “I al cuadrado C”) también es un protocolo sincrónico, y es el primero que vemos que tiene algo de “inteligencia”; los otros movían tontamente los bits hacia adentro y hacia afuera, y eso fue todo. I2C usa solo 2 cables, uno para el reloj (SCL) y otro para los datos (SDA). Eso significa que el maestro y el esclavo envían datos por el mismo cable, nuevamente controlado por el maestro que crea la señal del reloj. I2C no utiliza selecciones de esclavo independientes para seleccionar un dispositivo en particular, pero tiene direccionamiento. El primer byte enviado por el maestro contiene una dirección de 7 bits (para que pueda usar 127 dispositivos en el bus) y un bit de lectura / escritura, que indica si los siguientes bytes también vendrán del maestro o deberían venir del esclavo. Después de cada byte, el receptor debe enviar un “0” para reconocer la recepción del byte, que el maestro bloquea con un noveno pulso de reloj. Si el maestro quiere escribir un byte, se repite el mismo proceso: el maestro coloca bit tras bit en el bus y cada vez da un pulso de reloj para indicar que los datos están listos para ser leídos. Si el maestro desea recibir datos, solo genera los pulsos de reloj. El esclavo debe asegurarse de que el siguiente bit esté listo cuando se dé el pulso de reloj. Este protocolo está patentado por NXP (anteriormente Phillips), para ahorrar costos de licencia, Atmel usa la palabra TWI (interfaz de 2 cables) que es exactamente igual a I2C, por lo que cualquier dispositivo AVR no tendrá I2C pero tendrá TWI.

Dos o más señales en el mismo cable pueden causar conflictos y tendría un problema si un dispositivo envía un “1” mientras que el otro envía un “0”. Por lo tanto, el bus está cableado en OR: dos resistencias llevan el bus a un nivel alto y los dispositivos solo envían niveles bajos. Si quieren enviar un nivel alto simplemente sueltan el bus.

TTL (Transistor Transistor Logic) no es un protocolo. Es una tecnología más antigua para la lógica digital, pero el nombre se usa a menudo para referirse al voltaje de suministro de 5 V, a menudo refiriéndose incorrectamente a lo que debería llamarse UART.

Sobre cada uno de estos puedes escribir un libro, y parece que estoy bien encaminado. Esta es solo una descripción general muy breve, háganos saber si algunas cosas necesitan aclaración.

Esto está muy cerca del territorio de algo en lo que sería mejor leer artículos que hacer preguntas para obtener respuestas personalizadas, pero para abordar un punto importante que los fabricantes a veces desdibujan:

Hay dos tipos básicos de interfaces seriales: síncronas y asíncronas.

Las interfaces síncronas tienen los datos transmitidos con su sincronización relativa a un reloj explícito, que también se proporciona. El ejemplo clásico de esto es SPI, pero también hay formas especiales como I2S para convertidores de audio, JTAG, interfaces de configuración FPGA, etc. Muchos canales de comunicaciones paralelas son solo esta idea extendida para mover más bits a la vez. A menudo, pero no siempre, estos envían primero el bit más significativo.

Las interfaces asincrónicas tienen la sincronización codificada en el propio flujo de datos. Para los “puertos seriales” y estándares relacionados como RS232, la sincronización de la palabra es relativa al bit de inicio, y el receptor simplemente muestrea la línea en los intervalos correctos a partir de entonces. Otras interfaces pueden ser un poco más complicadas y requieren una recuperación de reloj más sofisticada utilizando algoritmos y bucles de fase bloqueada. Un UART es un “Transmisor Receptor Asíncrono Universal” – realmente el nombre de un bloque funcional que se usa a menudo para implementar un “puerto serie” con cierta flexibilidad en cuanto a longitud de palabra, velocidad y condiciones de inicio / fin. Cosas como RS232, RS422, etc.son estándares para la señalización eléctrica externa de los datos que obtendría de estos: voltaje, un solo extremo o diferencial, si un 1 es alto o bajo, etc. Tradicionalmente, los UART envían el bit menos significativo primero .

El “USART” puede ser una fuente de confusión legítima, ya que es una especie de dispositivo híbrido, un “Transmisor receptor sincrónico / asincrónico universal” Esencialmente, este es y se usa más comúnmente como un UART, pero también se puede configurar para generar (o considerar) un reloj independiente sincronizado con los datos, y es posible que pueda invertir el orden de los bits. Por lo general, se puede configurar para interoperar con SPI, pero es posible que no pueda eliminar el tiempo dedicado a los bits de inicio / parada, por lo que es posible que no pueda operar con algo como I2S, que puede esperar que los datos fluyan continuamente sin espacios entre palabras.

RS-232 es un protocolo en serie muy simple que se utilizó originalmente para módems y teletipos. Es lo que comúnmente se llama puerto serie (o puerto COM en MS-Windows). En la línea, usa nominalmente niveles de ± 12V, pero pueden variar ampliamente ya que la detección se especifica en ± 3V. Siempre hay un controlador de línea (hoy en día generalmente de la familia MAX232) que convierte estos niveles hacia y desde los niveles de señal digital interna de una computadora o microcontrolador.

TTL significa Transistor-Transistor-Logic y tiene su nivel para cero lógico cerca de 0V y para uno lógico cerca de 5V. A menudo, cualquier lógica de 5V se llama TTL, aunque la mayoría de los circuitos hoy en día se construyen como CMOS. Hoy en día también hay muchos circuitos que funcionan a 3.3V, que ya no es TTL.

Con respecto a los niveles internos, los niveles en la línea RS-232 están invertidos, + 12V corresponde a un nivel lógico bajo y -12V corresponde a un nivel lógico alto, lo que puede resultar confuso.

Para describir el formato de los datos se suele mostrar la señal lógica. Cuando la línea está inactiva, es alta. Una transmisión comienza con un bit de inicio bajo, los bits de datos con el bit menos significativo primero, un bit de paridad opcional y uno o dos bits de parada (1 lógico). Esto se denomina transmisión asíncrona, porque los bits de inicio y parada sincronizan los datos de cada byte por separado.

Un UART (transmisor receptor universal asincrónico) es un dispositivo en una computadora o microcontrolador que realiza este tipo de comunicación asincrónica.

Un USART (Transmisor de receptor síncrono asíncrono universal) es un dispositivo que además puede realizar algún tipo de transmisión síncrona, de ahí el S. adicional. El tipo varía, debe buscarlo en la hoja de datos.

SPI, I²C y USB son historias diferentes (y en el caso de USB muy largas).

Si te ha resultado útil nuestro artículo, sería de mucha ayuda si lo compartieras con el resto seniors y nos ayudes a extender nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *