Mi MCU ejecuta un bus SPI con aproximadamente 4 dispositivos. También me gustaría extender este bus para que esté fuera de la placa, es decir, que algunas PCB se conecten a la placa "principal" y amplíen la funcionalidad. La distancia "pad a pad" sería:
traza longitud de placa principal + longitud de cable + traza longitud en la placa extensible
3 "+ 6" + 3 "= aproximadamente 12"
En mi experiencia, incluso una señal de 1 MHz, con tiempos de subida de aproximadamente 7 ns, en esta distancia a través de un cable plano superó en más de 1 V (pero no hubo un timbre excesivo). Las placas estarán alimentadas por la misma fuente de alimentación.
Nota: No puede ver los tiempos de subida aquí, pero puede ver el exceso excesivo: esta es 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 también es aceptable 2 MHz. El máximo. la cantidad de placas que me gustaría conectar sería de aproximadamente 4 y esto ampliarí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 así. Tener las líneas adicionales de selección de esclavos 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?
fuente
Respuestas:
La regla general dice que debe calcular los efectos de la línea de transmisión si la longitud de su conexión es mayor que 1/10 de la longitud de onda de la señal.
Las líneas de transmisión causarán reflejos donde mostrarán un cambio repentino en la impedancia. La señal reflejada se suma al original, puede reflejarse nuevamente en el lado del transmisor y de esa manera ir y venir. El resultado se muestra en el gráfico: el sobreimpulso del que estás hablando y algo de repique
Una longitud de cable de 12 "(30 cm) es 1/10 de una longitud de onda de 3 m, o 100 MHz. 1 MHz, e incluso 4 MHz no debería dar muchos problemas aquí. Sin embargo, terminar la línea, como dice Wouter, podría ser una primera medida. la entrada es probablemente de alta impedancia, y eso nunca es una buena combinación. Dado que tiene tres piezas diferentes en su conexión (PCB, cable, PCB), encontrar la impedancia característica será difícil. (También será diferente para la PCB y el cable, así que a frecuencias muy altas también obtendría reflejos 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 puede ser demasiado bajo para el microcontrolador, la mayoría de ellos pueden No suministre 33 mA (o incluso 50 mA, a 5 V). Yo probaría un 1kΩΩ Ω resistencia para empezar, y ver qué tan lejos nos lleva.
edit (re question update) El
tiempo de subida parece ser de 7ns. Eso es rápido, como dice Kortuk, significa que tiene un espectro de al menos 400MHz, y esos armónicos sufrirán efectos de línea de transmisión, incluso si su reloj es de solo 1MHz. Intente filtrarlos, un ancho de banda de 20MHz (80MHz para el reloj de 4MHz) le brinda un tiempo de subida más que suficiente. Esta es una onda cuadrada de 1MHz filtrada con una pared de ladrillo LPF a 20MHz:
Colocar una resistencia en serie formará un LPF de primer orden con la capacitancia de la línea. Si estimamos eso a 50pF entonces
te da una frecuencia de corte de 100MHz. Entonces, una resistencia de la serie 33 debería disminuir su tiempo de subida, pero dejar más que suficiente para tener una buena señal a 4MHz.Ω
fuente
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 forma teórica ideal de tener 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. Pruebe 47 Ω para empezar y vea qué hace eso. Si eso ayuda pero no lo suficiente, puedes ir más alto pero no excedería los 120 Ω. Lo más probable es que en algún lugar de ese rango encuentre un valor que funcione lo suficientemente bien.
fuente
AFAIK el exceso puede eliminarse mediante la terminación adecuada, si su conductor puede manejar la carga. De lo contrario, algún par de controlador / receptor dedicado como LVDS o tal vez incluso RS485 lo hará.
fuente
He tenido serios problemas en el pasado ejecutando SPI sobre cables planos, aunque son mucho más largos de lo que usted 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 la prueba de inmunidad al ruido CE. Si tiene problemas a este respecto más adelante, le recomiendo colocar un MCU separado en cada placa y conectarlos a través de CANbus.
fuente