Leí en algunos lugares, uno de ellos es este , que una de las principales diferencias entre UART y SPI es que el primero es un tipo de hardware y el segundo es un protocolo.
Estoy teniendo dificultades para comprender completamente esta noción. Esto es brevemente lo que obtuve hasta ahora del material de lectura que encontré buscando en Google, incrustado con algunas preguntas:
UART es una pieza de hardware que se utiliza para comunicarse entre dos componentes. El UART convierte los datos paralelos que recibe de un bus de datos en un flujo de bits en serie que se transfieren a través de un solo cable y viceversa. Un UART usa solo 2 cables, uno para recibir y otro para transmitir. El resto de los detalles no son importantes para la forma de esta discusión.
SPI es un protocolo de comunicación síncrono (ya que utiliza un reloj) utilizado entre dispositivos.
Este protocolo utiliza 4 cables (si solo hay un esclavo presente):
A diferencia de UART, transfiere bits en un flujo no dividido en paquetes (aquí comienza la confusión: se compara con UART). Los dispositivos que se comunican a través de SPI tienen una relación maestro-esclavo. El maestro es el dispositivo de control, generalmente un microcontrolador, mientras que el esclavo, generalmente algo como una pantalla, un sensor o un chip de memoria, recibe instrucciones del maestro. (Comprobación de cordura: cuando decimos que el maestro controla al esclavo, ¿simplemente nos referimos a la selección del esclavo por el cable SS/CS y la señalización del reloj?)
Lo que más me confunde es esta última diferencia: hardware frente a protocolo. Parece que estos dos esquemas de comunicación se comparan de lado a lado en los mismos parámetros (Número de pines, bits de inicio/parada, Velocidad, etc.) - no se pueden comparar 2 entidades esencialmente diferentes basadas en los mismos parámetros, ¿verdad?
¿La diferencia es que UART es una pieza de hardware dedicada y SPI usa GPIO generales del microcontrolador?
No, UART no es necesariamente una pieza de hardware, ni SPI. Puede implementar ambos en software en un dispositivo que no tiene hardware UART o SPI. Por lo general, ambos se encuentran dentro de MCU como periféricos de hardware.
Un UART simplemente significa Transmisor receptor asíncrono universal. Utiliza el protocolo de encuadre de inicio y parada asíncrono para transmitir símbolos de datos con un número seleccionable de bits y bits de paridad para la verificación de errores. Para simplificar, supongamos que envía símbolos de datos de 8 bits que se denominan bytes. Entonces, un UART simplemente proporciona una interfaz serial asíncrona a nivel de bit.
SPI era originalmente un periférico de hardware simple para interactuar, como los chips TTL que tenían interfaces seriales sincronizadas. Simplemente descargó la transmisión de bytes del software al hardware, con polaridad de reloj y ajuste de fase seleccionables. Entonces, un SPI proporciona simplemente una interfaz serial síncrona orientada a bytes a nivel de bits.
Entonces, al final, ambos son protocolos sobre cómo enviar bits y bytes.
Pero eso es diferente de un protocolo que define lo que significan esos bytes. Por ejemplo, un chip SPI Flash define un protocolo sobre cómo usar la selección de chip para delimitar comandos y qué bytes son comandos y cuáles son datos, y cómo se usan para leer y escribir la memoria Flash a través del bus SPI a alto nivel. Lo mismo ocurre, por ejemplo, con el protocolo YModem, que define lo que significan esos bytes para poder enviar archivos a través de UART a alto nivel.
La mayoría de sus afirmaciones son incorrectas y hay muchos conceptos erróneos aquí...
una de las principales diferencias entre UART y SPI es que el primero es un tipo de hardware y el segundo es un protocolo.
No, eso es una tontería. Tampoco es un protocolo. Ambos son estándares de capa física y de enlace de datos. Consulte el "modelo OSI" que se enseña en cualquier clase para principiantes de comunicación de datos.
Estoy teniendo dificultades para comprender completamente esta noción.
No es de extrañar ya que es una tontería incorrecta...
UART es una pieza de hardware que se utiliza para comunicarse entre dos componentes.
Más bien, existe el bus UART, la capa de enlace de datos, y el componente físico UART, que se utiliza para comunicarse a través de ese bus. En los días en que los dinosaurios caminaban por la tierra, había un componente llamado 16550, desarrollado por National Semi, que era "el UART" y se colocaba en todas las computadoras PC.
Del mismo modo, necesita un periférico de hardware SPI. Aunque básicamente es solo un registro de desplazamiento glorificado adjunto a un montón de señales.
El UART convierte los datos paralelos que recibe de un bus de datos
La forma de abordar el UART depende del sistema. En los microcontroladores modernos, esto se maneja internamente y no tenemos que preocuparnos de cómo. Puede ser paralelo, se trata de cómo está diseñado el MCU y no tiene nada que ver con UART.
SPI es un síncrono (ya que usa un reloj)
Más bien, es síncrono ya que usa una señal de reloj junto con los datos. UART también registra sus datos, pero puede haber retrasos infinitos entre los bytes de datos. Los términos síncrono frente a asíncrono no son realmente tan útiles, son principalmente palabras de moda.
A diferencia de UART, transfiere bits en un flujo no dividido en paquetes
No, al igual que UART, transfiere un mínimo de 8 bits. Si hay algún tipo de protocolo de capa superior presente, dicta los formatos de los paquetes. Pero eso no es algo presente en la capa de enlace de datos, sino en la capa de aplicación.
Comprobación de cordura: cuando decimos que el maestro controla al esclavo, ¿simplemente nos referimos a la selección del esclavo por el cable SS/CS y la señalización del reloj?)
Significa que controla /SS así como el reloj. Por lo tanto, el maestro controla cuándo comienza la transmisión de datos y qué tan rápido es. El esclavo solo tiene que alinearse. Y, por lo general, esto significa que el esclavo debe tener los datos listos en todo momento, porque a menudo no puede saber cuándo es el momento de enviarlos. Hay muchas variaciones en esto, ya que SPI no está realmente tan bien estandarizado.
UART solo puede tener 2
Con estándares de capa más altos, como RS-485, puede crear redes más grandes. Por lo general, "redes en estrella" donde toda la información pasa a un maestro, quien luego la redirige. Pero también puede tener una forma de red multipunto, siempre que dos nodos no envíen al mismo tiempo. Es posible, pero en general bastante crudo.
UART significa Receptor-transmisor asíncrono universal, que Wikipedia define como Un receptor-transmisor asíncrono universal es un dispositivo de hardware informático para la comunicación en serie asíncrona en el que el formato de datos y las velocidades de transmisión son configurables.
Justme, quizás se refiere a una conexión en serie, que puede ser sobre un UART o también sobre software.
El UART a nivel de hardware es un sistema que serializará datos y los enviará bit por bit en una línea. Por sí mismo, no implementa ningún protocolo, ni hardware ni software, y puede usarse con transceptores y protocolos para generar buses como RS232, RS485, MODBUS, DMX, etc.
UART se usa a menudo para crear esos buses para luego comunicarse entre diferentes sistemas. A veces también se usa para comunicarse con módulos de hardware, como suele ser el caso de los módulos Bluetooth.
UART envía datos sin una línea de reloj y requiere que los dispositivos tengan la misma velocidad en baudios, lo que requiere configuración en ambos lados y también requiere un oscilador (reloj de algún tipo).
UART no tiene un lado esclavo/maestro, pero se puede implementar en el software.
SPI (Interfaz periférica en serie) en sí mismo también es una implementación de hardware y no contiene protocolo de software. Tiene un conjunto de reglas, como las líneas de datos, una línea de habilitación y un reloj como mínimo.
También considera que hay un maestro y un esclavo, el maestro controla el reloj y la línea de habilitación.
SPI no tiene reglas para el nivel lógico de las líneas, por lo que algunos chips pueden usar diferentes niveles lógicos.
El formato de datos enviado a través de SPI tampoco se especifica y lo implementa el software según con qué se está comunicando.
SPI generalmente se usa dentro de una PCB para comunicarse con otros circuitos integrados.
Debido a que el SPI tiene una línea de reloj, no hay necesidad de configuración en el lado del esclavo, lo que también significa que el esclavo no necesita tener un oscilador.
También hay algunos buses que se basan en SPI que define más reglas como SPI_RX o alguna otra que depende del fabricante.
SPI se utiliza principalmente para la comunicación entre chips dentro de una PCB.
UART se usa principalmente para la comunicación a través de cables, pero a veces también con algunos módulos dentro de una PCB.
Podría decirse que SPI y UART por sí solos tienen velocidades similares. Uart generalmente opera a una velocidad más lenta porque se usa en distancias más largas y debido a las tolerancias de frecuencia del oscilador, mientras que SPI no depende de la sincronización del reloj.
UART nació en los años 70 mientras que SPI en los 90.
Tanto las interfaces UART como SPI tienen una gran cantidad de transistores CMOS en su interior, por lo que son interfaces de hardware. La totalidad de estos transistores CMOS se denomina "controlador de hardware".
UART tiene 2 pines: TX, RX
SPI tiene 4 pines: TX, RX, CLOCK, ENABLE
Ambos transmiten y reciben un byte a la vez, es decir, uno tras otro.
SPI es mucho más rápido que UART porque los bits se escriben y leen en el borde ascendente o descendente de la señal CLOCK. Aceleras el ritmo del reloj, aceleras las comunicaciones.
UART no tiene soporte de reloj, por lo tanto, el dispositivo receptor debe generar una señal de reloj local que no puede estar sincronizada con la transmisora. Eso significa que la frecuencia del reloj no puede ser demasiado alta y las comunicaciones son bastante lentas.
Para responder tu pregunta:
Un protocolo, en informática es un conjunto de reglas.
El hardware en electrónica es un conjunto de transistores, diodos, resistencias, etc., interconectados entre sí.
El hardware está diseñado para ejecutar protocolos.
Arsenal
mattman944
mitu raj
eliot alderson
Sólo yo
Arsenal