USART, UART, RS232, USB, SPI, I2C, TTL

Serial es la palabra general para cualquier cosa que sea multiplexación por división de tiempo, para usar un término caro. Esto significa que los datos se transfieren con el tiempo, la mayoría de las veces un bit tras otro. Todos los protocolos que nombra son protocolos en serie.

UART , para un receptor asíncrono genérico, es uno de los protocolos seriales más utilizados. Es casi tan antiguo como yo y muy simple. La mayoría de los controladores tienen un UART de hardware a bordo. Utiliza una línea de datos para transmitir y otra para recibir datos. Más comúnmente, se transmiten datos de 8 bits: 1 bit de inicio (bajo), 8 bits de datos y 1 bit de parada (alto). Un bit de inicio bajo y un bit de parada alto significan que siempre hay una transición de alto a bajo para iniciar la comunicación. Esto es lo que describe la UART. No hay nivel de voltaje, por lo que puede usarlo a 3.3V o 5V, dependiendo del microcontrolador que esté usando. Tenga en cuenta que los microcontroladores que quieran comunicarse a través de UART deben acordar la velocidad en baudios, velocidad de bits porque solo tienen un bit de inicio para la sincronización. A esto se le llama comunicación asincrónica.

Para comunicaciones de larga distancia (no debe ser de cientos de metros), el UART de 5 V no es muy confiable, por lo que se convierte a un voltaje más alto, generalmente + 12V para «0» y -12 V para «1». El formato de datos sigue siendo el mismo. Luego tiene RS-232 (que en realidad debe llamar EIA-232, pero nadie más lo hace).

La dependencia del tiempo es una de las grandes desventajas del UART y la solución USART para un transmisor de recepción universal síncrono / asíncrono. UART puede hacer esto, pero también el protocolo síncrono. En modo síncrono, no solo hay datos, sino también el reloj transmitido. Con cada bit, un pulso de sincronización le dice al receptor que se enganche en ese bit. Los protocolos síncronos requieren un mayor ancho de banda, como en el caso de la codificación Manchester, o un cable adicional para relojes como SPI e I2C.

SPI (Serial Peripheral Interface) es un protocolo serial muy simple. El maestro envía una señal de reloj y cada pulso de sincronización cambia un bit al esclavo y un bit al 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. Usando señales SS (Selección de esclavos), el maestro puede controlar múltiples esclavos en el bus. Hay dos formas de conectar varios esclavos a un maestro, una se menciona anteriormente, es decir, usando la selección de esclavos y la otra usando la conexión en serie, usa menos pines de hardware (selecciona líneas), pero el software se vuelve complejo.

