Motivos para varios módulos I2C en MCU basadas en ARM

1

Estaba buscando en la guía de selección de productos NXP para microcontroladores ARM . Hay varios módulos I2C en la mayoría de las MCU ARM.

Dado que I2C es un protocolo multi-esclavo multi-maestro, ¿hay alguna ventaja clara en este enfoque?

    
pregunta Basheer

2 respuestas

7
  • Habilidad para tener múltiples buses independientes
    • Evita los conflictos de direcciones:
      • Puede tener dos dispositivos I²C idénticos con direcciones codificadas de esa manera (por ejemplo, sensores de temperatura), o;
      • si la dirección solo es variable en unos pocos bits, tenga más dispositivos que direcciones que se ajusten a estos bits.
    • Mayor rendimiento acumulado
    • No tener que esperar a que finalice una transferencia I²C para que comience la de otro bus
    • velocidades independientes
    • Tener un bus para dispositivos que sean totalmente compatibles con I²C y uno para aquellos que no admiten funciones avanzadas como alargamiento de reloj (y se confundiría)
  • Su MCU podría ser "lógicamente" un periférico en un bus y un controlador en el otro
  • Simplificación de diseño
  • Tasas más altas permitidas
  • Diferentes pull-ups para diferentes características del dispositivo
  • aislamiento de error
  • mayor eficiencia computacional
    • Configure DMA para colocar los datos de I²C de una interfaz en una región de memoria diferente a la otra
    • Tiene diferentes interrupciones para diferentes autobuses I²C
    • Tiene dos subprocesos que acceden a diferentes dispositivos I²C sin necesidad de tener acceso mutex al hardware I²C.
  • Ahorro de energía
    • Solo derribar un bus I²C pequeño con resistencias de pull-up débiles desperdicia menos energía que derribar un bus grande con resistencias fuertes
respondido por el Marcus Müller
2

Dos beneficios claros de los buses I2C independientes son el aislamiento y el rendimiento.

Un corto en un bus I2C detiene la comunicación con todos los dispositivos en ese bus. El riesgo de cortocircuito es generalmente mayor con los buses I2C que van a los conectores y fuera de la placa. Por lo tanto, múltiples controladores I2C le permiten tener uno para dispositivos integrados y otro para dispositivos externos. Si tiene varios destinos externos, un bus I2C separado para cada destino reduce las consecuencias de un cortocircuito en cualquiera de esos buses.

Igualmente, los buses largos que se ejecutan fuera del tablero serán más difíciles de mantener dentro del límite de capacitancia en una buena disposición de múltiples caídas, ya que una disposición en estrella tiende a ocurrir. Esto conduce a peores tiempos de bus alcanzables debido a las reflexiones de los apéndices de las redes. Los buses separados se pueden ejecutar a diferentes velocidades y se pueden organizar en un diseño multi-drop más lineal.

Si sus dispositivos I2C necesitan un alto rendimiento o solo una baja latencia, se necesitarán menos dispositivos por bus para lograr esto.

Podría resolver algunos de estos problemas con los CI de aislamiento de bus I2C. Pero los maestros múltiples son baratos de colocar en un solo microcontrolador y mantienen el conteo de chips hacia abajo.

    
respondido por el TonyM

Lea otras preguntas en las etiquetas