Inductancia de línea de transmisión larga con SPI

Tengo una tarjeta PCI 5V GPIO que golpea SPI a través de un cable de 10 pies. El reloj SPI está funcionando a 800Khz. El cable se conecta a una placa y las líneas SPI se alimentan directamente a los SPI IC. Sé que SPI es una comunicación breve a nivel de directorio, pero no puedo cambiar nada de eso en el futuro.

Cuando miré el reloj SPI y las líneas MOSI, vi un pulso de 12 V en el borde ascendente/descendente que duró aproximadamente 40 ns. Eso me dice que hay una inductancia significativa en la línea de transmisión. No puedo cambiar nada en la tarjeta/cable PCI y no puedo ralentizar la potencia de la unidad de la línea. Intenté agregar una resistencia en serie de 100 ohmios en el lado de la placa, pero eso no tuvo ningún efecto ya que la inductancia todavía está entre la unidad y la resistencia en serie. Un filtro RC en el lado de la placa de 100 ohmios, 1nF también tuvo poco efecto.

Mi próximo paso es agregar un búfer IC que pueda manejar los picos y no pasarlos. Solo quería ver si alguien más tenía una sugerencia o podía recomendar un buen búfer IC.

Gracias.

¿Tienes algún problema específico con los picos?
@clabacchio - Debería pensar que sí. 12 V en un suministro de 5 V es un 140 % de sobreimpulso.
Peter, ¿has probado valores más altos para el RC que 100 ohm, 1 nF? A 800 kHz, puede distorsionar sus pulsos y tal vez dar errores de recepción, pero me gustaría saber cómo afecta el sobreimpulso. ¿Qué tal 1 kohm y 10 nF?
Algo es sospechoso aquí. Si acaba de tener un desajuste en la línea de transmisión, no podría tener más del 100% de sobrepaso. Sería bueno comprender la causa raíz del problema antes de intentar sugerir una respuesta. ¿Podría publicar una foto del sistema para aclarar la construcción de los tableros, cables, etc.? ¿Un rastro del osciloscopio de la señal de sobreimpulso?
¿El cable es de cinta? ¿engatusar? ¿par trenzado? ¿Cuáles son los tamaños de alambre? ¿Tiene el mismo número de cables de señal y de tierra? ¿Cuál es la disposición de la señal en relación con los cables de tierra? Cuando observó el sobreimpulso de 12 V, ¿cómo y dónde estaba probando su circuito? ¿Cuál fue la duración del sobreimpulso? ¿Hubo un subimpulso igual en los bordes descendentes? ¿Puedes publicar un esquema de tu circuito receptor?
Steven: No lo he hecho y eso es algo que estaba planeando ver a continuación, pero no creo que sea la solución final. Me sorprendió que no vi una caída notable en el pico cuando puse el RC. Me aproximé a un pico de 40 nS como igual a 25 Mhz (1/40 ns), por lo que esperaba una caída de al menos 20 dB. Ahora estoy especulando que tal vez la inductancia en la línea de retorno está mitigando el condensador. Es por eso que estaba pensando en simplemente quedarme en IC buffer/zener en las líneas. Pero eso parece una bazuca para matar una mosca que se acerca. ;)
Puede agregar resistencia y dos schottkys en el receptor. El schottky recortará el voltaje en Vcc+Vf, donde Vf es la caída de voltaje directo del diodo.
¿Cuántos circuitos integrados SPI hay en el lado de la placa? ¿Ha probado para ver si los picos están presentes en el lado PCI sin el cable/placa conectado? ¿Ha intentado simplemente usar una resistencia en serie en lugar del filtro RC? (es decir, no C) También responder a las preguntas de Photon definitivamente ayudaría a llegar al fondo de esto.
No espero que un RC más alto sea la solución, solo quiero ver qué se necesita para obtener algún efecto. (mensaje de servicio: me gusta "Steven" más que "@stevenvh", pero tendrás que escribir este último, de lo contrario no recibiré una notificación de tu comentario. No tengo que escribir "@Peter" porque tú Recibiré una notificación de todos modos, ya que es su pregunta).
@stevenvh Publicaré algunas fotos. Lo pensé anoche y tengo una solución "suficientemente buena" en este momento, pero me gustaría entender el problema subyacente.
@ThePhoton No puedo abrir el cable y no hay documentación al respecto. Supongo que es un paquete de cables de 26 AWG. Definitivamente no coaxial o de cinta.
¿Puedes tomar una foto de tu sonda de alcance conectada al circuito?
@Peter, mi primer pensamiento fue "probablemente pueda usar un amortiguador"... pero luego me di cuenta de que habías dado muy poca información y algunas cosas no eran físicas como se describe, así que no me sentí seguro al dar esa respuesta... .Para preguntas futuras, intente ayudarnos y será más probable que obtenga una buena respuesta en menos tiempo.