I2C (Inter-Integrated Circuit, pronunciado «I cuadrado C») es también un protocolo sincrónico, y es lo primero que vemos que tiene «inteligencia»; otros movieron estúpidamente los bits hacia adentro y hacia afuera, y así fue. I2C usa solo 2 cables, uno para reloj (SCL) y otro para datos (SDA). Esto significa que el maestro y el esclavo envían datos por el mismo cable, nuevamente controlado por el maestro, que genera una señal de reloj. I2C no utiliza selecciones de esclavos independientes para seleccionar un dispositivo específico, pero es direccionable. El primer byte enviado por el maestro contiene una dirección de 7 bits (por lo que puede 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 acusar recibo de un byte, que el maestro captura con el 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 sincronización para indicar que los datos están listos para ser leídos. Si el maestro desea recibir datos, solo genera pulsos de reloj. El esclavo debe asegurarse de que el siguiente bit esté listo cuando se dé el pulso de sincronización. Este protocolo está patentado por NXP (anteriormente Phillips) para ahorrar el costo de licencia de Atmel al usar la palabra TWI (interfaz de dos cables) que es exactamente igual que I2C, por lo que cualquier dispositivo AVR no tendrá I2C, pero sí TWI. el maestro pone 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 pulsos de reloj. El esclavo debe asegurarse de que el siguiente bit esté listo cuando se dé el pulso de sincronización. Este protocolo está patentado por NXP (anteriormente Phillips) para ahorrar el costo de licencia de Atmel al usar la palabra TWI (interfaz de dos cables) que es exactamente igual que I2C, por lo que cualquier dispositivo AVR no tendrá I2C, pero sí TWI. el maestro pone 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 pulsos de reloj. El esclavo debe asegurarse de que el siguiente bit esté listo cuando se dé el pulso de sincronización. Este protocolo está patentado por NXP (anteriormente Phillips) para ahorrar el costo de licencia de Atmel al usar la palabra TWI (interfaz de dos cables) que es exactamente igual que I2C, por lo que cualquier dispositivo AVR no tendrá I2C, pero sí TWI.

Dos o más señales en el mismo cable pueden causar conflictos y usted tiene un problema si un dispositivo envía un «1» y el otro envía un «0». Por lo tanto, el bus está conectado a un sistema cableado OR: dos resistencias elevan el bus y los dispositivos solo envían niveles bajos. Si quieren enviar un alto nivel, simplemente sueltan el bus.

TTL (Transistor Transistor Logic) no es un protocolo. Esta 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 se refiere incorrectamente a lo que debería llamarse UART.

Hay dos tipos principales de interfaces seriales: síncronas y asíncronas.

Las interfaces síncronas tienen datos transferidos 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 existen formas especiales como I2S para convertidores de audio, JTAG, interfaces de configuración FPGA, etc. Muchos canales de comunicación paralelos solo esta idea se extiende a mover más bits al mismo tiempo. A menudo, pero no siempre, envían primero la parte más significativa.

Las interfaces asincrónicas tienen el tiempo codificado en el propio flujo de datos. Para los «puertos seriales» y estándares relacionados como RS232, el tiempo de palabra es relativo al bit de inicio, y el receptor simplemente muestrea a intervalos apropiados. Otras interfaces pueden ser un poco más complejas y requerir una recuperación de reloj más rápida mediante el uso de algoritmos y bucles de bloqueo de fase. El UART es un «transmisor / receptor asíncrono universal», en realidad un nombre para un bloque de funciones que se usa a menudo para implementar un «puerto serie» con cierta flexibilidad en términos de longitud de palabra, velocidad e inicio / fin. Cosas como RS232, RS422, etc. son los estándares para la señalización eléctrica exterior de los datos que recibirá de estos voltajes,

El «USART» puede ser una fuente de confusión legítima, ya que es una especie de dispositivo híbrido, «Transmisor receptor sincrónico / asincrónico universal». Básicamente, esto se usa y se usa con mayor frecuencia como un UART, pero también se puede configurar para generar (o contabilizar) un reloj de sincronización de datos separado y puede revertir el orden de los bits. Por lo general, está configurado para comunicarse con SPI, pero es posible que no elimine el tiempo asignado para los bits de inicio / parada, por lo que no podrá funcionar con algo como I2S que puede esperar un flujo continuo de datos sin espacios entre palabras.

RS-232 es un protocolo serie muy simple que se utilizó originalmente para módems y teleimpresores. Esto es lo que comúnmente se conoce como puerto serie (o puerto COM en MS-Windows). En la línea, usa nominalmente niveles de ± 12 V, pero estos pueden variar ampliamente ya que la detección se define en ± 3 V. Siempre hay un controlador de línea (actualmente generalmente en la familia MAX232) que convierte estos niveles en niveles de señal digital interna de la computadora o microcontrolador. y fuera de ella.

TTL significa transistor-transistor-lógica y tiene su propio nivel de cero lógico alrededor de 0 V y de lógica alrededor de 5 V. A menudo, cualquier lógica de 5 V se llama TTL, aunque la mayoría de los circuitos se construyen actualmente como CMOS. También hay muchos circuitos en la actualidad que operan a 3.3V, que ya no es TTL.

En términos de niveles internos, los niveles en la línea RS-232 están invertidos, + 12V es el mínimo lógico y -12 V es el máximo lógico, lo que puede resultar confuso.

Por lo general, se muestra una señal lógica para describir el formato de datos. Cuando la línea está inactiva, es alta. La transmisión comienza con el bit de inicio menos significativo, el bit de datos con el bit menos significativo primero, un bit de paridad adicional 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 asíncrono) es un dispositivo en una computadora o microcontrolador que realiza dicha comunicación asíncrona.

El USART (Receptor-transmisor síncrono asíncrono universal) es un dispositivo que además puede realizar algunos tipos de transmisión síncrona, de ahí la S. adicional. Qué tipo cambia, debe encontrarlo en la hoja de datos.

SPI, I2C y USB difieren (y en el caso de USB muy largos) historiales.

Para mejorar el rendimiento, se desarrolló el protocolo CAN. En este concepto se utiliza el arbitraje, en el que dos dispositivos están listos para comunicarse, luego, dependiendo de su prioridad, se produce la transmisión o recepción. CAN se usa ampliamente en muchas industrias.