Diríjase y comuníquese con múltiples dispositivos en una matriz

1

Tengo una gran matriz de dispositivos, "nodos", que me gustaría abordar y comunicar: asuma que > 50 nodos. Cada uno de los nodos tiene un controlador que recibe datos de un microcontrolador central y luego realiza una función.

Estaba pensando en utilizar I2C para esto, pero como los controladores serán los mismos, el número de direcciones se limita a las variaciones que el controlador puede proporcionar. ¿Hay una mejor manera de abordar y comunicarse con esta gran red de dispositivos con un cableado mínimo? Inicialmente elegí I2C ya que tiene solo 2 cables (SDA, SCL) para la funcionalidad de bus, además de alimentación y tierra.

    
pregunta Geo P

2 respuestas

1

Está describiendo efectivamente un arreglo de "maestro único, esclavo múltiple". Al trabajar con una configuración de este tipo, los dos primeros enfoques que vienen a la mente son SPI y I2C .

Personalmente, me alejo de SPI a menos que solo me preocupe un pequeño número de dispositivos esclavos (bajo número de chips), o es la única interfaz disponible. Esto se debe principalmente a que necesitará una línea dedicada de selección de esclavos para cada dispositivo esclavo, que consumirá otro pin GPIO en su MCU / CPU, o necesitará circuitos de multiplexación adicionales para guardar sus pines de repuesto. El beneficio adicional de esto es que puede "transmitir" a grupos de dispositivos al mismo tiempo (suponiendo que no le respondan) en lugar de tener que transmitir a todo el bus como lo hace con I2C.

I2C no es malo en absoluto, incluso para una gran cantidad de dispositivos. Si quieres 50 esclavos, necesitarás al menos uno de:

  1. todos sus dispositivos pueden admitir 6 bits de dirección programables (ya sea mediante la introducción de estos en los chips de antemano o mediante el uso de pines de dirección Vcc / GND)
  2. Si su MCU / CPU tiene múltiples buses I2C, puede dividir grupos de chips para compartir buses individuales, lo que le permite necesitar rangos de direcciones programables más pequeños
  3. seleccione chips para que usen rangos de direcciones I2C que no se superpongan.

Además, I2C tiene el beneficio adicional de poder manejar los desajustes de voltaje fácilmente si el maestro y los esclavos se comunican a diferentes niveles lógicos (es decir, 3.3VDC vs 5.0VDC ).

    
respondido por el DevNull
0

Puede utilizar una configuración de tipo SPI en cadena, donde la dirección del dispositivo de nodo depende de su posición en el arnés. No necesitará ninguna línea de selección de esclavo y los dispositivos de nodo no requerirán una dirección fija.

    
respondido por el barry day

Lea otras preguntas en las etiquetas