Comunicación de corta distancia entre placa y placa

22

Mi MCU ejecuta un bus SPI con aproximadamente 4 dispositivos. También me gustaría extender este bus para que descienda, es decir, hacer que algunos PCB se conecten a la placa "principal" y amplíen la funcionalidad. La distancia de "pad to pad" sería:

longitud de traza de la placa principal + longitud del cable + longitud de traza en la placa que se extiende

3 "+ 6" + 3 "= aproximadamente 12"

En mi experiencia, incluso una señal de 1 MHz, con aproximadamente 7 ns de tiempo de subida, sobre esta distancia a través de un cable de cinta superaba en 1 V (pero no hubo un timbre excesivo). Los tableros serán alimentados por la misma fuente de alimentación.

Nota: aquí no se pueden ver los tiempos de subida, pero sí se puede ver un exceso de sobrecarga: se trata de una señal de 3.3V. Y sí, esto se midió correctamente con un cable muy corto desde la sonda a tierra. Al igual que a menudo se recomienda en este sitio. No creo que sea un error de medición.

Me gustaría que el sistema funcione a 4 MHz, pero 2 MHz también es aceptable. El máximo. la cantidad de placas que me gustaría conectar sería aproximadamente 4 y esto extendería el bus SPI para tener aproximadamente 12 dispositivos. No creo que esto sea demasiado difícil de administrar a través del código, ya que tengo algo que funciona de esta manera. Tener las líneas de selección de esclavos adicionales tampoco es un problema.

Sin embargo, mi preocupación es cómo enviar los datos SPI de una placa a otra. ¿Debo enviar SPI directo o convertirlo a LVDS en un extremo y luego volver a convertirlo en SPI en el otro extremo?

    
pregunta Saad

4 respuestas

15

La regla de oro dice que tiene que calcular los efectos de la línea de transmisión si la longitud de su conexión es más larga que la décima parte de la longitud de onda de la señal.

Laslíneasdetransmisióncausaránreflexionesenlasquemuestranuncambiorepentinoenlaimpedancia.Laseñalreflejadaseagregaaloriginal,puedereflejarsenuevamenteenelladodeltransmisor,ydeesamanerairyvenir.Elresultadosemuestraenelgráfico:elrebasamientodelqueestáshablandoyalgodetimbre.

Uncablede12"(30 cm) es 1/10 de una longitud de onda de 3 m, o 100MHz. 1MHz, e incluso 4MHz no deberían dar muchos problemas aquí. Terminar la línea, como dice Wouter, podría ser una primera medida. Sin embargo, la entrada es probablemente de alta impedancia, y eso nunca es una buena coincidencia. Ya que tiene tres piezas diferentes en su conexión (PCB, cable, PCB), será difícil encontrar la impedancia característica (también será diferente para la PCB y el cable, por lo que a frecuencias muy altas también obtendría reflexiones en las conexiones del cable.) Dada la corta longitud y la baja frecuencia, el valor de su resistencia de terminación no es crítico. 100 \ $ \ Omega \ $ puede ser demasiado bajo para el microcontrolador, la mayoría de ellos no puede suministrar 33mA (o incluso 50mA, a 5V). Para empezar, probaría con una resistencia de 1k \ $ \ Omega \ $ y veré hasta dónde nos lleva eso.

editar (actualización de la pregunta)
El tiempo de subida parece ser 7ns. Eso es rápido, como dice Kortuk, significa que tiene un espectro de al menos 400 MHz, y esos armónicos sufrirán los efectos de la línea de transmisión, incluso si su reloj es de solo 1 MHz. Intente filtrarlos, un ancho de banda de 20MHz (80MHz para el reloj de 4MHz) le da tiempo de subida más que suficiente. Esta es una onda cuadrada de 1MHz filtrada con una pared de ladrillo LPF a 20MHz:

La colocación de una resistencia en serie formará un LPF de primer orden con la capacitancia de la línea. Si estimamos que a 50pF entonces

\ $ R = \ dfrac {1} {2 \ pi \ cdot 100 MHz \ cdot 50 pF} = 32 \ Omega \ $

te da una frecuencia de corte de 100MHz. Por lo tanto, una resistencia de la serie 33 \ $ \ Omega \ $ debería disminuir su tiempo de subida, pero dejar más que suficiente para tener una buena señal a 4MHz.

    
respondido por el stevenvh
6

Para un autobús tan corto, intentaría poner una pequeña resistencia en serie con cualquier cosa que conduzca una línea. Esa no es la manera ideal teórica de tomar en cuenta la teoría de la línea de transmisión, sino un enfoque pragmático que creo que funcionará lo suficientemente bien para su caso. Prueba 47 Ω para empezar y mira lo que hace. Si eso ayuda, pero no lo suficiente, puedes ir más alto pero no excederé los 120. Es probable que en algún lugar de ese rango encuentre un valor que funcione lo suficientemente bien.

    
respondido por el Olin Lathrop
4

AFAIK se puede eliminar el rebasamiento mediante una terminación adecuada, si su conductor puede conducir la carga. De lo contrario, un par dedicado de controlador / receptor como LVDS o tal vez incluso RS485 seguramente funcionará.

    
respondido por el Wouter van Ooijen
1

He tenido serios problemas en el pasado al ejecutar SPI sobre cables de cinta, aunque son mucho más largos de lo que describe. La inmunidad al ruido se convirtió en un problema real, y los comandos corruptos terminaron llegando a mis periféricos. Fue suficiente para fallar las pruebas de inmunidad al ruido CE. Si se encuentra con problemas en este sentido más adelante, recomendaría colocar una MCU en cada placa y conectarlas a través de CANbus.

    
respondido por el Stephen Collings

Lea otras preguntas en las etiquetas