Tengo MCU STM32f107 soldada en una placa personalizada. Me gustaría usar un periférico USB en modo CDC. Conecté los pines PA11 (D-), PA12 (D +) y GND directamente a un cable USB que conduce a la computadora. El dispositivo es autoalimentado, por lo tanto no uso el pin VDD.
En STM32Cube creé un nuevo proyecto, configuré solo el dispositivo USB_OTG_FS y USB_DEVICE en la sección de middleware. También configuré el reloj de alta velocidad en la sección RCC para que el periférico USB tenga un reloj de 48 MHz.
Luego generé el esqueleto del programa y lo subí a la MCU. Lamentablemente no funciona. Creo que el principal problema es que no hay voltaje en el pin D +, por lo que la computadora no puede reconocer un nuevo dispositivo. Cuando ejecuto la función CDC_Transmit_FS
, el procesador cae en la falla dura.
Lo más extraño es que cuando configuro la MCU STM32F429 en el kit Discovery de la misma manera, el USB funciona de manera inmediata. Intenté cambiar el código fuente, pero no he encontrado ninguna diferencia crucial (excepto que el MCU STMF4 usa USB de alta velocidad OTG en modo de velocidad máxima).
¿Alguien tiene alguna experiencia en el uso de USB con el esqueleto del programa STM32F107 y STM32CubeMX?
EDITAR: Cuando ejecuto la MCU en el modo de cargador de arranque, la línea D + se lleva a 3V3, por lo que creo que la MCU no necesita ningún pull-up externo (también lo dice la hoja de datos)
EDIT2: ¿Alguien sabe qué opción Activar VBUS en CubeMX hace exactamente? Puedo entenderlo en el modo Host, pero ¿qué hace en el modo solo dispositivo?