¿Diferencia y uso de USB, UART, SPI? [cerrado]

3

Estoy intentando habilitar un sistema integrado construido alrededor de Intel D1000 MCU. Soy principalmente de un fondo de software y apenas estoy empezando a ponerme al día con algunos conocimientos de hardware.

Estoy intentando crear una conexión entre EEPROM y MCU . Mi objetivo es habilitar esta ruta:

  1. El usuario graba el firmware en la EEPROM,
  2. Luego, MCU inicia y ejecuta algún código para cargar el firmware en el SPI FLASH. .

Y veo palabras como USB , UART , SPI . Todos ellos tienen Serial como parte de sus nombres. ¿Cual es la diferencia? ¿Cómo usarlos / conectarlos?

(Disculpe si esta es una pregunta ingenua).

    
pregunta smwikipedia

2 respuestas

4

Esos son tres tipos diferentes de interfaces seriales.

SPI tiene un reloj maestro y datos síncronos de maestro en esclavo de salida y en maestro de salida de esclavo: un total de 3 cables más tierra / alimentación y selección de chip opcional. Los datos se transfieren simultáneamente dentro y fuera, normalmente 8 bits a la vez. Los datos pueden ser MSB-first o LSB-first, dependiendo del dispositivo esclavo SPI conectado. SPI es un estándar poco definido, originalmente provino del microcontrolador Motorola 68HC11, creo. Efectivamente es como un registro de desplazamiento.

UART es el periférico que envía y recibe en serie asíncrono. Este protocolo también suele denominarse "RS-232 (C)" o "EIA-232" o "TIA-232" o "puerto COM", o varios otros alias. Este es uno de los protocolos de interfaz en serie más usados comúnmente, por lo que tiene tantos nombres. A diferencia de SPI, RS232 UART usa un solo cable para transmitir tanto el reloj como los datos. Como tal, depende de un acuerdo preestablecido entre el transmisor y el receptor, en cuanto a la sincronización de la velocidad en baudios, el número de bits de datos, si habrá o no un bit de paridad y el número mínimo de bits de parada. Transmitir RS232 es sencillo, pero recibir RS232 es complicado debido a la necesidad de recuperar la temporización de la señal del reloj. Esto se hace mejor en hardware.

USB es un estándar de interfaz más moderno que se describe en detalle en la documentación del Foro de Implementadores de USB; No voy a repetir el estándar aquí. El USB utiliza la señalización NRZ diferencial y, por lo tanto, es mucho más complicado de describir en el nivel del cable. Normalmente, se usa USB agregando el código del controlador a un motor de interfaz serial USB de hardware integrado en el microcontrolador, o bien usa un chip PHY (interfaz física). Realmente no se puede utilizar BitBang USB en el software, como se podría hacer con RS232 o SPI.

No preguntaste sobre Ethernet, esa es otra interfaz serial y otro protocolo complicado pero bien documentado.

Lo importante es que "serial" en sí mismo es solo una palabra, no un estándar completo.

Si aún no lo ha hecho, debería agarrar las hojas de datos de su Intel D1000 MCU y comenzar a revisar la tabla de contenido. Allí encontrará secciones que describen con gran detalle, exactamente cómo funciona cada uno de los periféricos de la MCU.

    
respondido por el MarkU
2

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.

    
respondido por el Sam

Lea otras preguntas en las etiquetas