Hi, I have encountered a strange problem with the USB Driver using TI DSP/BIOS CSL libraries running on TI C5509A DSP.
The USB ISR occasionally will be stuck in a perpetual loop handling the USB_EVENT_RESUME event when the USB cable is NOT plugged in to the host.
Here are some more information about the problem:
1) Electrical interface is standard high speed mode with 3.3V over Rpu = 1.5K on the USB D+ line
2) The USB driver layer is setup using TI DSP/BIOS CSLs following the reference code in CSL design guide.
3) If the USB interface is not terminated (i.e. one end of the USB cable connected to USB lines on DSP and the other end loose), occasionally the USB driver will receive a USB_EVENT_RESUME
Event and it will cause the USB ISR handler to enter perpetual loop (enter isr, handle RESUME event, exist isr, enter isr, handle RESUME event, … etc)
The first line of code in ISR is to get events from end points and this should be sufficient to clear ALL pending events from these end points.
USB_EVENT_MASK USB_ctl_events;
USB_ctl_events = (USB_getEvents(hEp0Out) | USB_getEvents(hEp0In));
hEp0Out and hEp0In are handles for 2 Control end points on USB0.
The event returned is 8 (USB_EVENT_RESUME)
4) When DSP is in this USB ISR perpetual loop, if the loose end of the USB cable are plugged in to the host, sub-sequence USB reset due to cable connection will clear this perpetual loop and DSP will behave normally from that point on.
Has anyone seen or heard similar issues ?