Skip to main content
nitr0
Associate
January 11, 2016
Question

STM32F103, HAL, USB CDC: hangup after reconnect

  • January 11, 2016
  • 5 replies
  • 1355 views
Posted on January 11, 2016 at 23:54

Hi.

I'm trying to make CDC console on STM32 device. But I've noticed some troubles:

1. When I re-connect USB cable to device, device just hangs. It seems like bug is in USB library - even blank project, that is generated by fresh CubeMX, hangs. This is most annoying trouble.

2. When I press reset, host PC (Linux) doesn't receive any re-initialization event, so connection becomes lost. Dev board have pull-up resistor directly to power line, so I can't emulate device reconnect. Can this be fixed in some way?

3. Startup (mostly - clocks initialization) takes enough long (~0.5-1 sec). For battery-backed device this isn't a trouble, but if I connect demo board directly to USB, it's often detected as unknown device. Can I do something with this?

MCU - STM32F103C8T6

#usb #cdc #cdc #stm32cube #stm32f1
This topic has been closed for replies.

5 replies

nitr0
nitr0Author
Associate
January 15, 2016
Posted on January 15, 2016 at 09:52

Slow startup was caused by LSE clock (it seems like something wrong with resonator/capacitors). Somewhy it also affects USB bus (???) - board periodically wasn't detected by PC (even when it works from st-link power - so initialization timeout doesn't hurt USB).

Tesla DeLorean
Guru
January 15, 2016
Posted on January 15, 2016 at 17:06

I'd check the fail through sequences on the clocks and PLL. The USB peripheral requires the PLL is running, and 48 MHz is output via the Q tap.

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
nitr0
nitr0Author
Associate
January 15, 2016
Posted on January 15, 2016 at 18:16

Clocks are initialized correctly (I didn't touched them as cubemx sets them). This issue related to LSE onboard generator. With same code board may work OK (just with startup delay), and after a while - may not be detected at all via USB. I can't understand how LSE can involve USB.

Altough, other issues (hangup on USB reconnect and re-initialization lacking on reset) aren't solved (I didn't look on it deeply).

Tesla DeLorean
Guru
January 15, 2016
Posted on January 15, 2016 at 18:47

I didn't touched them as cubemx sets them

Ok, but doesn't it give up and abort when things don't work properly? The LSE should have no material impact on the chip and the functioning of the USB peripheral

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
Walid FTITI_O
Visitor II
February 10, 2016
Posted on February 10, 2016 at 18:42

Hi denisenko,

Take a look to the following discussions , I thinkthat will give you a solution for each point ou have asked:

1. ->

https://my.st.com/public/STe2ecommunities/mcu/Lists/STM32Java/Flat.aspx?RootFolder=https%3a//my.st.com/public/STe2ecommunities/mcu/Lists/STM32Java/CubeF4.10%20%2b%20FreeRTOS%20%2b%20USB%20CDC%20%2b%20F427VI%20%20%3d%20Hardfault&FolderCTID=0x01200200770978C69A1141439FE559EB459D758000F9A0E3A95BA69146A17C2E80209ADC21&currentviews=381

2. -> [DEAD LINK /public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/STM32F4%20USB%20CDC%20Transfer%20Problems&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&currentviews=23]discussion2

3. -> [DEAD LINK /public/STe2ecommunities/mcu/Lists/STM32Java/Flat.aspx?RootFolder=/public/STe2ecommunities/mcu/Lists/STM32Java/Bug%20report%20USB%20CDC%20Template%20and%20CubeMX%20code%20generation&currentviews=12]discussion3

-Hannibal-