Modos SPI de transferencia de datos

Estoy aprendiendo el protocolo SPI en comunicaciones seriales ahora. Me quedé atascado con el concepto de controles de fase y polaridad del reloj. Por qué hay 4 modos disponibles además de un único modo de transferencia universal. ¿Cuál es la razón principal para ejecutar el protocolo SPI en 4 modos?

Además, ¿por qué estos modos de transferencia no están disponibles en I2C?

Porque I2C está diseñado para ser un protocolo diferente de SPI.

Respuestas (2)

TL; DR: SPI es una interfaz física genérica que puede hacer cuatro protocolos de transmisión de bits diferentes para ser compatible con varias especificaciones de interfaz de chip, mientras que I2C es una especificación que define el protocolo de transmisión de bits y la interfaz física. Son diferentes interfaces construidas desde diferentes puntos de partida.

Tener polaridad y fase de reloj seleccionables no tiene sentido en I2C, ya que entonces no podría conectar diferentes tipos de chips al mismo bus. Los dispositivos SPI necesitan un pin de selección de chip separado para saber que se les está hablando para que puedan ignorar los pulsos del reloj o simplemente no cargar datos, lo que permite usar chips con diferentes configuraciones en el mismo bus.

La fase y la polaridad del reloj se pueden seleccionar porque los diferentes chips usan un borde diferente para cargar los datos. Inicialmente, el periférico SPI se introdujo en los MCU para simplificar la comunicación con varios chips existentes que ya tenían varias interfaces seriales diferentes: SPI literalmente significa que es solo una interfaz periférica serial para descargar la transferencia de datos del software bit-banging a un periférico de hardware orientado a bytes. .

Entonces, el periférico SPI en la MCU se hizo con todas las opciones posibles que uno podría necesitar para comunicarse fácilmente con los chips existentes. No existe una especificación o protocolo formal de un bus SPI, solo fue una herramienta útil.

A veces tiene múltiples chips en el bus y requiere diferentes configuraciones para cada chip. Y esto está bien ya que se puede cambiar la configuración de SPI.

I2C es diferente ya que se desarrolló desde cero para tener una especificación primero y luego los chips pueden diseñarse para cumplir con esta especificación, por lo que no tiene problemas de variabilidad o compatibilidad en el bus, ya que todos deben usar el protocolo definido. Y dado que I2C es un bus de drenaje abierto, y los cambios de datos solo se permiten cuando el reloj está bajo, significa que si los cambios de datos cuando el reloj está alto no deberían ocurrir normalmente, estos pueden usarse para señalar condiciones de inicio y parada que no existen en SPI.

También creo que SPI era el nombre de Motorola y, como suele ocurrir, otros proveedores de silicio se negaron a utilizar términos inventados por la competencia. Por lo tanto, otros proveedores a menudo lo llaman una especie de "serie-algo-algo" solo por el hecho de hacerlo. El prestigio prima sobre la buena ingeniería y la estandarización en todas estas empresas.
Gracias por la respuesta. He estado pensando en las razones técnicas detrás de esta función de 4 modos. Pero no pude encontrar ninguna otra razón apropiada. Si @justme encuentra alguna otra razón más apropiada, actualice esta respuesta en cualquier momento.

El concepto de cambio de datos con respecto a un reloj fue utilizado en muchos lugares por muchas personas mucho antes de que se llamara 'SPI'. Como resultado, hay tantas formas de hacerlo como formas posibles de hacerlo. Un buen hardware SPI se adapta a esto al ser programable en todos los modos posibles.

I2C fue diseñado como un protocolo particular, por lo que solo hay un protocolo.