2014-09-02 05:16 AM
EDIT: Disregard. I was missing a breakpoint on USBD_RESET; my host is indeed trying to reset my device.
I've got a USB HS device based on the STM4 I am attempting to transfer some data using several back-to-back calls to the USBD_HID_SendReport function from the USB Device library on EP1. The issue I am seeing is that when sending the first report, the device status of my device gets changed from USB_OTG_CONFIGURED (value of 3) to USB_OTG_DEFAULT (value of 1). My host then sees the device is not configured, and tries to re-enumerate it all over again. I am able to pinpoint the location of where this happens to here:/* EP enable, IN data in FIFO */<
br
> depctl.b.cnak = 1;<
br
> depctl.b.epena = 1;<
br
> USB_OTG_WRITE_REG32(&pdev->regs.INEP_REGS[ep->num]->DIEPCTL, depctl.d32);
After I execute the next line, I can see the device_status value change to 1. However, there are no calls or anything that should be performing this. I set breakpoints in the three locations device_status is set to 1, and it never hits any of these. Further, if I single-step through the assembler code, this does not happen: the device stays at device_status = 3.
Anyone have any ideas?
#stm32-usb-hs