2015-02-06 04:32 AM
I've got a STM32F405 using a Microchip USB3300 PHY set up to run as a HS HID USB device. The device gets MOST of the way through enumeration. However, when the host queries for the report descriptor, the device fails to respond. I have set a breakpoint and can verify that the device recognizes the request, and the request is correct. but it simply never returns the report descriptor. I have disabled any other interrupts to ensure they aren't causing the problem.
This same code executes fine on the STM32F427. As in: I don't even bother changing the target micro, I just run the same project built for the '405 on the '427, and it works fine. #stm32-usb-device2015-02-13 11:32 AM
This is looking more and more like a DMA issue. Are there some differences in the DMA between the '427 and '405 that I'm missing? Seems ST only exposes the address registers of the HS DMA (which in my case is correct), so I'm not finding any strange DMA faults or error flags.
2015-02-20 04:12 AM
Update: I reached out to my ST FAE, who immediately replied with the solution to this issue (In case anyone comes across this while searching): it turns out that while the HS USB DMA has access to both FLASH and RAM memory locations in the '427, it ONLY has access to RAM locations in the '405. I was storing the Report Descriptor in FLASH to save on limited RAM in an earlier design. Now, I copy it from FLASH to RAM when needed, and the Report Descriptor is transmitted as expected.
2015-02-20 05:24 AM
Hi Joshua,
Thanks for sharing your case with other forum users.Please note that your conclusion is already documented in RM0090: refer to figures 1 & 2 in the reference manual to see the difference between system architecture of both devices.-Mayla-To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.