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.

Interfacing Microcontroller with USB Hub

Hi,

I am currently using a microcontroller to emulate a USB hub for three devices (i.e. - the raw data is processed and transferred on three unique endpoints within the microcontroller), which shows up to the PC as a Composite USB device.  Because of timing issues, I am considering breaking out one of these devices, a trackball, and running it directly into a USB hub instead of processing the data through the uC.  The other two devices would then be transmitted together from the uC through the USB hub on a second channel.  My question is whether this configuration will work and if all three devices will be properly recognized by the host as a single composite device, assuming I set up the USB hub with the correct registers.  My assumption is that the uC will be acting like a downstream USB hub, which from what I can tell is acceptable, but I would like to be sure.  (I also don't know if this will improve the timing issues that I am having, but it's worth considering!)

Thanks in advance,

Brandon

  • Brandon,

    Since the MCU and the trackball are on different ports of the discrete hub, they will show up as separate devices per the USB spec - each port of a hub is handled separately by the host and OS.

    Are you sure the MCU currently shows up as a hub or just as a composite device?  

    Per the USB spec

    • a composite device is a single USB device with multiple interfaces - a typical webcam is an example where there is a video and audio interface
    • A hub is a simple bus "splitter" and "repeater" with one upstream connection and multiple downstream connections
    • A compound device is a device that has a hub with one or more available downstream ports and one or more integrated "peripherals"  Many keybboards are examples of this where they have available hub ports as well as the KB itself.

    For a composite device, the host only assigns a single address.  For a standard hub, the host assigns a single address.  For a compound device, multiple address are assigned - one for the hub and one for each of the integrated peripherals.

  • Thanks DHarmon,

    I am fairly new to USB, so I apologize for my incorrect verbage.  You are correct that the MCU is acting as a composite device and not as a hub.  So, if I understand correctly, integrating the hub IC as the first stage in my design would result in the host seeing two devices on the hub: 1. the trackball, and 2. a composite device made up of two interfaces.  That should clear up any potential delays in the trackball-to-host reporting and minimize the reprogramming that I need to do in the MCU.

    Thanks for the help on this.

    Brandon