Hello,
I've designed a custom PCB which I ordered from / got assembled by JLCPCB - luckily it seems like I made no major issues on the first attempt, however no matter what I try, I just cant get the USB link to work properly. My MCU is the STM32F407 and the usb PHY is the USB3300, attached is a picture of my (simplified, all parts that are unrelated and inactive while testing are removed) board. If some line seems to be routed in a weird fashion its probably because some other trace prevented it from being done in a better fashion.
Considerations: The USB3300 exists as a breakout board (
https://www.waveshare.com/usb3300-usb-hs-board.htm), thus I've assumed signal integrity is basically not going to be an issue for me to a point where it is going to make things break.
My issue is basically that, when configuring the PHY as Full Speed the device will be detected but basically "crashes" once I actually try to use it, suggesting that something corrupts. Trying High Speed I cannot get the device to be detected at all.
As mentioned in this STM doc on Page 173, I've used the MCO of the STM to clock the PHY:
https://datasheet.lcsc.com/szlcsc/STMicroelectronics-STM32F407VGT6_C12345.pdfAfter having initially ordered my board with a 25MHz crystal I spotted that the page mentioned above explicitly states the STM's input crystal should be 24 or 26 MHz, so I swapped it for a 24MHz one and passed trough the HSE clock instead of going trough the PLL, which made no difference.
Thinking that maybe somehow crosstalk of the 60MHz clockout line causes issues I've cut that trace and connected it with a jumper wire which made no difference. Additonally I did the same with the ULPI7 dataline which also made no difference (Why they decided to have one of the 8 lines be on the complete opposite side of the chip, I dont know).
The last thing I've tried is disabling the MCO of the STM and instead directly soldering on a Crystal with its caps and resistor onto the PHY which lead to the exact same result.
I am using STM32CubeMX with the latest libs and generate a pretty much bog standard empty project with nothing else configured other than the USB interface - The USB3300 has to be compatible with my MCU as one of the demo code packages of the breakout boards is for my exact chip model, however I cannot give that example code a try as I have no idea what tooling I need to try to compile it.
At this point I am pretty much out of ideas to try, so if somebody has any experience in this field / experienced a similar issue before and can suggest something to try that would be much appreciated. Thank you in advance!