Tengo un problema extraño con el modo CDC USB en STM32F103. He diseñado PCB con microcontrolador STM32F103 y un acelerómetro que transmite datos a través de USB a PC. He utilizado el asistente STM32CubeMX. Se alimenta a sí mismo desde USB como este dispositivo de píldora azul bien conocido.
El principal problema es que el dispositivo funciona perfectamente cuando lo conecto por primera vez a mi PC (no importa si es Windows, Ubuntu o Raspberry Pi) pero cuando lo desconecto físicamente y luego cuando intento conectarlo una vez más no se conecta. En general, la segunda conexión a veces funciona, a veces no. Por supuesto, cuando reinicio la PC, la primera conexión vuelve a funcionar.
¿Alguien ha tenido un problema similar? Creo que publicar una solución será beneficioso para muchos otros desarrolladores :)
ACTUALIZACIÓN: noté que si desconecto mi dispositivo y lo conecto de inmediato, se produce un error "no se pudo establecer dtr / rts", pero si espero varios segundos y lo conecto, no se producen errores. Abajo adjunto los registros dmesg.
[14388.242015] usb 2-1.2.4: new full-speed USB device number 7 using ehci-pci
[14388.352862] usb 2-1.2.4: New USB device found, idVendor=0483, idProduct=5740
[14388.352867] usb 2-1.2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[14388.352870] usb 2-1.2.4: Product: STM32 Virtual ComPort
[14388.352873] usb 2-1.2.4: Manufacturer: STMicroelectronics
[14388.352876] usb 2-1.2.4: SerialNumber: 00000000001A
[14388.427460] cdc_acm 2-1.2.4:1.0: ttyACM0: USB ACM device
[14388.427755] usbcore: registered new interface driver cdc_acm
[14388.427756] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[14399.285342] usb 2-1.2.4: USB disconnect, device number 7
[14399.287602] cdc_acm 2-1.2.4:1.0: failed to set dtr/rts
[14400.786034] usb 2-1.2.4: new full-speed USB device number 8 using ehci-pci
[14400.896587] usb 2-1.2.4: New USB device found, idVendor=0483, idProduct=5740
[14400.896592] usb 2-1.2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[14400.896596] usb 2-1.2.4: Product: STM32 Virtual ComPort
[14400.896599] usb 2-1.2.4: Manufacturer: STMicroelectronics
[14400.896601] usb 2-1.2.4: SerialNumber: 00000000001A
[14400.897005] cdc_acm 2-1.2.4:1.0: ttyACM0: USB ACM device
[14424.885653] usb 2-1.2.4: USB disconnect, device number 8
[14446.610270] usb 2-1.2.4: new full-speed USB device number 9 using ehci-pci
[14446.720618] usb 2-1.2.4: New USB device found, idVendor=0483, idProduct=5740
[14446.720622] usb 2-1.2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[14446.720625] usb 2-1.2.4: Product: STM32 Virtual ComPort
[14446.720627] usb 2-1.2.4: Manufacturer: STMicroelectronics
[14446.720629] usb 2-1.2.4: SerialNumber: 00000000001A
[14446.721105] cdc_acm 2-1.2.4:1.0: ttyACM0: USB ACM device