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

Estoy tratando de habilitar un sistema integrado construido alrededor de Intel D1000 MCU. Principalmente tengo experiencia en software y estoy empezando a ponerme al día con algunos conocimientos de hardware.

Estoy tratando de construir una conexión entre un EEPROMy el MCU. Mi objetivo es habilitar esta ruta:

  1. El usuario graba el firmware en la EEPROM,
  2. Luego, MCU arranca y ejecuta un código para cargar el firmware en SPI FLASH. .

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

(Disculpe si esta es una pregunta ingenua).

La razón por la que se proporcionan todas esas diferentes opciones de interfaz es porque depende de a qué se esté conectando. Es posible que, para el diseño de su sistema, algunos periféricos, sensores o interfaces necesiten una o más de esas interfaces. Así que usa cualquiera que hable correctamente entre el microcontrolador y el periférico.
Parece que su pregunta está obteniendo votos cercanos. A primera vista esta pregunta parece una de esas "¿qué es un USB?" preguntas. Existe la expectativa de que sepa cómo usar una búsqueda en Internet para encontrar su hoja de datos de IC, así como encontrar documentos estándar para interfaces comunes como USB. De la forma en que lo leo, está solicitando una breve descripción general de comparación/contraste, pero será responsable de profundizar en los detalles de implementación. Le sugerimos que edite para agregar el enlace de su hoja de datos.
"Mi objetivo es habilitar esta ruta: firmware -> EEPROM -> SPI FLASH -> MCU". Eso no tiene sentido: el firmware es un concepto, no algo físico. EEPROM y FLASH no se comunican, por fin un lado debe ser inteligente.
@WoutervanOoijen Perdón por perder algunos detalles. Quiero grabar el firmware en la EEPROM, y luego MCU ejecuta un código para cargar el firmware en SPI FLASH.

Respuestas (2)

Esos son tres tipos diferentes de interfaces seriales.

SPI tiene un reloj maestro y datos sincrónicos maestro-en-esclavo-fuera y maestro-fuera-esclavo-en: un total de 3 cables más tierra/alimentación y selección de chip opcional. Los datos se transfieren simultáneamente de entrada y salida, típicamente 8 bits a la vez. Los datos pueden ser MSB-primero o LSB-primero, según el dispositivo esclavo SPI conectado. SPI es un estándar algo vagamente definido, originalmente vino del microcontrolador Motorola 68HC11, creo. Efectivamente es como un registro de desplazamiento.

UART es el periférico que envía y recibe serial asíncrono. Este protocolo a menudo también se denomina "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 antiguos y comúnmente utilizados, 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 del 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 sincronizació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 repetiré el estándar aquí. USB utiliza señalización NRZ diferencial y, por lo tanto, es mucho más complicado de describir a nivel de cable. Por lo general, usa USB agregando código de controlador a un motor de interfaz serie USB de hardware integrado en el microcontrolador, o bien usa un chip PHY (interfaz física). Realmente no puede usar USB en el software, como podría hacerlo 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, debe obtener las hojas de datos de su MCU Intel D1000 y comenzar a hojear la tabla de contenido. Allí encontrará secciones que describen con gran detalle cómo funciona exactamente cada uno de los periféricos de la MCU.

Estoy seguro de que ya tiene algo de experiencia con USB, todos son 'serie' ya que los datos se envían un bit a la vez por un carril (línea de conga, autopista de un carril, etc.), en lugar de dividirse 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 raro incluso en pequeños micros de 8 bits y 50+ en muchos chips de 32 bits). Los datos se cargan en un registro de desplazamiento y se envían poco a poco 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 más ambiguo SDI (entrada en serie), SDO (salida en serie), SCK (reloj) y CE (habilitación de chip) 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 serial interna de chip a chip que está más cerca de un 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 (ratón, teclado y módem serie), UART utiliza la mitad de la cantidad de cables que SPI (TX y RX en lugar de datos de entrada, salida de datos, selección de reloj y chip). UART reduce el conteo de pines pero limita la velocidad máxima de datos ya que el receptor tiene que intentar aplicar ingeniería inversa al reloj de datos del flujo de bits. UART requiere más trabajo para decodificar, pero como casi todos los procesadores existentes tienen un transceptor UART dedicado, esto no es un problema. UART es una buena manera rápida de obtener un micro incorporado para hablar con una PC, ya que los adaptadores UART a USB cuestan un dólar la docena (suponiendo que no tenga buenos puertos de comunicación en su computadora). Los únicos pines de interés real son solo el TX y el RX junto con una conexión a tierra eléctrica. UART es más una interfaz externa, es decir

Ahora USB es por un amplio margen el más rápido de los tres (por un orden de magnitud) pero también es mucho más complejo, con protocolo de enlace, detección de dispositivos, negociación automática de velocidad, etc. No es algo particularmente fácil de hacer en 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 del otro, esto se hace porque mejora la integridad de la señal (entre otras cosas) lo que permite hasta 480 Mbps por algunos cables bastante basura siempre que el D+ y D- los cables siempre están uno al lado del otro o en un par trenzado.