Diseño de sistema para múltiples esclavos SPI e I2C

3

Estoy diseñando un sistema que tiene 2 esclavos SPI y 3 esclavos I2C. El maestro para toda la comunicación es STM32F429 , que tiene 6 periféricos SPI y 3 I2C. Creo que tengo dos opciones: 1) usar un periférico diferente para cada dispositivo esclavo (5 periféricos en total), lo llamaremos SEPARAR o 2) usar un SPI para ambos esclavos SPI y un I2C para los 3 esclavos I2C (2 periféricos en total), lo llamaremos COMBINADO .

Mi pregunta es:

¿Cuáles son las ventajas y desventajas de usar SEPARATE vs COMBINED?

  • Pro COMBINADO: el enrutamiento para COMBINADO es más simple porque las líneas compartidas no es necesario que todos vuelvan al micro.
  • Pro COMBINADO: Se requerirán resistencias de extracción adicionales para SEPARAR para cada bus I2C.
  • Pro SEPARATE: si uso el DMA, puedo iniciar cada transferencia simultáneamente sin tener que tomar el tiempo de CPU, y realizar operaciones de CPU una vez que todos los datos llegan (¿es cierto?)
  • Pro SEPARADO: cualquier dispositivo I2C que sea más lento no retendrá a los otros esclavos I2C ya que están en buses separados.
  • ¿Qué otros pros / contras hay?
pregunta svUser

2 respuestas

1

Ha cubierto bastante bien los problemas 'eléctricos' y 'estado terminado'.

Sin embargo, piense en el proceso de creación, depuración y prueba del sistema.

Las ventajas potenciales de SEPARAR parecen ser bastante convincentes:

  • Cualquier problema eléctrico o error solo debería afectar a un dispositivo
  • El software para cada dispositivo esclavo debe ser independiente, por lo que las pruebas partes del sistema incompleto deberían ser más fáciles debido a esto
  • Es posible que los dispositivos necesiten configuraciones I2C (y quizás SPI) ligeramente diferentes. Por ejemplo, los datos y el reloj pueden estar en diferentes fases, o peor, puede usar la misma dirección I2C.
  • Finalmente, sería relativamente fácil combinar esclavos en un lugar común. periférico, una vez que todo está funcionando, pero obteniendo todo el sistema trabajar será más difícil en las interfaces periféricas compartidas.
respondido por el gbulmer
0

Pro combinado (más o menos) : lo que veo que falta es la capacidad de los periféricos. No todos los periféricos tienen las mismas capacidades, aunque estén nombrados en el mismo esquema.

SPI1, SPI4, SPI5 y SPI6 pueden comunicarse hasta 45 Mbit / s, mientras que SPI2 y SPI3 solo pueden comunicarse a 22.5 Mbit / s.

Si bien esto es solo una pequeña limitación de este microcontrolador, podría ser más grave en otro diferente.

Pro separado: Otro punto para SPI es el pin de selección de esclavos controlado por hardware que solo funciona para un pin, por lo que, en el caso de varios esclavos, debe configurar esto por software que ralentiza las transferencias. . (Esto también podría ser diferente para otros controladores).

Para algunos esclavos, tienes que implementar el pin de selección de esclavos en el software de todos modos (requisitos de tiempo especiales) para que esto no sea un profesional en todos los casos.

Pro combinado: Un punto que usted menciona no explícitamente son los pines menos necesarios en el microcontrolador que podrían llevar a un paquete de menor tamaño cuando se usa un único periférico.

Compromiso: DMA es un recurso limitado, tiene 16 flujos en total disponibles y no se pueden usar todos los flujos para cada periférico. Consulte el manual de referencia (página 309) . No he analizado si todos los SPI e I2C se pueden usar al mismo tiempo, pero con 2 SPI y 3 I2C debería ser posible obtener un flujo de DMA para cada uno de ellos (necesita 10 si desea que se realicen RX y TX) por DMA). Su profesional debería ser válido pero podría ser un problema si necesita más transmisiones de DMA y el conflicto de canales.

Pro separado: Me encontré con un dispositivo I2C defectuoso que se comportaría de forma muy extraña si se dirigiera a otro dispositivo en el mismo bus. Para usarlo, tenía que estar solo en un "bus" I2C separado. . Por lo tanto, esto podría volver a ocurrir y colocar cada uno en un periférico evitará que surjan esos problemas.

El rendimiento de EMI también podría ser mejor, ya que una dirección con formato incorrecto se ignorará si solo hay un dispositivo conectado a un bus.

    
respondido por el Arsenal

Lea otras preguntas en las etiquetas