Serial es una palabra general para todo lo que es "Time Division Multiplexed", para usar un término costoso. Significa que los datos se envían a lo largo del tiempo, la mayoría de las veces un bit tras otro. Todos los protocolos que está nombrando son protocolos seriales.
UART, para Universal Asynchronous Receiver Transmitter, 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 una para recibir datos. La mayoría de las veces se transfieren datos de 8 bits, 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 a UART. Sin nivel de voltaje, por lo que puede tenerlo a 3.3 V o 5 V, cualquiera que sea el uso de su microcontrolador. Tenga en cuenta que los microcontroladores que desean comunicarse a través de UART deben acordar la velocidad de transmisión, la velocidad de bits, ya que solo tienen los bits de inicio del borde descendente para sincronizar. Eso se llama comunicación asincrónica.
Para la comunicación a larga distancia (eso 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, típicamente +12 V para un "0" y -12 V para un " 1 ". El formato de datos sigue siendo el mismo. Luego 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 el Transmisor receptor síncrono / asíncrono universal. Esto puede hacer UART, pero también un protocolo síncrono. En sincronía no solo hay datos, sino también un reloj transmitido. Con cada bit, un pulso de reloj le dice al receptor que debe enganchar 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 en serie) es otro protocolo en serie 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. Mediante el uso de señales SS (Slave Select), el maestro puede controlar más de un esclavo en el bus. Hay dos formas de conectar múltiples dispositivos esclavos a un maestro, uno se menciona anteriormente, es decir, usar el esclavo select, y otro es encadenar, usa menos pines de hardware (líneas de selección), pero el software se complica.
I2C(Circuito Inter-Integrado, pronunciado "I cuadrado C") también es un protocolo sincrónico, y es el primero que vemos que tiene algo de "inteligencia"; los otros movieron tontamente los bits dentro y fuera, 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 a través del mismo cable, nuevamente controlado por el maestro que crea la señal del reloj. I2C no utiliza selecciones esclavas separadas 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 el próximo byte (s) también vendrá del maestro o debería venir del esclavo. Después de cada byte, el receptor debe enviar un "0" para confirmar la recepción del byte, que el maestro se engancha con un noveno pulso de reloj. Si el maestro quiere escribir un byte, se repite el mismo proceso: 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 los pulsos de reloj. El esclavo debe asegurarse de que el siguiente bit esté listo cuando se le dé el pulso de reloj. Este protocolo está patentado por NXP (anteriormente Phillips), para ahorrar costos de licencia, Atmel utiliza la palabra TWI (interfaz de 2 hilos) que es exactamente igual a I2C, por lo que cualquier dispositivo AVR no tendrá I2C pero tendrá TWI. 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 le dé el pulso de reloj. Este protocolo está patentado por NXP (anteriormente Phillips), para ahorrar costos de licencia, Atmel utiliza la palabra TWI (interfaz de 2 hilos) que es exactamente igual a I2C, por lo que cualquier dispositivo AVR no tendrá I2C pero tendrá TWI. 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 le dé el pulso de reloj. Este protocolo está patentado por NXP (anteriormente Phillips), para ahorrar costos de licencia, Atmel utiliza la palabra TWI (interfaz de 2 hilos) 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 usted 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á conectado por cable: dos resistencias tiran del 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 a menudo se usa para referirse al voltaje de suministro de 5 V, a menudo incorrectamente referido a lo que debería llamarse UART.
Sobre cada uno de estos puedes escribir un libro, y parece que estoy en camino. Esta es solo una descripción muy breve, háganos saber si algunas cosas necesitan aclaración.