¿La interfaz SPI es solo un protocolo o hardware real?

5

Quiero usar la interfaz SPI entre un PIC y un ENC28J60. Sin embargo, no hay pines en el PIC llamados MISO o MOSI que pueda usar para SPI.

Por lo tanto, SPI es solo un protocolo, que puedo usar con cualquier pin PIC (con solo usar cualquier pin I / O, por ejemplo, de la misma manera para comunicarme con un sensor DH22), o es hardware SPI (como UART )?

    
pregunta Makhlouf GHARBI

3 respuestas

14

SPI es un protocolo [ de facto ] estándar desarrollado por Motorola. No define ningún hardware especial, solo cómo se usan e interpretan las señales.

SPI se puede implementar utilizando un software (conocido como "Bit Banging"), o usando un hardware dedicado, a veces como parte de una interfaz "USART" (Universal Synchronous / Asynchronous Receive / Transmit).

Una implementación de hardware es invariablemente más eficiente, ya que la CPU es libre de hacer otras cosas mientras se transfiere un byte de datos SPI. Además, en los chips con DMA, todo el subsistema SPI se puede desacoplar completamente de la CPU para ejecutarse con una sobrecarga mínima absoluta.

Por cierto, la "Interfaz SPI" es un ejemplo del síndrome de RAS . SPI significa "Interfaz Periférica Serial", por lo que "Interfaz SPI" sería igual a "Interfaz Periférica Serial". Pero estoy divagando.

    
respondido por el Majenko
7

Intente buscar SCK, SDI y SDO; estos se utilizan comúnmente como nombres para los puertos de reloj, entrada y salida en algunos micros. No estoy diciendo que todos los micros tengan una interfaz SPI, pero sí muchos y se implementan (generalmente) en hardware, al igual que un UART se implementa en hardware.

Por supuesto, al igual que un UART, puedes crear un UART suave y puedes crear una interfaz SPI suave.

    
respondido por el Andy aka
3

El término "SPI" es un término sin marca registrada que describe el esquema de conexión en el que un controlador maestro envía información a un número arbitrario de dispositivos esclavos utilizando un cable de reloj común y un cable de salida de datos, así como un cable de selección por dispositivo esclavo, y recibe datos de vuelta usando un cable común de entrada de datos. Un dispositivo esclavo SPI "real" solo prestará atención a su reloj y a las entradas de datos cuando se seleccione, y hará que su salida de datos fluya de forma asíncrona cada vez que se deseleccione (permitiendo que otros dispositivos usen el mismo pin). Sin embargo, el tipo de hardware que es útil para que un procesador sirva como maestro SPI es útil no solo para hablar con dispositivos esclavos SPI "reales", sino también para muchas otras cosas.

Por ejemplo, si el maestro solo necesita hablar con un esclavo, no importará si el esclavo no hace flotar su cable de salida de datos cuando se deselecciona. Además, en muchas situaciones, no importará si un esclavo captura continuamente los datos destinados a otros dispositivos si incluye una señal que indica cuándo debe hacer algo con los datos más recientes que ha capturado. En consecuencia, es muy común usar los puertos SPI para hablar con una amplia variedad de dispositivos que usan un cable de reloj y un cable de datos, pero que de otra manera no "encajan" en el modelo de comunicaciones SPI.

    
respondido por el supercat

Lea otras preguntas en las etiquetas