Estoy diseñando una alarma para despertarme por la mañana. El sistema está compuesto por 3 subsistemas:
- (S1) Gestión de siete segmentos RGB. Compuesto por 5 µC, uno para cada dígito y otro para ":". El alto número de µC se debe al hecho de que no uso IC para LED RGB, solo transistores.
- (S2) Sensor y gestión de entrada. Un µC que gestiona el sensor de distancia para configurar la alarma y la hora actual; e interruptores para la configuración.
- (S3) Archivo de comunicación y audio. Un µC que se comunica con un módulo bluetooth en UART para proyectos posteriores, obtuvo un cristal RTC para tener un reloj preciso y administrar la reproducción de audio. (Todavía no trabajé en el audio)
Durante la ejecución normal, S2 lee la entrada y la envía a S3 para su procesamiento. luego S3 envía a S1 lo que tiene que mostrar.
Quiero que todos estos subsistemas se comuniquen juntos, luego elijo usar el bus I2C. Pero aquí viene mi pregunta:
- ¿Qué µC tiene que ser el maestro?
En primer lugar, S3 es el centro del sistema pero, por otro lado, S2 puede enviar más mensajes que S3. Por eso estoy indeciso sobre quién será el amo / esclavo.
- ¿Existe una regla para determinar quién será esclavo / maestro? ¿Qué pregunta debo hacerme para tomar una buena decisión? (en general, no para este sistema específico)
Respuestas:
Si. Solo un maestro I 2 C puede iniciar una transmisión. Un esclavo I 2 C no puede decirle algo, hasta que el maestro lo sondee a continuación (a menos que agregue señales de interrupción adicionales, lo que aumenta la complejidad general del sistema).
Ignorando la característica (raramente utilizada) para que un dispositivo cambie entre ser maestro y esclavo, esto significa que el maestro I 2 C debe tener suficiente conocimiento del sistema general , para saber cómo comunicarse con todos los I 2 C esclavos en ese autobús.
Piense qué MCU en su sistema sabe:
Independientemente de qué MCU va a ser el maestro I 2 C, debe diseñar la arquitectura general del sistema y considerar qué comandos deben enviarse a cada dispositivo y con qué rapidez deben recibirse las respuestas. Intente diseñar un sistema que tenga un "maestro" obvio y que conozca todo el estado del sistema, y probablemente también sea el dispositivo maestro I 2 C.
Tu dijiste:
No está claro que "S2" es el envío de mensajes a . ¿Necesita enviar mensajes activamente a alguien ? ¿O "S2" puede ser sondeado por "S3" como maestro I 2 C, para recibir la información del sensor y el interruptor que "S2" recopila? Si "S2" puede ser sondeado por "S3", entonces, sobre la base de la descripción, parece claro que MCU "S3" podría ser el maestro I 2 C.
Soy cauteloso al agregar otro MCU (llamémoslo "S10") para ser el maestro I 2 C. Esto se debe a que parece que una MCU "S10" necesitaría realizar muchas encuestas, solo para reunir el conocimiento general del estado del sistema que ya es todo (?) Conocido por "S3". Eso parece una duplicación innecesaria.
Por lo tanto, a menos que "S3" no pueda hacer el trabajo debido a que alcanza sus límites de espacio RAM, espacio Flash o ciclos de CPU, etc., puede ser menos complicado hacer que "S3" controle el sistema convirtiéndolo en maestro I 2 C, en lugar de agregar un controlador adicional "S10".
Por otro lado, si no le importa la complejidad adicional, agregar un controlador "S10" general aumenta la modularidad (segmentación) del sistema, ya que "S3" solo hace Bluetooth y audio, nada más. Esto podría permitir una flexibilidad adicional para agregar nuevas características (imprevistas) / MCU adicionales en el futuro, sin necesidad de cambiar el código en "S3".
fuente
S1 debería ser un esclavo I 2 C. S2 o S3 serían una elección sensata para un maestro. Pero eso es solo reafirmar lo que se ha mencionado en la pregunta original.
A menudo, el MCU que se ocupa de la mayor variedad de entradas es un buen candidato para un maestro. En su caso, es el S2 (una variedad de botones de usuario, RTC) o el S3 (una variedad de comandos del Bluetooth). Si no puede decidir cuál, entonces podría obtener un controlador más grande y poner ambas funcionalidades S2 y S3 en una MCU. Este enfoque puede darle más flexibilidad.
fuente
Cada microcontrolador en su sistema puede ser el maestro. Sin embargo, algunos de ellos se adaptan más a esta función. Como han dicho otras personas, el microcontrolador con más información debería ser el Maestro.
fuente