reloj SPI - frecuencia lenta pero rápido problema de tiempo de subida con formas de onda

3

Antecedentes sobre el problema:

Actualmente tengo un bus SPI entre un Atmel ATSAM3X8E y un chip de memoria flash Spansion FL164K.

SPI siempre ha sido super confiable para mí en proyectos anteriores, pero este diseño es muy temperamental (el enrutamiento está lejos de ser ideal). Algunas placas funcionan bien, algunas tienen pérdidas de datos muy ocasionales en las comunicaciones SPI, otras tienen pérdidas de datos casi constantes. La pérdida de datos a la que me refiero se reproduce más fácilmente al sondear constantemente la bandera de listo durante un borrado de ~ 50 segundos. En su mayoría, la respuesta de ocupado es 0x03 (0b00000011), pero ocasionalmente vuelve como no ocupado - 0x00 (0b00000000).

Afortunadamente puedo reproducir la falla en el banco, y afortunadamente también puedo hacer que el problema desaparezca. Sin embargo, desafortunadamente, conectar una sonda pasiva es una de las cosas que hace que el problema desaparezca, por lo que no puedo "ver" la falla. Y no estoy feliz de llamarlo fijo si no estoy seguro de lo que realmente estoy arreglando.

Información de diseño del circuito:

  • El bus SPI se enruta a 3 cosas: SPI flash, tarjeta SD (que no está instalada) y un encabezado básico de 6 pines
  • El pad rojo en la parte inferior derecha es el MCU (fuente de clk), el talón que se desprende inmediatamente va a un FET de canal n que controla un LED, el CI SOIC8 con el pad rojo es el flash SPI, el 6 el encabezado del pin por encima de él no está poblado, y la almohadilla azul en el lado izquierdo en la traza es un conector de tarjeta SD no poblado.
  • La distancia real desde la MCU al flash SPI es ~ 35 mm, y el flash SPI al teclado de la tarjeta SD es ~ 30 mm. El talón al FET es ~ 25 mm y el talón al encabezado es ~ 8 mm.
  • El diseño está lejos de ser ideal, y lo entiendo, pero la intención era ejecutarlo solo a < 1MHz, por lo que asumí incorrectamente que la teoría / terminaciones / reflexiones de las líneas de transmisión no eran necesarias.

Formasenlasqueyapuedoevitarelproblema:

  • AgregueuncondensadorcerámicodeCLKatierraenelcabezalde6pines(heprobadovaloresde18pa330p).Todosralentizaneltiempodesubida,yelproblemanopersiste
  • Agregueunaresistenciade1kdeCLKatierra.
  • Adjuntarunasondadealcance
  • TocalalíneaCLKconmidedo

Básicamente,cualquierformadeagregarcapacitanciaocargaalcircuitoparecehacerquelaslecturassean100%confiables.

Formasdeonda(tomadasconunRigolDS1054Zconlaopciónde100MHzyunasondapasivade150MHzconunresorteatierra):

Nota:unasondadealcanceestáobviamenteconectadaparatodoesto(loqueevitaqueocurraelproblema).Lasformasdeondaquevemosaquínosonlosuficientementemalascomoparacausarelproblema,peroesdeesperarquedenunaideadeloquepodríaserlosuficientementemalocomoparacausarelproblemacuandoseeliminalacapacidaddelasonda.

Nota2:estastomassetomaronaunavelocidadderelojde5MHz,peroelproblemaparecemanifestarseencualquierlugarde100kHza20MHz.

Enlainspeccióninicial,laseñaldelrelojsevebien(aunquemuyrápido~8nsdetiempodesubida).

Perounprimerplanomuestraunpocodeunpasohastalamitad

Yenlaescaladetiempomásrápida,estoesloqueveo.

Finalmente, las preguntas

  • ¿Un paso en la forma de onda ascendente es típico de los reflejos de la línea de transmisión o algo más?
  • Dado que el problema de lectura se produce independientemente de la frecuencia del reloj, asumo que el tiempo de aumento (8ns con sonda adjunta) debe combinarse con el enrutamiento deficiente para causar problemas de datos. ¿Pero no los tiempos de subida rápidos causan el timbre, no una forma de onda escalonada? ¿Es común que una sonda de alcance desaparezca el timbre que de otra manera ocurre?
  • Al observar la forma de onda, ¿qué sucede realmente dentro del esclavo para causar un problema? (¿Los relojes dobles esclavos SPI debido a ese paso? ¿O el flash SPI no está recibiendo su velocidad de giro especificada de 0.1v / ns? ¿O algo más que no entiendo todavía?)
  • Finalmente, ¿qué otra cosa podría hacer para tratar de evaluar la señal sin cargar (arreglar) la señal, sin gastar $$$ en una sonda activa que puede o no hacer una diferencia?

Como puede ver, la teoría de las frecuencias más altas no es mi área de experiencia, por lo que aprecio las experiencias de cualquiera en esta área.

    

1 respuesta

1

Los tiempos de subida rápidos causarán muchas interferencias, como ha mencionado, esto es independiente de la frecuencia. Es difícil ver en la imagen los rastros y la cuadrícula. Las rutas paralelas o las rutas de apilamiento en varias capas lo empeoran. Como lo ha hecho, un condensador puede ralentizar el tiempo de subida, pero debe tener cuidado de no violar los tiempos de configuración / retención.

Es posible que veas algunos reflejos debido a una falta de coincidencia de impedancia. He visto la terminación de la fuente utilizada en las líneas de reloj SPI para dar cuenta de esto. Desea que la resistencia de salida más su resistencia de origen sea igual a la impedancia de su traza.

No estoy familiarizado con la MCU que está utilizando, pero revise la hoja de datos para ver si tiene algún control de la velocidad de giro, es posible que pueda reducirla. Esto es común en los FPGA con los que estoy más familiarizado, pero lo he visto en algunos MCU con los que he trabajado.

    
respondido por el Geomancer

Lea otras preguntas en las etiquetas