stm32 CDC USB - Dispositivo desconocido (código de error 43) [cerrado]

1

Tengo un problema con la fabricación de PCB personalizado con STM32F103C8T6 FS CDC pero toda la historia se veía así.

  1. Hice una pequeña aplicación de prueba con CubeMX e IAR en una PC barata desde China con el mismo MCU; en la terminal en Windows pude recibir datos. Por cierto, utilicé 8MHz XTAL, 1k5 pull hasta 3.3 en la línea DP sin resistencias en serie.
  2. En el mismo código del tablero personalizado (que puedo descargar a MCU sin ningún problema) y Obtengo un dispositivo desconocido en HW Manager en win7.

La misma MCU, la misma aplicación y los mismos relojes y dos comportamientos diferentes: ¿qué estoy haciendo mal?

pregunta kaziel

1 respuesta

2

Uno de los errores típicos en los dispositivos USB alimentados por bus es la mala gestión de la resistencia de pull-up. Su descripción dice: "1.5k pullup to 3.3" , lo que significa que el evento de conexión USB (DP pullup) se verá inmediatamente después de enchufarlo. Por lo tanto, el host iniciará el proceso de enumeración en 100 ms. Sin embargo, su MCU tardará un tiempo en iniciarse, por lo que no estará lista con las respuestas adecuadas, y las consultas del host fallarán. Cuando su MCU esté lista para comunicarse, el host declarará el puerto como muerto y mostrará un error. Cuando una placa de demostración recibe alimentación externa antes de conectarse al host USB y ya está en funcionamiento, la conexión está bien.

Para evitar este contratiempo, todos tablas demo STM de buena reputación tener el resistor pull-up controlado desde el pin GPIO, generalmente PB2 o PD2. A continuación, el pull-up se establece por código solo cuando la pila USB está lista para responder.

La conexión del pin ID en el receptáculo Micro-B en el lado del dispositivo USB no tiene importancia, está diseñada para el host USB OTG, no para un dispositivo simple.

    
respondido por el Ale..chenski

Lea otras preguntas en las etiquetas