This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

EK-TM4C123GXL: USB Library

Part Number: EK-TM4C123GXL

I came across how the USB library implements the RESUME (remote wake up signaling) feature to be in complaince with USB 2.0 specs (in device mode) and I am puzzled to discover that in "USBDeviceResumeTickHandler()" the function times the signaling based on received SOF packets (in interrupt context) - how could a device signal resume (remote wake up) and receive SOF packets from host (to use as time base for timing the signaling) on the same bus at the same time? also why the remote wake up (resume signaling by USB device) if device receives SOF from host on the USB bus. please explain I might be missing a peice of information here or there. Thank you very much for help.

  • Hi,

    When a USB device enters the suspend state, it still maintains its internal status and also provides power to its D+ or D- pull-up resistors.  When it receives a resume signal from the host on the USB bus, it does not need to go through the enumeration process again. Please note that resume signal on the USB bus can be sent by the host or the device. Your question is not specific to a particular MCU but rather a generic USB spec on how Suspend/Resume should work. I will suggest you go through USB spec which you can download from usb.org.

    You can also refer to the USB library user's guide for details on Suspend and Resume. https://www.ti.com/lit/pdf/spmu297

  • Thank you very much for your reply. I was not clear enough. The host or device can signal resume as you kindly stated- furthermore, they do so according to specified timing (USB 2.0 specs) . why or (how come) the device still receives SOF packets from host (and hence register SOF interrupts on the device) when the device is driving resume signal on a bus that is also signalling SOF from host (if one looks at how "USBDeviceResumeTickHandler()" is implemented in the library will immediately see that the routine makes use of the SOF interrupt that is triggered by receiving SOF packets from host - the routine uses the 1ms period to time how long the resume signaling (by the device) should last on the bus). there must be a contradiction or explanation to this: a device can drive remote wak up signal (the resume signal) on the USB bus when it wishes to get out of suspend on its own (provided that feature was previously enabled on it during enumeration by the host). a suspended segment of the bus can not see SOF signal or other activity - otherwise the device won't need remote wake up to end suspend or wake the host. in short, I am zooming to the question of how we can time resume signaling (by the device) and time that signaling using the SOF sent by host (I am making this statement based on how this feature implemented in the library in "USBDeviceResumeTickHandler()" in file "usbdenum.c" . Thank again for your help.