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

154

Como aficionado a la electrónica para principiantes, he escuchado estos términos y más se están lanzando por todas partes. En su raíz, entiendo que todos se basan en la comunicación entre dispositivos, computadoras, periféricos, etc.

Tengo un entendimiento básico de cómo funcionan todos ellos, pero me confundo cuando los veo y me cuesta entender cómo se relacionan entre ellos. Por ejemplo, ¿es UART un subconjunto de USART? ¿Cuál es la diferencia entre RS232 y Serial? ¿Cuáles son las diferencias principales entre todos estos métodos de comunicación: confiabilidad, costo, aplicación, velocidad, requisitos de hardware?

Si te puedes imaginar, tengo todos estos términos escritos en tarjetas, dispersos en la mesa de centro, y necesito a alguien que me ayude a organizar mi entendimiento. Perdóneme si esta pregunta es un poco vaga, pero realmente siento que esa es la naturaleza de esta pregunta en conjunto.

    
pregunta capcom

4 respuestas

234

Serie es una palabra paraguas para todo lo que es "Multiplexión por división de tiempo", para utilizar un término costoso. Significa que los datos se envían distribuidos a lo largo del tiempo, más a menudo un bit después de otro. Todos los protocolos que estás nombrando son protocolos en serie.

UART , para el transmisor de receptor asíncrono universal, es uno de los protocolos serie 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. No hay nivel de voltaje, por lo que puede tenerlo a 3.3 V o 5 V, cualquiera que sea su microcontrolador. Tenga en cuenta que los microcontroladores que desean comunicarse a través de UART tienen que estar de acuerdo con la velocidad de transmisión, la velocidad de bits, ya que solo tienen los bits de inicio en el borde inferior para sincronizarse. Eso se llama comunicación asíncrona.

Para la comunicación a larga distancia (que no tiene que ser cientos de metros), el UART de 5 V no es muy confiable, por eso se convierte a un voltaje más alto, generalmente de +12 V para un "0" y -12 V para un "1". El formato de datos sigue siendo el mismo. Luego tienes RS-232 (al que deberías llamar EIA-232, pero nadie lo hace)

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

SPI (Interfaz Periférica Serial) es otro protocolo serial muy simple. Un maestro envía una señal de reloj, y con cada pulso de reloj se desplaza 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 reloj, MOSI para Master Out Slave In y MISO para Master In Slave Out. Al usar señales SS (Selección de esclavo), el maestro puede controlar más de un esclavo en el bus. Hay dos formas de conectar varios dispositivos esclavos a un maestro, uno se menciona anteriormente, es decir, mediante el uso de la selección de esclavos, y el otro es el encadenamiento en margarita, usa menos pines de hardware (líneas de selección), pero el software se complica.

I2C (el Circuito Inter-Integrado, pronunciado "I squared C") también es un protocolo síncrono, y es el primero que vemos que tiene algo de "inteligencia"; los otros modificaron y modificaron los bits, y eso fue todo. I2C utiliza 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 a través del mismo cable, nuevamente controlado por el maestro que crea la señal del reloj. I2C no utiliza Selecciones de esclavos por separado 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 provendrán del maestro o si deben provenir del esclavo. Después de cada byte, el receptor debe enviar un "0" para confirmar la recepción del byte, que el maestro enclava con un noveno impulso de reloj. Si el maestro desea escribir un byte, se repite el mismo proceso: el maestro coloca bit tras bit en el bus y cada vez emite un impulso de reloj para indicar que los datos están listos para ser leídos. Si el maestro quiere recibir datos solo genera los pulsos de reloj. El esclavo tiene que cuidar que el siguiente bit esté listo cuando se da el pulso de reloj. Este protocolo está patentado por NXP (anteriormente Phillips), para ahorrar costos de licencias, Atmel usa la palabra TWI (interfaz de 2 cables) que es exactamente igual que 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 con OR: dos resistencias elevan el bus a un nivel alto y los dispositivos solo envían niveles bajos. Si quieren enviar un alto nivel simplemente liberan el autobús.

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 a la tensión de alimentación de 5 V, a menudo se refiere incorrectamente a lo que debería llamarse UART.


Sobre cada uno de estos, puedes escribir un libro, y parece que estoy bien encaminado. Este es solo un resumen muy breve, háganos saber si hay cosas que necesitan aclaración.

    
respondido por el stevenvh
10

Esto está muy cerca del territorio de algo en el que sería mejor leer artículos que hacer preguntas para respuestas personalizadas, pero para abordar un punto importante que a veces el fabricante difumina:

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

Las interfaces síncronas tienen los datos transmitidos con su tiempo en relación con 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 conversores de audio, JTAG, interfaces de configuración FPGA, etc. Muchos canales de comunicación paralelos son solo esta idea extendida para mover más bits a la vez. A menudo, pero no siempre, estos envían el bit más significativo primero.

Las interfaces asíncronas tienen el tiempo codificado en el flujo de datos en sí. Para "puertos seriales" y estándares relacionados como RS232, el tiempo de la palabra es relativo 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 bucles y algoritmos de bloqueo de fase. Un UART es un "transmisor de receptor asíncrono universal": realmente es el nombre de un bloque funcional que se usa a menudo para implementar un "puerto serie" con cierta flexibilidad en cuanto a la longitud de la palabra, la velocidad y las condiciones de inicio / finalización. 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, extremo único o diferencial, si 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 un tipo de dispositivo híbrido, un "Transmisor Receptor Sincrónico / Asíncrono Unversal" Esencialmente, esto es y se usa más comúnmente como un UART, pero también puede configurarse para generar (o considerar) un reloj separado sincronizado con los datos, y puede ser capaz de invertir el orden de los bits. Por lo general, es configurable para interactuar 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 las palabras.

    
respondido por el Chris Stratton
8

RS-232 es un protocolo en serie muy simple que se usó originalmente para módems y teletipos. Es lo que comúnmente se llama un puerto serie (o un puerto COM en MS-Windows). En la línea, nominalmente utiliza niveles de ± 12V, pero pueden variar ampliamente según la detección se especifique a ± 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-Lógica y tiene su nivel para cero lógico cerca de 0 V y para lógico cerca 5V. A menudo, cualquier lógica de 5 V se llama TTL, aunque la mayoría de los circuitos hoy en día se construyen como CMOS. Hoy también hay muchos circuitos que funcionan a 3.3 V, que ya no es TTL.

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

Para describir el formato de datos, generalmente se muestra 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 para cada byte por separado.

Un UART (transmisor de receptor asíncrono universal) es un dispositivo en una computadora o microcontrolador que realiza este tipo de comunicación asíncrona.

Un USART (transmisor de receptor síncrono asíncrono universal) es un dispositivo que además puede hacer algún tipo de transmisión síncrona, por lo tanto, la S. adicional varía según el tipo, debe buscarlo en la hoja de datos.

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

    
respondido por el starblue
1

Estoy de acuerdo con lo que se ha mencionado sobre los protocolos SPI y CAN. Para mejorar el rendimiento, se ha diseñado el protocolo CAN. En este concepto de arbitraje se utiliza en el que dos dispositivos están listos para comunicarse, luego, dependiendo de su prioridad, la transmisión o recepción tiene lugar. CAN es ampliamente utilizado en muchas industrias.

    
respondido por el user19166

Lea otras preguntas en las etiquetas