He diseñado un dispositivo USB alrededor de un STM32F105 . Es un dispositivo CDC de velocidad completa USB 2.0 configurado como un puerto COM virtual que utiliza ST Biblioteca USB . Utiliza el PHY incorporado del STM32 y funciona a 12 Mbps.
Estoy enviando datos en paquetes de 254 bytes. Ocasionalmente (con un promedio de 1 en 17000 paquetes), la computadora host recibe datos erróneos. Generalmente está restringido a un solo byte en el paquete.
Así que estoy viendo las señales usando un Tektronix TDS2025 O-scope (200 Mhz).
La mayoría de las transiciones se ven muy bien:
Peromidiagramadeojodebajatecnologíamuestraalgoinesperado:
Melasarregléparaatraparunadelasformasdeondamalas,quesepareceaesto:
¿Quépodríaestarcausandoesto?Noestoysegurodepordóndeempezarabuscar.
Cuandoconectoeldispositivoporprimeravez,laenumeraciónserealizacorrectamenteyeldiagramadelojosevelimpio.PerounavezqueabroelpuertoCOM(usandoPuTTY,Herculesomisoftwarejavapersonalizado),aparecenlosfallos.EstoyusandounThinkpaddeLenovoconWindows7.
Aquíhayunafotodeldiseño:
ElICdeTVSesun
Los rastros USB viajan aproximadamente una pulgada en la parte posterior de la placa, luego vuelven a subir y se conectan directamente a las clavijas USB del microcontrolador. Se controlan por impedancia y se ajustan adecuadamente entre sí.
Estoy sondeando desde las almohadillas de soldadura del conector USB hasta el punto de tierra que he marcado en la imagen. La sonda tenía un resorte de tierra corto, no una pinza de cocodrilo larga.
Si más datos ayudarían, hágamelo saber. Además, este es mi primer dispositivo USB y mi primera prueba de diagrama de ojo. Si ve algo incorrecto en mi configuración o suposiciones, hágamelo saber.