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.

TUSB2046B Design Issue

Other Parts Discussed in Thread: TUSB2046B, TPS2044A

Hello All

I have implemented a USB hub based on the reference design in the TUSB2046B datasheet. (Self-Powered, Individual Power Control.)

When I connect it to a Linux device (a Gumstix Overo Earth - similar to a BeagleBoard - TI OMAP devices) I receive error messages.

.
.
.
usb 1-1: new low speed USB device using musb_hdrx and address 78
usb 1-1: device descriptor read/64, error -71
usb 1-1: device descriptor read/64, error -71
usb 1-1: new low speed USB device using musb_hdrx and address 79
usb 1-1: device descriptor read/64, error -71
usb 1-1: device descriptor read/64, error -71
usb 1-1: new low speed USB device using musb_hdrx and address 80
usb 1-1: device not accepting address 80, error -71
usb 1-1: new low speed USB device using musb_hdrx and address 81
usb 1-1: device not accepting address 81, error -71
hub 1-0:1.0: unable to enumerate USB device on port 1

I can post  my schematics if needed. However, looking at these, I see that I have left the 'nReset' pin floating.

Due to my layout, I don't think I can easily connect this to a IO pin, however, I may be able to short it to the pin next to it which is connected to 3.3 V. Is this OK, or should it be pulled up via a resistor or does it really need to be connected to a IO pin?

Thank you in advance for you help.

