límite SPI de Arduino

5

¿Hay un límite para la cantidad de esclavos que puedes controlar con una placa Arduino usando el bus SPI siempre que no te quedes sin pines?

Uno, por ejemplo, tiene 14 E / S digitales. Entonces, en teoría, podría tener 11 esclavos si quisiera, ya que MISO, MOSI y SCLK serán compartidos y habría 11 pines CS diferentes. Me preguntaba si alguien se encontraría con algún problema práctico mucho antes de controlar a 11 esclavos. (Aunque no usaré MISO)

Planeo controlar seis DAC de 12 bits para un proyecto usando UNO usando el bus SPI. ¿Hay algo que deba tener en cuenta?

    
pregunta Ender Wiggins

2 respuestas

7

El número de esclavos SPI no está limitado. De hecho, puede agregar muxes digitales (multiplexores) y controlar más dispositivos esclavos de los que tiene pines digitales en el Arduino.

Sin embargo, el SPI fue diseñado para la comunicación en distancias cortas dentro de una caja. Por lo tanto, el tamaño físico del bus puede convertirse en un problema (capacitancia del bus, EMI). Si tiene que hacer un SPI reforzado de larga distancia, hay notas de aplicación sobre el tema: Ampliación del bus SPI para la comunicación a larga distancia .

    
respondido por el Nick Alexeev
4

¿Qué tan rápido quieres correr? En términos del protocolo, no, siempre que tenga suficientes pines IO para alternar las selecciones individuales de esclavos. Incluso entonces, podría ir con un esquema elegante como un decodificador 3-8 y tener incluso más líneas de selección de chip (8) basadas en la combinación de las líneas de entrada (3).

El único problema que puedo pensar aquí podría ser el fanout, es decir, cuando tienes muchos dispositivos conectados a una salida (pin de MOSI en este caso). Es posible que cada dispositivo esclavo adicional conectado pueda contribuir a una carga capacitiva menor, tal vez lo suficiente podría tener algún efecto algo . No soy un experto aquí, pero podría justificar una investigación si estamos hablando de verdaderos extremos aquí (¿docenas o cientos de dispositivos ...?)

    
respondido por el Jon L

Lea otras preguntas en las etiquetas