Antecedentes sobre el tema:
Actualmente tengo un bus SPI entre un Atmel ATSAM3X8E y un chip de memoria flash Spansion FL164K.
SPI siempre ha sido súper confiable para mí en proyectos anteriores, pero este diseño está siendo 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, algunas tienen pérdidas de datos casi constantes. La pérdida de datos a la que me refiero se reproduce más fácilmente sondeando constantemente el indicador de listo durante un borrado de ~50 segundos. La mayoría de las veces, la respuesta de ocupado es 0x03 (0b00000011), pero ocasionalmente regresa 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 arreglado si no estoy seguro de lo que realmente estoy arreglando.
Información de diseño del circuito:
Formas en que ya puedo prevenir el problema:
Entonces, básicamente, cualquier forma de agregar capacitancia o carga al circuito parece hacer que las lecturas sean 100% confiables.
Formas de onda (tomadas con un Rigol DS1054Z con la opción de 100 MHz y una sonda pasiva de 150 MHz con un resorte de tierra):
Nota: obviamente, una sonda de alcance está conectada para todos estos (lo que evita que ocurra el problema). Las formas de onda que vemos aquí no son lo suficientemente malas como para causar el problema, pero con suerte dan una idea de lo que podría ser lo suficientemente malo como para causar el problema cuando se elimina la capacitancia de la sonda.
Nota 2: estas tomas se tomaron a una velocidad de reloj de 5 MHz, pero el problema parece manifestarse entre 100 kHz y 20 MHz.
En la inspección inicial, la señal del reloj se ve bien (aunque es muy rápida, con un tiempo de subida de ~8 ns).
Pero un primer plano muestra un poco de un paso a la mitad
Y en la escala de tiempo más rápida, esto es lo que veo.
Finalmente, las preguntas
Como puede ver, la teoría de frecuencias más altas no es mi área de especialización, por lo que agradezco las experiencias de cualquiera en esta área.
Los tiempos de subida rápidos causarán mucha diafonía, como mencionaste, esto es independiente de la frecuencia. Es difícil ver en la imagen qué son las huellas y qué es la cuadrícula. Las rutas paralelas o las rutas apiladas en múltiples capas lo empeoran. Como lo ha hecho, un capacitor puede disminuir el tiempo de subida, pero debe tener cuidado de no violar los tiempos de configuración/retención.
Es posible que vea 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 la resistencia de su fuente sean iguales a la impedancia de su traza.
No estoy familiarizado con la MCU que está utilizando, pero verifique la hoja de datos para ver si tiene algún control de la velocidad de respuesta, 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.
Diseño incrustado muerto
Diseño incrustado muerto