Chithambaram Veerappan

 

  • Hello Chithambaram Veerappan,


    The TUSB2046B will not perform reliably without a proper power on reset.  The RESET/ pin cannot be directly connected to 3.3V, it needs to be driven by a reset controller or have an RC circuit (15K pullup and 1 uF capacitor) installed to ensure that the reset is held long enough.

     

    Regards,

    Julie Nirchi

  • Hello Julie Nirchi

    I suspected as much. I don't have any space to fit a RC circuit onto my already manufactured PCB. However I have a microcontroller near by on which I have brought out some unused IO pins. The microcontroller operates at 3.3 volts.

    Would it be sufficient to connect the one of these IO pins to the reset pin on the USB Hub chip and the use the microcontroller to drive the pin low for the required time?

     

    Regards

    Chithambaram

  • Hi Chithambaram,


    Yes, you can use an IO pin of a microcontroller to drive the reset of the device. 

     

    Julie

  • Hi Julie,

    I just had a question about the ~RESET pin on the TUSB2046B.  It says in the data sheet that this input  needs to be asserted at power up.  I am designing a circuit that doesn't need this power on reset feature so I would like to bypass this function with the least amount of cost.  I was going to pull-up this signal to 3.3V through an RC filter circuit to introduce the time delay and by your reading your reply post, it seems that this is possible.  You stated that a 15K resistor and 1uF capacitor is sufficient.  I just want to know the minimum/maximum time delay on this input needed for this ic to function properly.  Also, the data sheet states that "a reset with a pulse width between 100uS and 1ms is recommended after 3.3-V Vcc reaches its 90%".  I'm a bit confused as to whether this correlates to the "time delay" of the ~RESET signal or does this just show the user what reset signal is needed to properly use the reset feature (I'm leaning towards the latter)?  I'm planning to design my schematic using the RC circuitry you suggested but just wanted further clarification before I start on the layout.  Any feedback would be greatly appreciated!

     

    Regards,

    Roland Samson

  • Hi Roland,

    The power on reset is a device requirement, not really a feature.  The TUSB2046B requires a power on reset pulse of between 100 us to 1 ms.  If the recommended external RC circuit is installed (15K pull-up resistor and 1 uF cap) then the reset will be held low for somewhere within the 100 us to 1 ms range.  Anything less than 100 us is too short for the device and anything longer than 1 ms can interfere with USB enumeration (mainly an issue for embedded systems).  Does that answer your question?

    Regards,

    Julie

  • Hi Julie,

    Your response was exactly the confirmation I was looking for.  Thanks for your time and support!

    Regards,

    Roland

  • Hello Julie,

                    I have a Beaglebone Black board with ubuntu(3.8.13- kernel). I want to design the hub circuit with TUSB2046B Self-Powered Hub, Individual-Port Power-Management. I want to know, will it work with Beaglebone black board with ubuntu??  

    Regards,

    kishor

  • Hello Kishor,

            The TUSB2046B can fit. Any operating system (Microsoft, Linux, etc.) that has native USB stack support should include a HUB driver as part of that stack.  No special drivers are required to support the TUSB2046B  in those operating systems.

    Regards,

    Joel 

  • Hello Joel,          

             I am working with TUSB2046B  in Self-Powered Hub, Individual-Port Power Management mode. PWRON1bar-PWRON4bar is connected to EN1bar-EN4bar pins of TPS2044A. The o/p voltage at each PWRONbar pin is 3.28V. What should the output of the PWRONbar pin be?? There is no 5V getting to any of the USB Ports.What can be the problem..? Please help me to my problem. Thanking you.

    Regards,

    Kishor

  • Hello Kishor,

       The USB host controls the port power of a USB hub using the commands, these commands cause the TUSB2046B to assert(0-V) or deassert (Vcc) the PWRONz outputs. The power commands are sent during system power on / off, reboot, overcurrent condition, suspend and resume as needed.

    Can you check the status of the SUSPEND output and the OVRCUR input?
    Could you post your schematic for review?

    Regards.

  • Hello Joel,

                 SUSPEND pin is kept open and voltage at that pin is 0V.

                And the input voltage at  OVRCUR1 -OVRCUR4 pins is 3.29V. (All 4 OVRCUR pins).

               Here is my schematic attached. In that pin no- 27 and 31 is also connected to ground.3034.Sheet4.pdf

     Thanking you.

    Regards,

    Kishor

  • Hello Kishor,

         Are you using the correct frequency oscillator?

    The TUSB2046B specifies using a 6 MHz crystal. The recommendation is to use a 30-ppm crystal, it is acceptable to use a 50-ppm crystal with a load capacitance of 20pF.

    Regards.

  • Hello Joel,

                    I am using 6.000MHz 20pF 100ppm -55C +125C oscillator. I don't have much idea whether it is correct. I think its a recommended value. I am confused. Still not getting any voltages at USB ports.

    Regards,

    Kishor

  • Hello Kishor,

    Is the TUSB2046B being enumerated ?

    Could you provide some trace captures using a USB protocol analyzer between the host and the TUSB2046B?

    Regards.

  • Hello Joel,

            Sorry, I dont have USB protocol analyzer. Is my circuit diagram correct?? Is there any other way to find out  problem ??  Thanking you.

    Regards,

    Kishor


  • Hello Kishor,

    The schematic looks correct.

    Does the host enumerate the TUSB2046B properly?

    Regards.

  • Hello Joel,

              Thanks for reply. I connected USB hub to  my host PC with ubuntu 13.04 . It i s showing the following eroor. No device is connected to downstream port. Only hub is connected to host PC.Dmesg command gave error is as follows..            

                                  [23119.732194] usb 1-1.3: new low-speed USB device number 8 using ehci-pci
                                  [23119.804190] usb 1-1.3: device descriptor read/64, error -32
                                  [23119.980190] usb 1-1.3: device descriptor read/64, error -32
                                  [23120.156187] usb 1-1.3: new low-speed USB device number 9 using ehci-pci
                                  [23120.228185] usb 1-1.3: device descriptor read/64, error -32
                                  [23120.404188] usb 1-1.3: device descriptor read/64, error -32
                                  [23120.580182] usb 1-1.3: new low-speed USB device number 10 using ehci-pci
                                  [23120.988070] usb 1-1.3: device not accepting address 10, error -32
                                  [23121.060158] usb 1-1.3: new low-speed USB device number 11 using ehci-pci
                                  [23121.468068] usb 1-1.3: device not accepting address 11, error -32
                                  [23121.468198] hub 1-1:1.0: unable to enumerate USB device on port 3
                                  [23130.036268] usb 1-1.3: new low-speed USB device number 12 using ehci-pci
                                  [23130.108269] usb 1-1.3: device descriptor read/64, error -32
                                  [23130.284264] usb 1-1.3: device descriptor read/64, error -32
                                  [23130.460117] usb 1-1.3: new low-speed USB device number 13 using ehci-pci
                                  [23130.532262] usb 1-1.3: device descriptor read/64, error -32
                                  [23130.708260] usb 1-1.3: device descriptor read/64, error -32
                                  [23130.884255] usb 1-1.3: new low-speed USB device number 14 using ehci-pci
                                  [23131.292065] usb 1-1.3: device not accepting address 14, error -32
                                  [23131.364234] usb 1-1.3: new low-speed USB device number 15 using ehci-pci
                                  [23131.772066] usb 1-1.3: device not accepting address 15, error -32
                                  [23131.772234] hub 1-1:1.0: unable to enumerate USB device on port 3

             

    Is it software issue?? 

    Regards,

    Kishor

  • Hello Kishor,

    When the TUSB2046B is enumerated properly the dmesg command will show the following:

    usb 2-1.2: new full-speed USB device number 3 using ehci-pci
    usb 2-1.2: New USB device found, idVendor=0451, idProduct=2046
    usb 2-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    hub 2-1.2:1.0: USB hub found

    Could you take some scope captures of the power-up sequence measuring VCC, RESET, XTAL?

    Does the SUSPND pin remain low after connecting the hub to the USB host?

    Could you check whether the d+ and d- lines are connected correctly on the board?

    Regards.

  • Hello Joel,

                       I will check VCC,RESET and XTAL on oscilloscope.  About SUSPND pin, the status of SUSPND pin before connecting hub to the host pc is 3.30V and the status of SUSPND pin after connecting hub to host  pc remains 3.30V. D+ and D- line are connected correctly to the board.

    Regards,

    Kishor

     

  • Hello Joel,

                  I found the problem , d+ and d- was swapped in pcb layout. Thanks for your guidance. But still there is problems, after I connect hub to the host pc , dmesg giving the following errors,

          

    [ 1735.500385] hub 1-1:1.0: connect-debounce failed, port 3 disabled
    [ 1738.060376] hub 1-1:1.0: connect-debounce failed, port 3 disabled
    [ 1740.876342] hub 1-1:1.0: connect-debounce failed, port 3 disabled
    [ 1743.436328] hub 1-1:1.0: connect-debounce failed, port 3 disabled
    [ 1745.996307] hub 1-1:1.0: connect-debounce failed, port 3 disabled
    [ 1747.668172] usb 1-1.3: new full-speed USB device number 23 using ehci-pci
    [ 1747.760820] usb 1-1.3: New USB device found, idVendor=0451, idProduct=2046
    [ 1747.760825] usb 1-1.3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    [ 1747.761230] hub 1-1.3:1.0: USB hub found
    [ 1747.761402] hub 1-1.3:1.0: 4 ports detected
    [ 1747.861909] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.863776] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.865657] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.867503] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.871758] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.873630] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.875509] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.877508] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.881783] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.883651] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.885507] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.887378] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.891650] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.893506] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.895377] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.897255] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.901530] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.903402] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.905268] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.907128] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.911384] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.913254] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.915127] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.917004] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.921281] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.923140] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.925007] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.926879] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.931258] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.933128] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.935001] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.936878] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.941141] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.943027] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.944891] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.946753] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.951007] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.952881] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.954753] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.956631] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.960905] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.962776] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.964642] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.966529] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.970755] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.972630] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.974502] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.976380] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.980654] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.982526] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.984382] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.986252] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.989630] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.991501] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.993379] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.995252] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1747.999517] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.001404] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.003254] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.005133] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.009381] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.011251] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.013127] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.015001] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.019279] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.021134] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.023002] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.024906] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.029255] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.031126] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.033003] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.034876] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.039155] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.041006] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.042879] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.044755] hub 1-1.3:1.0: hub_port_status failed (err = -32)
    [ 1748.045128] usb 1-1.3: USB disconnect, device number 23
    [ 1749.044170] usb 1-1.3: new full-speed USB device number 24 using ehci-pci
    [ 1749.136815] usb 1-1.3: New USB device found, idVendor=0451, idProduct=2046
    [ 1749.136819] usb 1-1.3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    [ 1749.137209] hub 1-1.3:1.0: USB hub found
    [ 1749.137397] hub 1-1.3:1.0: 4 ports detected
    [ 1755.796274] usb 1-1.3: reset full-speed USB device number 24 using ehci-pci
    [ 1759.636228] usb 1-1.3: reset full-speed USB device number 24 using ehci-pci

    What can be the problem???

    Regards,

    Kishor

  • Hello Joel,

                      Now usb hub is working properly.

              Problem 1-   Wrong values of resistor and capacitor in  RESET circuit.

              Problem 2-  D= and D- were swapped.

              Problem 3-  Wrong values of pullup resistor at outputs of OCn bar.

    Thank you for your valuable guidance.   :)

    Regards,

    Kishor