Estoy seguro de que ya tiene alguna experiencia con USB, todos son 'seriales', ya que los datos se envían un bit a la vez por un carril (línea de conga, carretera de un carril, etc.), en lugar de dividido en varios carriles a la vez (datos paralelos).
SPI es bueno para cosas incrustadas ya que es solo un registro de desplazamiento y no mucho más, esto permite comunicaciones realmente rápidas (10Mbps no es infrecuente incluso en pequeños micros de 8 bits con y más de 50 en muchos chips de 32 bits). Los datos se cargan en un registro de desplazamiento y se envían bit a bit en cada ciclo de reloj. En el otro extremo se realiza la acción inversa. Hay 4 pines: MISO (Master-In Slave-Out), MOSI (Master-Out Slave-In), CLK y CS (Chip Select), a veces es el SDI más ambiguo (serial in), SDO (serial out), SCK (reloj) y CE (chip habilitado) o alguna variación de los mismos. SPI es una interfaz interna, prácticamente utilizada entre chips en la misma PCB. (I2C es otra interfaz interna de chip a chip en serie que está más cerca de una UART de baja velocidad en términos de complejidad y número de pines)
UART es el nombre técnico para el tipo de puerto serie que puede encontrar en una PC antigua de los 90 (mouse serie, teclado y módem), UART usa la mitad de los cables como SPI (TX y RX en oposición a los datos en, salida de datos, reloj y chip de selección). UART reduce el número de pines, pero limita la velocidad de datos máxima, ya que el receptor tiene que probar y aplicar ingeniería inversa al reloj de datos desde el flujo de bits. UART requiere más trabajo para decodificar, pero como casi todos los procesadores existentes tienen un transceptor UART dedicado, este no es un problema. UART es una buena forma rápida de hacer que un micro incorporado hable con una PC, ya que los adaptadores de UART a USB cuestan un dólar por docena (suponiendo que no tenga ningún puerto viejo en su computadora). Los únicos pines de interés real son solo el TX y RX junto con una conexión a tierra eléctrica. UART es más una interfaz externa, es decir, entre sistemas o dispositivos completos en lugar de chips individuales.
Ahora, por un amplio margen, el USB es el más rápido de los tres (por un orden de magnitud), pero también es mucho más complejo, con apretón de manos, detección de dispositivos, negociación automática de velocidad, etc. No es algo que sea particularmente fácil de hacer. un sistema integrado a menos que pueda obtener algunas bibliotecas de software USB preconfiguradas para su chip. USB es una interfaz diferencial, bidireccional. Hay dos pines: D + y D-, cada uno es el espejo opuesto al otro, esto se hace ya que mejora la integridad de la señal (entre otras cosas) permitiendo hasta 480Mbps hacia abajo en algunos cables de basura bastante, siempre que el D + y D- los cables siempre están uno al lado del otro o en un par trenzado.