¿Cuáles son algunas preocupaciones de diseño para la comunicación SPI fuera de placa?

8

Visión general:

Me estoy comunicando entre 3 placas de pcb personalizadas con dspic33 en ellas usando SPI. Tengo un maestro y 2 esclavos, pero les envío los mismos datos a ambos esclavos (y les dejo elegir a qué prestarles atención).

Configuración de hardware:

Los dos esclavos han incorporado controladores de motor BLDC y el Maestro está controlando estos controladores de motor a través de SPI. Los cables se ejecutan aproximadamente a 3 pies del maestro a cada esclavo y los encabezados son típicos encabezados SAMTECH de paso de paso de 1 ". Cada controlador de motor tiene su propio regulador de 3.3 voltios que ejecuta la electrónica dsPIC / LV. Yo uso un regulador de controlador de motor (vamos a llamarlo A) para alimentar también el DSPIC maestro SPI. Para el otro controlador de motor (vamos a llamarlo B), simplemente ejecuto las líneas SPI y tierra desde el maestro. El SPI clk está funcionando a 100KHz

Llegando al punto (Finalmente):

Sin motores funcionando, todo funciona bien, todos los datos llegan como se esperaba a ambos esclavos. Sin embargo, cuando enciendo los motores, Bslave ya no obtiene los datos correctos. Él está recogiendo relojes adicionales o dejándolos caer, supongo que lo haré con el ruido extra. En cualquier caso, sus sumas de verificación comienzan a fallar. Aslave funciona como un campeón pase lo que pase.

1) ¿Esperaría que todos estos dispositivos necesiten funcionar con la misma fuente de 3.3 voltios? Si es así, ¿puedes convencerme hablando sobre el ciclo de inductancia más largo y la magia negra como esa?

2) ¿Tiene algún tipo de regla general en cuanto a qué tan rápido puedo esperar poder ejecutar el SPI clk y tener éxito con una configuración de hardware como la anterior?

Mate
fuente
Se necesita simulación para estimar qué tan rápido podrá funcionar el reloj. Suponiendo que tiene tablas de capas dobles o simples, una buena regla general es enrutar una traza de tierra o un plano de cobre de tierra (en la capa opuesta) debajo o adyacente a las líneas SPI para disminuir el ruido acoplado a las trazas.
Steinar

Respuestas:

5

Ejecuté SPI (reloj de 2MHz) a unos 5 m de una caja a otra y no dudé en diseñar el reloj y los datos para una salida balanceada. El cable (personalizado) entre los dos también usaba par trenzado y pantalla tanto en datos como en reloj.

También envié energía aislada a la caja remota a través de convertidores de CC a CC. No tuve tiempo suficiente para equivocarme, así que posiblemente mi solución fue una exageración, pero bueno, funcionó. Mi razonamiento detrás de esta decisión es que no quería que los picos de "consumo actual" cayeran por las pantallas del par trenzado. Los screenes no estaban conectados a tierra en el extremo de envío de la PC. Trate las señales digitales como señales analógicas preciosas para obtener el mejor rendimiento: siempre tenga su pantalla terminada en el extremo receptor y si debe (por cualquier razón) terminar a regañadientes (también) en el extremo de envío.

Fue para transmitir 128 canales de señales analógicas de baja velocidad a una caja de conexiones desde una PC. Sospecho que si lo necesitara podría operar esto a 20MHz de reloj.

Andy alias
fuente
Cuando dice "pantalla", ¿quiere decir "blindaje" cuando se refiere al cable personalizado?
JYelton
1
@JYelton en el Reino Unido se llama pantalla. ¿En que país estas?
Andy alias el
Estoy en EE.UU. Uno de mis mejores amigos es británico, por lo que a menudo tenemos discusiones inusuales sobre la elección de palabras. :) Para mí, una "pantalla" es una pantalla o monitor, o la tela de malla que mantiene las moscas fuera de la casa cuando la ventana está abierta.
JYelton el
@JYelton. Ajá un paño de malla que mantiene las cosas fuera. A mí me parece una pantalla LOL
Andy también conocido como
Elegido como respuesta porque es la única respuesta donde se abordaron 1) y 2). Aunque, como muchos sugirieron, si tuviera que rediseñar la placa, probablemente solo cambiaría los protocolos en lugar de pasar a una señal diferencial. Sin embargo, creo que esto funcionaría. En este caso, solo estoy usando SPI porque estaba disponible en mi prototipo.
Matt
5

