2019-11-12 06:17 PM
Hi there,
There have been various permutations of this issue across the forums, but I can't seem to get any definitive solutions for this. Trying to get some help to resolve this issue.
We are trying to incorporate USB CDC into a design and can't seem to get this working on the STM32H745ZI-Q NUCLEO development board that we have. Every time the firmware is running, device manager shows Unknown USB Device (Device Descriptor Request Failed), (Error 43) when board is plugged in through OTG port.
These steps tend to work on other boards, so I'm wondering if there's something fishy with the generated Cube code.
Details:
Clock Configuration:
Linker Settings:
Cube Configuration Steps:
Other Steps:
Thanks very much!
Edit:
Can confirm that the same steps instead followed on the NUCLEO H743ZI2 board result in a working USB CDC device...
Solved! Go to Solution.
2019-11-15 08:04 PM
Make sure to enable the USB OTG FS interrupt.
2019-11-13 09:56 PM
I have run into pretty much the exact same thing, although for me I'm developing a USB Composite device (MSC and CDC). One interesting observation I made today is that enumeration partially succeeds on Windows 7 (but fails just like the above on Win 10). For the Windows 7 failure, I suspect that could be a bug in my code. Windows 7 properly detects the Composite device and the MSC, but not CDC. The MSC is not showing up in disk manager, but that could be a problem with my code (too soon to tell).
2019-11-14 10:04 AM
Thank you so much for corroborating this behavior. We're glad (?) that this isn't just an oversight / silly mistake in our process.
2019-11-15 08:04 PM
Make sure to enable the USB OTG FS interrupt.
2019-11-18 08:48 AM
As mentioned by Joe above, the OTG FS interrupt must be enabled under NVIC. A screenshot is below, for others who may be facing a similar issue:
Can confirm also that the H743 and other Cube libraries (with Nucleo boards we had on hand) will enable OTG FS interrupt by default, allowing VCP to enumerate, which is why the steps above worked on other boards we tried.
Not sure if this is design intent to keep the interrupt off by default when the user enables USB connectivity! But for now, manually enabling works.
Thank you!
2019-11-18 09:58 AM
You're observation is correct. On other devices, CubeMX automatically enables the OTG FS interrupt when the USB peripheral is enabled and USB middleware class is selected. I will report this to the to the tools group so the USB interrupt gets enabled automatically for all devices (including the H745 you found this in). Meanwhile, you can enable it manually, until a fix is released in the next revision or two of CubeMX.
Regards
2019-11-18 05:29 PM
It's possible that this resolved the issue. I noticed it was disabled when I was digging around, so i turned it on. Unfortunately I was working on a couple of issues simultaneously and made other changes at about the same time and it now is working for me, so I can't 100% confirm it was just the interrupts, but I'll say I'm 90% sure :)