Arduino, la mejor manera de hablar con múltiples dispositivos SPI (controladores de LED)

2

(esto es más diseño de hardware, en lugar de pregunta de software).

Hola a todos. Planeo construir un escudo (placa) Arduino con varios controladores LED (TLC5941). Son accesibles a través de SPI. El problema es que los cables de comunicación SPI pueden llegar a ser demasiado largos y causar interferencias en la señal.

Adivinar mi placa debería tener otro controlador barato para hablar tanto con Arduino como con los LED; Entonces, la pregunta para todos los profesionales de Arduino con experiencia aquí es:

¿es inteligente conectar periféricos (SPI) usando un controlador barato como caché? (Al menos de esta manera, me permite enviar solo valores modificados desde Arduino = > código menor) ¿O el bus SPI es suficientemente resistente a las interferencias (al menos si la placa está diseñada correctamente)?

    
pregunta

2 respuestas

8

Define "long". Cuando dices "escudo", estoy pensando en algo que puede conectarse directamente al Arduino, por lo que la ruta de la señal es de 3 a 5 pulgadas. Los AVR / Arduinos tendrán un problema con no para comunicarse a esa distancia (a menos que intentes realmente causar uno); incluso una distancia de 2-3 metros debería estar bien hasta unos pocos MHz.

Específicamente para SPI, ya que está completamente controlado por un maestro, la única forma de que pueda tener problemas es cuando recibe del esclavo, solo si el borde del reloj tardó tanto en llegar al esclavo, cuando se envió el siguiente bit , el maestro ya estaba esperando el siguiente bit. El límite teórico duro impuesto por el TLC5941 sería de 10 metros de longitud total cuando se ejecuta a 30 MHz (c / 30 MHz).

Los arduinos normalmente no se ejecutan tan rápido de todos modos, por lo que es posible que puedas alcanzar hasta 5 metros en el estándar de Arduino de 16 MHz si se termina con algunas resistencias. Si no necesitas velocidad extrema y puedes correr a 100-500 kHz, probablemente puedas cruzar un campo de fútbol con un cable decente.

Los efectos de interferencia de EM deberían ser extremos para interferir con una señal de 0-5V. A menos que lo estés ejecutando dentro de un microondas, fuggedaboutit. SPI no es LVDS.

Por su facilidad de uso y simplicidad, los controladores I2C pueden ser el camino a seguir (por ejemplo, NXP PCA9635 ). I2C solo usa 2 líneas (reloj y datos), en comparación con 3 + 1 por esclavo para SPI. Serán más lentos que los controladores SPI, pero a menos que esté intentando actualizar una matriz de 64 LED a 60 Hz (o similar), debería estar bien.

    
respondido por el Nick T
1

La biblioteca FastSPI puede ser útil para usted (más información sobre blog del autor .)

  

Esta biblioteca tiene como objetivo proporcionar una interfaz eficiente y de alto rendimiento para varios controladores led. Permitirá a los desarrolladores elegir los criterios de rendimiento que sean importantes para ellos (uso máximo de la CPU, número de niveles de color, velocidades de actualización) y calibrar en consecuencia, y dentro de lo razonable (¡hay límites de recursos en un entorno de 16 MHz!).

     

Soporte inicial:

     
  • 595 registros de cambios de estilo - enlace
  •   
  • tiras led basadas en hl1606 - enlace
  •   
  • píxeles basados en lpd6803 - enlace
  •   
  • tiras led basadas en tm1809
  •   
  • tiras de led y píxeles basados en ws2801
  •   
    
respondido por el Robert Atkins

Lea otras preguntas en las etiquetas