El dispositivo SPI actúa como maestro y como esclavo

0

Estamos desarrollando un dispositivo integrado que contiene 2 MCU (A y B), ambos pueden actuar como maestro o esclavo.

El dispositivo puede ejecutarse en 3 casos:

1- A + B + eeprom, A master B slave eeprom slave, no hay problema con eso.

2- A + eeprom, A como maestro eeprom esclavo, B eliminado del circuito, no hay problema con eso.

3- B + eeprom, B como maestro eeprom esclavo, aquí está el problema, B actúa como esclavo porque A control B (en el caso 1), pero ahora necesitamos que A actúe como control para controlar el eeprom, hizo Es posible combinar este tipo de pensamiento?

Gracias.

    
pregunta Nav_Dev

2 respuestas

4

No con lo que se muestra allí, no. SPI se compone de 4 señales unidireccionales y no tiene ningún protocolo para tratarlas de manera bidireccional.

Algunas sugerencias para lograr tu objetivo ...

Usted agrega dos líneas de control, una línea AtoB y una línea BtoA, entre A y B para indicar quién es el maestro del bus. Existen varios esquemas probados en el camino para manejar esto en función de si un maestro siempre decide, si ambos pueden solicitar la maestría pero uno siempre tiene prioridad, equidad basada en el tiempo y más. (No conozco su situación, así que dejará eso allí).

Puede cambiar a I2C, que es bidireccional y puede hacer lo que necesite con el software adecuado para cumplir con su esquema de prioridad. Pero se ejecuta mucho más lento que SPI, lo que puede o no ser un problema.

    
respondido por el TonyM
1

SPI es un enlace de comunicación bidireccional de alta velocidad estándar de facto, pero solo define la capa más baja del < fuerte> modelo OSI , por ejemplo, La capa física con MOSI, MISO, Sclk y SS .

Como tales, hay muchas variaciones de aplicaciones (incluida su pregunta) que incluyen niveles más altos de comunicación, intercambio de datos a doble cara, arbitraje, etc. que no forman parte del estándar SPI y dependen del firmware / software de la CPU detrás de estos chips. Lea Wiki para obtener información básica.

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas