Problemas con la clase de dispositivo CDC

Estoy usando la placa de inicio de Microchip de 16 bits y 28 pines y la comunicación USB con la PC sigue interrumpiéndose.

Hay dos microprocesadores en la placa. El procesador de aplicaciones se comunica con el procesador USB a través de UART. El procesador USB está configurado como un dispositivo USB de clase CDC y aparece en el administrador de dispositivos como un puerto serie.

El dispositivo enumera ok y los datos que se transmiten desde la PC al procesador de aplicaciones ok. El procesador de aplicaciones responde al procesador USB, pero la respuesta nunca llega a la PC.

Sé que las comunicaciones UART entre los dos procesadores funcionan bien porque estoy usando un BusBee para monitorear el UART. No escribí el código para el procesador USB (que vino de Microchip). Ha funcionado antes, pero parece que no puedo hacer que funcione de nuevo.

¿Hay alguna herramienta o algo que pueda usar para depurar los puntos finales USB en la PC?

Algo así como wireshark, pero para USB?

¿Alguien más ha usado el kit de inicio de 16 bits de Microchip y ha tenido problemas similares?

Respuestas (2)

El PIC UART puede ser exigente. ¿Recordó verificar el bit Frame Overrun (OERR)? El PIC no podrá recibir comunicaciones UART hasta que se borre la OERR.

EDITAR: También estaba pensando ... ¿tal vez podrías probar una especie de bucle invertido? Es decir, elimine el UART del bucle, y cuando la PC envíe algo a través de USB, simplemente envíelo de regreso. Esto le dirá si el problema está en el UART o en el lado USB del PIC.

No tengo forma de verificar el bit OEER o configurar el procesador USB como bucle invertido ya que no tengo control de ese firmware. Ya tengo el procesador de aplicaciones echo lo que recibe y eso esta funcionando. ¿Qué causaría que se establezca el bit OERR? ¿Puedo borrarlo reiniciando el procesador USB?
El problema estaba en el UART del procesador USB. Una vez que el UART en el procesador USB tenía un error, no había forma de restablecerlo. La solución fue encender la placa de desarrollo mientras se mantenía el reinicio de MCLR para el procesador de aplicaciones. Luego, suelte el MCLR después de que se encienda el procesador USB.

Rastreo de USB :

Windows: http://sourceforge.net/projects/usbsnoop/

Linux: http://www.linux-usb.org/tools.html

Microchip CDC :

Me temo que no sé nada sobre su stack oficial, pero...

En http://dangerousprototypes.com han estado construyendo una nueva pila USB PIC de código abierto .

Lo están usando en el nuevo Bus Pirate de un solo chip . El conductor de Bus Pirate CDC está aquí .

O bien, puede elegir la versión de pila alternativa original aquí .

Intenté usar USBSnoop y cada vez que intento instalar el snooper en el dispositivo, el dispositivo deja de funcionar. Ya no puedo conectarme al puerto COM dice ID de puerto COM incorrecto.
USBsnoop parece funcionar solo con dispositivos de clase HID. Usé SniffUSB ( pcausa.com/Utilities/UsbSnoop ) en su lugar.