¿Qué microcontrolador debe ser maestro / esclavo?

8

Estoy diseñando una alarma para despertarme por la mañana. El sistema está compuesto por 3 subsistemas:

  1. (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.
  2. (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.
  3. (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)
M.Ferru
fuente
14
¿Por qué está utilizando 5 microcontroladores para un reloj / alarma básico cuando ciertamente uno haría el trabajo?
Andy alias
2
Tenga otro uC para 'orquestador del sistema' que implemente el maestro I2C. Ese no es un comentario sarcástico, lo digo en serio. Le brinda una agradable separación entre periféricos y control, ya que parece no tener miedo al exceso de uC.
Neil_UK
1
@Andyaka Cada dígito tiene un color diferente (3 * 5 PWM) y cada segmento necesita en GPIO para ser activado / desactivado. Estoy usando MSP430 como µC con solo 20 pines y 4 PWM cada uno. (Tengo más de 100 de ellos, así que necesito usar el stock ^^ ')
M.Ferru
77
@Andyaka En realidad, hay otra razón. Soy un aficionado recién salido de la escuela de EE. Quiero aprender a configurar una comunicación decente entre un sistema con varios µC porque nunca hago esas cosas. Si voy por solo un µC (que por supuesto es una mejor opción) no aprenderé "nada nuevo".
M.Ferru
2
@ M.Ferru Muchas cosas impactan tales elecciones. Una preocupación es cuánta incertidumbre y riesgo de futuras "incógnitas" puedo tolerar antes de tener que "rehacer" completamente el diseño. Otro son los procesos de sincronización y cuán críticos pueden ser algunos. Por ejemplo, si necesito soportar transferencias largas con restricciones de tiempo estrictas, ese hecho solo puede complicar una interfaz de usuario que funcione bien. Pero se trata de escribir todos los detalles que conoce ahora, además de todo lo que se le ocurra y decidir la mejor manera de organizar esos detalles.
jonk

Respuestas:

7

¿Existe una regla para determinar quién será [I 2 C] esclavo / maestro?

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.

¿Qué pregunta debo hacerme para tomar una buena decisión? (en general, no para este sistema específico)

Piense qué MCU en su sistema sabe:

  • principalmente sobre el estado general del sistema y, por lo tanto, puede decidir cuándo enviar comandos I 2 C a los esclavos;
  • qué comandos I 2 C deben enviarse a cada esclavo;
  • qué datos deben recopilarse de cada esclavo I 2 C;
  • qué dispositivos I 2 C responden puramente a los comandos entrantes (esto se aplicará a sus MCU "S1"; parece claro que son los más adecuados para ser esclavos);

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:

S3 es el centro del sistema pero, por otro lado, S2 puede enviar más mensajes que S3.

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".

SamGibson
fuente
1

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.

Nick Alexeev
fuente
0

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.

Little Latch
fuente