Respuestas (3)

Estás aplicando mal la resistencia.

El problema es que la entrada del chip receptor tiene una impedancia mayor que la impedancia característica de la línea de transmisión. Poner una resistencia en serie en el destino no ayudará mucho con el problema inicial. En su lugar, debe usar una resistencia de derivación a tierra.

Si desea utilizar una resistencia en serie, debe estar en el extremo de envío. Debido a que el controlador tiene una impedancia baja en relación con la línea de transmisión, también se obtiene una discontinuidad allí y se produce una reflexión invertida. Si coloca una resistencia en serie en el controlador que coincida con la impedancia de la línea, entonces se absorbe y elimina el timbre causado por la propagación de ida y vuelta de los reflejos invertidos que es tan evidente en su alcance.

Un caso interesante es una resistencia en serie en el controlador y una entrada de receptor de alta impedancia sin un terminador. Inicialmente, la resistencia en serie y la impedancia de línea forman un divisor de voltaje, y solo la mitad del paso aplicado baja por la línea. Cuando llega al extremo "abierto" formado por el receptor, se refleja en fase, duplicando el voltaje de regreso al original. Cuando el reflejo vuelve al transmisor, es absorbido por el receptor. Gradualmente, el voltaje de la línea flota hasta el voltaje del controlador, ya que las situaciones se vuelven más como CC que como una función de paso.

En este momento tengo una solución 'suficientemente buena', pero me gustaría tener una mejor idea sobre esto en el futuro.

La imagen 1 es de 100 ohmios en serie en el lado del PWB. Como puede ver, el pico en la señal del reloj de 5 V cayó de 12 V a 9 V, pero sigue siendo demasiado alto. La resistencia en serie más grande, como 200 ohmios, tuvo poco efecto adicional.Imagen 1 - 100 ohmios en serie

La imagen 2 es de un filtro de 100 ohmios/1nf en el lado del PWB. Extraño hablar cuando dije que no había diferencia. El pico cae en el voltaje pero todavía está allí desde el principio. Esta no es una solución viable porque mi reloj no se puede usar ahora.Imagen 2 - tapa de 100 ohmios / 1nF

La imagen 3 es del filtro de 100 ohm/10 nf en el lado del PWB. El pico sigue ahí y no ha perdido valor.Imagen 3 - tapa de 100 ohmios / 10nF

La imagen 4 es de la solución 'suficientemente buena'. Agregué un diodo al riel de 5V para disipar el pico en el riel. (Por el momento, estoy usando un 1N4001 que es realmente lento, pero es todo lo que tenía a mano. Planeo cambiarlo por un 1N4148 que es mucho más rápido tan pronto como tenga algunos). Como puede ver, el pico es de 7 V y el subimpulso solo cae a 4 V, que está muy por encima de la señal alta mínima de 3,5 V. Una vez más, esto me llevará allí, pero si alguien tiene algún otro comentario, me encantaría leerlo.ingrese la descripción de la imagen aquí

Gracias a todos por sus comentarios y pensamientos.

El 1n4148 puede o no ser lo suficientemente rápido, pero seguro que bajará un poco el voltaje. Su voltaje directo es significativamente más alto que un diodo Schottky (0,2 V a 0,5 V). Creo que un Schottky sería preferible aquí.
Consulte esta pregunta: electronics.stackexchange.com/questions/35807/… para una discusión entre StevenVH y yo sobre cuándo Schottky to Vcc es una buena solución y cuándo podría necesitar algo diferente (Zener).

Ni siquiera puedo dar una pista sobre su problema real, pero creo que mi comentario vale la pena para tener el estado de una respuesta.

¿Qué pasa con el convertidor SPI/UART? Fácil de interconectar, se puede hacer en una placa de pruebas mínima. 8 dólares

ingrese la descripción de la imagen aquí

Claro, esto le costará alrededor de $ 20, pero si reemplaza el RS-232 con el transceptor 485, puede olvidarse de cualquier problema relacionado con la longitud del cable.

20 dólares es caro para una conexión de 3 m de largo. Y mientras no sepamos la causa del problema, no podemos estar seguros de que esta sea una solución.
Desafortunadamente, no puedo cambiar nada en el lado de la PC/cable/software, por lo que todo debe permanecer como SPI. Estoy de acuerdo en que usar un estándar diseñado para la distancia: 232/485/LVDS es la mejor manera de diseñar, pero esa no es una opción en este momento. Eliminemos la comunicación por un momento y solo miremos una sola línea GPIO. Dado que el pico se produce en la transición de nivel, incluso si cambiara una línea una vez, obtendría ese pico enorme, lo cual es un problema porque podría dañar los componentes electrónicos. Aunque agradezco la sugerencia. Gracias.