Cómo usar protocolos SPI con 2 pines solo en lugar de 4

Para responderla, debe comprender por qué existen esas 4 líneas (o 5) y un poco de conceptos de bajo nivel.

SPI es un protocolo síncrono, por lo que 1 pin debe ser un reloj.

Hay 2 bits de datos unidireccionales MOSI y MOSI, una selección de chip y una solicitud de interrupción (IRQ)

El IRQ se puede ahorrar si va a utilizar el sondeo en su lugar.

La CPU es necesaria para el maestro de muchos esclavos y no hay necesidad si solo hay uno.

Así que tenemos 3, para llegar a 2 tendrá que usar solo 1 línea para los datos.

Si su comunicación es unidireccional, es fácil. Si no es así y puede manejar la comunicación half duplex (en un momento dado solo uno envía información, puede conectar el MOSI y el MISO juntos. Esto se puede hacer porque las salidas de datos SPI están en tri-estado cuando no están en uso.

Espero que hayas pasado la entrevista y si no, buena suerte la próxima vez.

Si solo necesita escribir datos, solo necesita SCK y MOSI en la mayoría de los casos.

Probé esto en una pantalla LCD SPI que tengo. Até CS alto, y todavía funcionó.

Analog Devices tiene una interfaz de 2 cables llamada Serial Port Interface (SPI). No es lo mismo que la Interfaz periférica en serie (SPI), pero aún necesitará un pin CS adicional.

http://www.analog.com/static/imp

Es importante saber que cada tipo de dispositivo SPI tiene diferentes necesidades. Por lo tanto, debería haberle preguntado al entrevistador sobre el dispositivo con el que desea comunicarse o qué tipo de dispositivo. Si soy el entrevistador, me gustaría obtener esa respuesta, muestra que usted sabe que no todos los dispositivos SPI son iguales.

Como ejemplo, tengo una pantalla que utilicé a veces en productos que diseñé. Tiene un puerto SPI. Ese protocolo SPI de visualización acepta que la línea CS permanezca activada todo el tiempo. Por lo tanto, nunca conecto el CS al microcontrolador, permanece afirmado en el hardware. En esa pantalla, solo necesita leer si desea leer alguna parte (o la totalidad de) la memoria de la pantalla. Nunca lo necesito, sé lo que hay en la memoria, ¡porque escribí todos los datos en él! Entonces, nunca conecto el MISO al microcontrolador. Bingo, solo necesito CLK y MOSI, dos líneas. Pero ese es el caso de esa pantalla.

Digamos que el dispositivo es una memoria flash. Por lo general, en una memoria, escribirás cosas en él y leerás cosas de él. En ese caso, absolutamente necesita las líneas MISO y MOSI. Esas líneas están en tres estados solo cuando la CS se desasiste, cada vez que se afirma, se convierten en salidas. Por lo tanto, no puede conectarlos, como alguien sugirió, no funcionará. La memoria flash también necesita la línea CS, se usa para indicar el inicio de un bloque de comandos y el final de la misma. Absolutamente necesitas CS también. Por lo tanto, necesitará 4 líneas para comunicarse con él, pase lo que pase. ¿Juego terminado? No. Si es absolutamente necesario usar solo dos líneas, sugeriría usar un expansor de E / S I2C. Algunos dispositivos tienen, por ejemplo, 8 líneas de entrada y 8 líneas de salida. Puede usar tres de las salidas para actuar como MOSI, CLK y CS, y una entrada para actuar como MISO. Y haga todo el protocolo SPI mediante bit banging, encapsulado en I2C. Es una solución horrible, es confusa, lenta, costosa, exige mucho código … pero hace el trabajo. Si soy el entrevistador, me gustaría obtener esa respuesta también.

SPI es un protocolo dúplex, sin embargo, si desea tener una comunicación unidireccional, es posible lograrlo con 2 pines.

La línea CLOCK y la línea MOSI se pueden usar para seguir enviando datos al esclavo. Aquí se supone que el pin CS (Chip Select) del Slave está permanentemente activado en el hardware.

En el escenario de 2 pines, una línea debe ser la línea CLOCK y la otra puede ser la línea MOSI o MISO, es decir, una transferencia de datos maestro a esclavo o una transferencia de datos esclavo a maestro. Entonces, SPI puede usarse para comunicarse entre maestro y esclavo, pero solo podemos enviar o recibir datos.

Puede usar dos pines si es solo de envío o solo de recepción, y solo hay un dispositivo SPI en el bus, por lo que no necesita una selección de chip. Siempre necesita un reloj, pero puede escapar con solo una línea de datos: enviar o recibir.