¿Cómo conducir un bus SPI sobre 5 pies de cable 26AWG?

A continuación se muestra el circuito que estoy tratando de lograr. El punto final es un dispositivo de 5 V, pero mi microcontrolador (SPI Master) es un dispositivo de 3,3 V, por lo que tengo que hacer la traducción de voltaje.

Mi pregunta es ¿qué tipo de circuito debo usar para conducir la señal SPI a través de un cable largo como ese? El circuito que tengo ahora (que se muestra a continuación) realmente distorsiona mucho la señal.

ingrese la descripción de la imagen aquí

La señal se ve bastante mal con solo el cable de 5 pies conectado.

ingrese la descripción de la imagen aquí

¿Dónde se está tomando esta medida en su arquitectura anterior?
La medida se toma justo en el Connector. Agregaré esta información a la pregunta.
Lo que estás viendo son probablemente reflejos; 1 metro de cable es aproximadamente 5,3 nseg de tiempo de vuelo y los bordes de la señal son más rápidos que eso; la diferencia en las reflexiones en alto y bajo dependería de las terminaciones del extremo lejano.
Terminar en serie el extremo conductor (entre traductor y conector).
¿El traductor está presente o no en su configuración actual (con la que realizó el seguimiento del alcance)?
si esta presente
¿Tiene una hoja de datos para el cable y el "punto final"?
@ user1406716 - Esta pregunta parece estar relacionada con su pregunta anterior "¿ Reflexión sobre la señal del reloj SPI, problema de terminación o código auxiliar? ", que no parece haberse resuelto (no hay respuesta aceptada, no hay actualizaciones en los últimos 18 días). A menos que se haya resuelto esa pregunta anterior (o se haya demostrado que es un artefacto de medición), ¿no existe el riesgo de que sus señales SPI tengan problemas, incluso antes de agregar los 5 pies de cable?
@SamGibson Tienes razón. He estado probando todas las opciones. El problema creo que podría ser la fuerza de la unidad. Quité el MAX14611 e intenté usar esta parte de búfer ti.com/lit/ds/symlink/sn74ahct125.pdf . Una vez que cambié la forma de onda, no perfecta, se volvió mucho mejor: imgur.com/a/3Mybv
@user1406716 - Gracias. No puedo incluir todo mi análisis en un comentario, pero brevemente: si su nuevo enlace imgur es la señal de 5 V en el conector sin ningún cable conectado, entonces en mi humilde opinión, todavía hay un problema de integridad de la señal "en PCB". No podemos comparar directamente la nueva imagen imgur con la imagen principal en esta pregunta (parecen ser de diferentes lugares en el circuito, debido a diferentes voltajes, y la nueva señal imgur tiene el doble de frecuencia). Sin embargo, la nueva imagen de imgur tiene un exceso o un defecto significativo y otras irregularidades. Estaría arreglando la señal "en PCB", antes de agregar un cable externo.

Respuestas (3)

¿Qué tal esto? Conduce una corriente a través del cable, que pasa por el LED de un optoacoplador en el otro lado. Conduce el LED desde el suministro de 3V3 y el fototransistor en el opamp desde el 5V. Esto resuelve dos problemas: la conversión de 3V3 a 5V y la sensibilidad al ruido externo.

No está mal, solo hay que usar un optoacoplador de alta velocidad. La mayoría probablemente no sean lo suficientemente rápidos para esta aplicación.
Agregaré esta restricción a la pregunta: el dispositivo esclavo final (una tira de LED como se muestra): lo estoy comprando y no puedo agregar un dispositivo en ese extremo. ¿No hay forma de evitarlo?

Agregue resistencia en serie a la salida del traductor para reducir la velocidad del borde. Esto reducirá los efectos de reflexión y, en particular, la desagradable falla en el flanco descendente que amenaza con producir flancos de reloj deshonestos. La resistencia necesaria dependerá de muchos detalles que no haya compartido, por lo que es posible que deba experimentar para encontrar el valor correcto.

Esto puede ralentizar los bordes hasta el punto en que tenga que reducir su velocidad de datos. Esa es la forma como es. Si desea altas velocidades de datos a largas distancias, es posible que deba usar líneas de transmisión legítimas en lugar de cables sueltos ad hoc.

No se trata tanto de ralentizar los bordes como de hacer coincidir la impedancia de la línea para terminar el reflejo. Reducir la velocidad de los bordes es más un efecto secundario que en realidad no es deseado en frecuencias más altas.
@Barleyman, si el contenido de frecuencia se mantiene bajo, es completamente razonable ver un cable como un elemento RLC, en lugar de una línea de transmisión. No necesitamos sacar la teoría de la línea de transmisión para resolver todos los problemas. También es muy posible que la carga tenga múltiples terminaciones (p. ej., bus multipunto), por lo que incluso si el análisis de la línea de transmisión y la terminación en serie de la fuente dan una forma de onda agradable en la fuente, es posible que no brinde muy buenos resultados en los puntos intermedios a lo largo de la línea.
Sí, de eso se trata el negocio de la longitud crítica en la teoría de la línea de transmisión ;-) Dependiendo de a quién le pregunte, puede ignorar la impedancia si su retraso de propagación en una dirección es <1/4 de la longitud de onda de la señal. En este caso unos 30MHz. Eso equivale a 33 ns, por lo que su tiempo de subida debería ser más de 16,7 ns o el doble de lo que es ahora. Por otra parte, algunas personas pensarían que debería usar 1/8 de longitud de onda o menos.

¿Eso sería alrededor de 80 ns por reloj o bus SPI de 12,5 MHz? ¿Y lo está conduciendo sobre 1,5 metros de un cable de 0,4 mm de diámetro completamente sin blindaje o balanceado? Parece que el tiempo de subida es de unos 8 ns o 125 MHz efectivos. Ay.

En teoría, eso sumaría una impedancia característica de aproximadamente 200 ohmios, por lo que el controlador de su traductor debería tener una resistencia de serie 180R para el reloj y las líneas SDO (MOSI). Si realmente está leyendo datos, debe agregar otra resistencia a la línea SDI (MISO) en el otro extremo. Si el controlador puede suministrar suficiente corriente, puede omitir la resistencia en serie y agregar una resistencia 200R a GND en el otro extremo para obtener el mejor efecto, pero esto requiere una unidad de 25 mA que puede no ser práctica.

Dependiendo de cómo se conecte el cable, la impedancia real puede ser (mucho) menor, dependiendo de si hay un cable al lado (<<5 mm). La experimentación producirá un valor óptimo, comience con una resistencia de 47R en serie y avance en incrementos de 47R. Alternativamente, 22R y 22R si desea ajustarlo con precisión, pero probablemente estará "lo suficientemente cerca" con incrementos de 47R.

¿Cómo calculó la impedancia característica sin conocer el espacio entre la señal y los cables de retorno?
@ThePhoton Suponiendo que la ruta de retorno está "lejos", por ejemplo, > 10 veces el diámetro. El OP no nos dio ninguna especificación sobre el cable, por lo que probablemente sea incorrecto, ya que sería cierto solo para un cable solitario. Un poco de experimentación producirá un valor óptimo que probablemente esté en el rango de 33 a 100R.