SPI no es diferente a cualquier otra interfaz eléctrica. Preste atención a los problemas habituales de integridad de señal (blindaje, área de bucle, impedancia, terminación de señal, etc.) y puede ejecutarlo a una distancia razonable. La distancia razonable depende de lo que esté haciendo con ella y de qué tan bien pueda controlar los diversos factores.

¿Puedes correrlo 3 pies? Ciertamente. Deberías? Bueno, hay mejores cosas para usar. Como otros han señalado, hay RS-4xx que podría funcionar bien. También puede ejecutar SPI, pero use la señalización diferencial a través del cable como RS-4xx. Esto usará más cables, pero esos son los descansos. También puede hacer RS-485 normal, usando un UART y similares.

Personalmente, ejecuté SPI sobre cables de 1 pie, dentro de un chasis, a velocidades de hasta 32 MHz sin problemas. También ejecuté I2C a más de 4 pies a 100 KHz en un entorno de alto EMI y SPI es mucho mejor que I2C, por lo que se puede hacer. Pero si no presta atención a los detalles, puede encontrarse fácilmente con problemas. Pero, sinceramente, debe prestar atención a los detalles independientemente de lo que use.


fuente
Muchas interfaces como RS232 son relativamente inmunes a cosas como timbres y sobreimpulso, siempre que dichos efectos resultantes de una transición de línea se resuelvan dentro de medio tiempo. Incluso si una línea no puede soportar altas velocidades en baudios, ayudar a reducir la velocidad en baudios. Por el contrario, si cosas como el timbre causan problemas con SPI a cualquier velocidad, reducir la velocidad puede no ayudar a menos que uno pueda reducir la pendiente de las transiciones de línea.
supercat
Esta es una buena respuesta, especialmente la cantidad de sistemas que ha implementado. Creo que probaré resistencias en serie en el lado del conductor para ver si eso ayuda. Sin embargo, me temo que el ruido está causando relojes adicionales ... así que en ese caso puede que no ayude.
Matt
5

Considere cuidadosamente su esquema de conexión a tierra. Proteja las líneas de datos, si es útil, y conecte a tierra el escudo correctamente. No ejecute datos y reloj en el mismo par trenzado. Use aislamiento galvánico si es necesario. Aparte de eso, no hay reglas generales que yo sepa.

SPI fue diseñado para (1) comunicación de corto alcance, generalmente dentro de una PCB y (2) en el entorno con poca EMI. Quizás, los únicos autobuses que funcionan peor que SPI en presencia de EMI son I 2 C y 1 cable. Hay buses, que fueron diseñados para comunicación de largo alcance en presencia de EMI (RS-485, CAN, Ethernet).

Es posible extender y fortalecer el SPI. Aquí hay una nota de aplicación , que muestra un bus SPI con líneas diferenciales.

Nick Alexeev
fuente
Intentaré proteger las líneas. Con respecto al aislamiento galvánico, cuando no conecto las bases, el dispositivo esclavo nunca registra ninguno de los relojes enviados por el maestro.
Matt
1

Hay algunas formas de minimizar los efectos del ruido en las líneas de señal. La forma más fácil es enrutar un plano de cobre o un rastro de cobre adyacente a los rastros de señal. Esto minimiza la inductancia de las trazas y el área del bucle.

A alta frecuencia, a las corrientes de retorno les gusta correr un camino de menor impedancia adyacente a las líneas de señal. Supongo que tiene una conexión a tierra común entre sus circuitos, pero esto puede estar causando problemas para la señalización de alta frecuencia si su conexión a tierra común es simplemente una conexión a tierra de "potencia" entre los circuitos. Causará un área de bucle muy grande para las corrientes de señal que puede permitir una gran cantidad de inyección de ruido debido al acoplamiento magnético disperso.

Si puede, conecte una conexión a tierra adicional entre las tierras adyacentes a las líneas de señal SPI, además de mantener un plano de tierra de cobre o un trazado enrutado adyacente a las líneas dentro de las placas también. Puede hacer una gran diferencia en la susceptibilidad de su circuito a los motores.

Steinar
fuente
No entiendo la frase "entre los terrenos adyacentes a las líneas de señal SPI". Específicamente, la palabra adyacente no me queda clara.
Matt