Integridad de la señal SPI

4

Hace un par de días tuve un problema por el que no podía leer datos de un esclavo SPI. Finalmente lo arreglé y ahora puedo leer los datos bastante bien.

Sin embargo, encontré otro tema interesante hoy. Si conecto la salida del esclavo directamente a la MCU, los datos están dañados. La siguiente imagen muestra esto:

Sinembargo,siinstalounaresistenciade220ohmiosenserie,losdatosestánbien,así:

El byte transferido fue 11001101. Puede ver el inicio y el final de la transferencia desde las dos pequeñas inmersiones en la forma de onda. La caída inicial se ve cerca del indicador de disparo. Estos no se ven en la forma de onda dañada.

La tasa de transferencia de datos no es muy rápida. La velocidad de reloj es de solo 62500 Hz.

¿Qué podría causar esto? ¿Y cómo puedo asegurarme de que no ocurra cuando finalmente dispongo el PCB?

La forma de onda superior es el reloj (SCK) y la parte inferior es MISO.

Estas formas de onda muestran el timbre con más detalle. Nuevamente, la forma de onda superior es el reloj y la parte inferior es MISO. Esta imagen tiene el CPLD y la MCU conectados a través de una resistencia de 220 ohmios:

EstomuestraeltimbrecuandolaMCUyelCPLDestánconectadosdirectamente(nohayresistenciaentreellos).Tengaencuentaquenopuedoaccederalpindeorigen(enestecaso,elpindelCPLD)porqueelCPLDestáenunaplacadedesarrolloyelchipestáenunpaqueteBGA.Voyatratardeversielpinsepuedesondear.Además,olvidéagregar,tambiéntengounaresistenciade100OhmiosenserieenelSCKcomo.NecesitabaestoparareducireltimbredelaMCUenelrelojyporqueesnecesarioparaelprogramadorISPAVR.Delocontrario,AVRStudiosimplementeemiteunerror.Porlotanto,eneldiseñofinaldePCBseránnecesarios.

    
pregunta Saad

2 respuestas

4

Al sondear, debe sondear la señal donde llega al pin de entrada y asegurarse de que la conexión a tierra de la sonda esté conectada a un terreno cerca de ese pin, para que no oculte ningún rebote de tierra. Me parece que estás sondeando el pin de salida, lo que ocultará cualquier timbre.

En el primer gráfico, veo picos en los bordes de la señal. Esto me dice que tienes un exceso de tiempo y posiblemente un posible timbre. El hecho de que una resistencia de 220 ohmios se haya corregido también es indicativo de esto.

Hay tres soluciones habituales para este problema.

La primera solución es usar una cuenta de ferrita en serie para humedecer la punta. El cordón de ferrita se verá como una gran resistencia a altas frecuencias y un corto a bajas frecuencias. No es lo mismo que un inductor (y un pico generalmente significa que tienes una inductancia más que suficiente en tu línea).

La segunda solución es usar una resistencia en serie como lo hizo usted, pero los valores típicos para esta resistencia son de 22 a 50 ohmios, dependiendo de la impedancia de la línea de transmisión, y la resistencia debe colocarse en el extremo de la fuente (salida del controlador) de la línea (generalmente dentro de 0.2 pulgadas, aunque eso no puede hacer ninguna diferencia a 62.5 kHz). La función de esta resistencia es reducir la velocidad de los bordes ascendente y descendente de la forma de onda, amortiguando sus componentes de alta frecuencia. 220 ohms me parece demasiada resistencia. También puede usar un cordón de ferrita (o un filtro EMI similar) con la resistencia, generalmente si su línea es parte de un cable.

Finalmente, es posible que pueda programar su controlador para una velocidad de borde más lenta (varios nanosegundos en lugar de uno o dos), aunque esta aún es una característica inusual. Esta es realmente la mejor solución, y reduce en gran medida la EMI para arrancar.

    
respondido por el Mike DeSimone
4

No estoy muy seguro de cómo se las arregla para cambiar tan drásticamente de la primera señal a la segunda (creo que esto es probablemente lo que Kevin estaba pensando) pero el problema más probable parece una línea muy larga y un timbre. Puede ver algunos timbres en la primera traza (casi 2 V en una línea de 3.3 V), lo que tal vez le cuente más a una historia si reduce la base de tiempo. Esto podría estar causando que sucedan cosas extrañas, como el pin Rx que recoge múltiples transiciones, incluso puede estar acoplado a otras huellas y causar problemas allí.
La resistencia humedecerá el sonido y arreglará las cosas. La velocidad del reloj no es el problema, más el tiempo de subida de la señal.
Podría acortar las líneas (si esa es una opción), pero es una buena práctica tener una resistencia de serie pequeña de todos modos.

    
respondido por el Oli Glaser

Lea otras preguntas en las etiquetas