4 votos

¿Cómo probar las caídas del USB en el STM32F?

Tengo un dispositivo que es realmente extraño, se le cae el USB periódicamente. Con periódicamente me refiero a semanalmente (o quincenalmente). Al decir que se cae me refiero a que windows pierde el control del controlador. Las caídas no son bien toleradas por los usuarios de los dispositivos. Lo extraño es que utilizo un diseño similar en la mayoría de los productos que tenemos (más sobre eso más adelante), por alguna razón este no quiere jugar bien, algunos de los otros dispositivos funcionan durante meses a años (con el mismo diseño, pero diferente diseño) con cero problemas.

Sólo está en algunos de los dispositivos así que eso probablemente descarta el firmware/software.

El USB es 2.0 FS, que va a un STM32, con un chip de diodo ESD en el medio.

Esquema (D+ y D- y OSC_IN y OSC_OUT (el diseño del oscilador fue heredado) van a sus pines correspondientes)

enter image description here

Una pregunta mejor sería, ¿cómo puedo comprobar estos abandonos? ¿Existe algún método que pueda monitorizar un dispositivo durante periodos de tiempo muy largos con millones de paquetes pasando y encontrar el origen del error?

11voto

Liza Puntos 548

¿Existe algún método que pueda monitorizar un dispositivo durante periodos muy largos de tiempo con millones de paquetes pasando y encontrar la fuente del error?

Sí, el dispositivo se llama "analizador de protocolo USB".

Si se monitoriza sólo el lado del software del host, lo máximo que se puede ver es que hubo algún "error de transacción", y que el puerto puede o no recuperarse después de la caída. El protocolo USB tiene medios asistidos por hardware para reintentar las transacciones que fallan, y el software no tiene ninguna visibilidad en el "recuento de errores". Así que tienes que identificar la causa del error a nivel físico, en los cables D+/D-.

Existen analizadores USB asequibles, especialmente para la tasa USB 1.1 (FS 12 Mbps). Un buen analizador puede configurarse para un disparo sofisticado mientras se monitoriza el tráfico en un bucle largo, o incluso grabar todo el tráfico hasta la capacidad de su disco duro. Yo recomendaría un pequeño Teledyne/Lecroy modelo Mercury T2 , pero otros tipos como Ellisys y Totalphase Beagle son cada vez mejores.

Sin embargo, hay que tener cuidado, ya que los analizadores son algo invasivos, y sus conectores/internas tienen algún efecto sobre la integridad de la señal. En caso de una conexión defectuosa y una tasa de error poco frecuente, el analizador puede mejorar la señal (y es posible que nunca se vea el problema) o puede anular la funcionalidad del enlace (lo que ayudará a localizar el problema).

Así que, en resumen, hay que identificar quién tiene la culpa cuando se produce la caída del dispositivo. Puede ser (a) que el dispositivo responda de forma incorrecta a un protocolo USB válido, (b) que haya un problema de integridad de la señal del canal, o (c) que el hardware del host tenga un error en el manejo de algunas peculiaridades del protocolo USB.

Yo empezaría por (b) y comprobaría si todas las señales del bus cumplen las especificaciones básicas de la señal USB: la frecuencia del patrón dentro de 2000 ppm, el jitter dentro de la norma, los bordes de la señal son monotónicos y el ojo de la señal cumple la máscara del diagrama, todo ello sobre sus cables, dispositivos y hosts específicos. En la página web de USB-IF se describen procedimientos estándar para realizar las pruebas eléctricas dentro de Programa de cumplimiento del USB .

Si las señales cumplen las especificaciones básicas de la señal FS, el analizador de protocolos sería lo siguiente a desplegar. Puede que sea un reto configurar un disparador adecuado y tener una interpretación correcta de los eventos del bus que conduzcan a un error. Si no tienes experiencia con los analizadores USB, puede que necesites formación o contratar a un consultor.

4voto

Rishi Puntos 29

Tuve un problema similar con algo en lo que estaba trabajando. Parece que los niveles de señal eran bastante marginales y todo se volvía sensible a la calidad o longitud del cable USB. Podrías empezar a fijarte en los niveles de señal, y quizás probar con un cable más corto y ver si eso mejora las cosas. No todos los cables USB son iguales: algunos tienen conductores más gruesos para las líneas de datos que otros.

1voto

Karolis Puntos 1500

Hemos tenido problemas similares en el pasado. El dispositivo USB en serie funcionaba bien en algunos PCs durante meses y en otros perdíamos la comunicación cada semana. Empezamos con tres dispositivos en dos PCs idénticos con Windows (combinación que a veces tenía problemas) y una caja de Ubuntu con un simple software de registro en disco. Después de algún tiempo, una de las cajas de Windows perdió la comunicación - el puerto simplemente desapareció. La pila de controladores USB de Windows (esto era Win7) es un montón de cosas heredadas que aparentemente no pueden manejar las peculiaridades de los chips FTDI. Así que mi sugerencia es ejecutar la prueba en dos configuraciones idénticas + tercera diferente. Si deja de responder, tienes un problema con la combinación de dispositivo + controlador usb + controlador. Si no es así, probablemente sea un problema de señal - el monitor USB podría ayudarte.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X