1 2 Previous Next 23 Replies Latest reply on Sep 2, 2018 10:44 PM by SananyaM_56

    CYUSB3302 does not enumerate on host PC


      I have a custom PCB that uses the CYUSB3302-68LTXC hub and follows the circuit specified in this app note: http://www.cypress.com/file/139481/download

      My schematic is attached.  The EEPROM (which was changed to a 24LC02) is pre-programmed with an image generated by the HX3 Blaster Plus tool.  All the settings are default except for the polarity swap on the US D+/D- pins. 


      The problem is that I don't receive any indication that the PC recognizes the hub.  Nothing shows up in Device Manager on my Windows 7 machine.  I also tried a different Windows 10 machine and received an error that the USB device failed to reset.  The suspend LED is turned off and the DS power switch is enabled is enabled so I assume that something is working.  I've also verified that the hub is reading the configuration from the EEPROM correctly. 


      Any suggestions would be appreciated. 

        • 1. Re: CYUSB3302 does not enumerate on host PC



          -Please try enumeration without swapping the polarity of US D+/D- pins. Could you explain why you are configuring it with the inverted polarity on the upstream port?

          -Please attach a screenshot of the device manager if you still get an error.


          Best Regards,


          • 2. Re: CYUSB3302 does not enumerate on host PC

            I have tried with both inverted and non-inverted polarity and the results are the same.

            It's probably worth noting that I only get the reset error when using a USB 3.0 cable.  I've also tried with USB 2.0 cables, including one with the polarity flipped in the cable itself.  When using a 2.0 cable, there is no indication that anything has been connected.


            The reason for the inverted polarity was to avoid using vias to cross the D+/D- traces.


            I don't have access to a Win10 machine at the moment, but I've attached a screenshot I found that had the same error. I'll post an update if I can find someone else with Windows 10. 

            • 3. Re: CYUSB3302 does not enumerate on host PC

              Hi Taylor,


              The polarities of D+ and D- are forbidden to be swapped. In addition, for the USB 2.0 part, the D+ and D- should match in 50 mil, 90-ohm impedance match.

              • 4. Re: CYUSB3302 does not enumerate on host PC

                If D+ and D- cannot be swapped, then why is it listed as an option in the configuration table in the datasheet, as seen in the attachment?

                Also I have tried physically swapping the wires in a USB cable in case the polarity swap was a problem and it made no difference. 


                As for the USB traces, they were laid out according to the specifications in AN91378.  62 mil PCB, 5.75-mil trace width and 12 mil spacing.  The D+ and D- trace lengths are matched within 28 mils. 

                • 5. Re: CYUSB3302 does not enumerate on host PC

                  Hi Taylor,

                  I believe yyca is referring to the USB 3.x specification where lane polarity inversion is supported only on the Super-Speed Rx signals (for the device and I’m pretty sure on the host too). So that you can swap the Super-Speed Receive pins (and Transmit pins, I believe) for direct routing. USB 2.0 lane swapping is not supported.


                  Your referring to a Cypress hub PORT_POLARITY feature which allows you swap the USB 2.0 signals. In your EEPROM, is PORT_POLARITY[4:0] equal to b’00001?

                  • 6. Re: CYUSB3302 does not enumerate on host PC

                    Hi Taylor,

                    This is a non Cypress question. I see in your schematic that your using the TPS2556. I'm fairly certain that the TPS2556 has an active low enable (Pin 4, PWR_EN). How do you ever get U5 to turn on?

                    • 7. Re: CYUSB3302 does not enumerate on host PC

                      Correct, I'm only referring to the D+ and D- of the USB 2.0 signals at the moment. I haven't done anything with the polarity of the SS signals.  

                      And I have tried setting PORT_POLARITY[4:0] to both 0x00 and 0x01.  No difference. 


                      To answer your question about the TPS2556, the enable pin of U5 is connected to the PWR_EN pin of the HX3 which is an open drain output.  So that pin should be pulled to ground when the HX3 enables it. 

                      • 8. Re: CYUSB3302 does not enumerate on host PC

                        Hi Taylor,

                        You state above that you use the 24LC02:

                        "EEPROM (which was changed to a 24LC02)"


                        Bute the HX3 datasheet make the statement below:

                        "HX3 reads configurations from an external I2C EEPROM with

                        sizes ranging from 16 to 64 KB"


                        I'm not intimate with the HX3 but I cannot find any mention that it supports 8 bit memory accesses over I2C. From the above HX3 datasheet statement, I would make the assumption that only 16 bit memory addressing for EEPROMs is supported.

                        • 9. Re: CYUSB3302 does not enumerate on host PC

                          Hi Taylor,


                          What I was talkig about is the inversion feature in USB3.0. You could refer to this KBA which I wrote.



                          As for your question, we have two suggestions below.

                          1. Please try to set the PMODE to interal ROM which lets the hub boot from interanl ROM. This could help us to check if it is the EEPROM problem.
                          2. Please explain what kind of USB cable you are using. Is it a standard one or vendor one? Please give us the pin assignment if you use a non-standard cable.
                          • 10. Re: CYUSB3302 does not enumerate on host PC

                            Yes, you are right. Thanks for your explanation.

                            • 11. Re: CYUSB3302 does not enumerate on host PC



                              From AN94150:

                              "The configuration data length can vary from 11 bytes to 197 bytes. The recommended EEPROM size is 256 bytes or more in this mode, and the recommended EEPROM type number is 24LC02B."


                              I believe the HX3 determines whether to use 8 or 16-bit addresses based on the slave address of the EEPROM.  For example, the 24LC128 would have it's A0 line pulled high and have a slave address of 0x51.  The address pins on any chips that use 8-bit addressing are disabled and would always have a slave address of 0x50.  The documentation doesn't say this explicitly, but I have inferred it from testing. 

                              • 12. Re: CYUSB3302 does not enumerate on host PC



                                I'll try to get the config mode switched, but I have probed the I2C lines and seen that the HX3 does pull the configuration from the EEPROM. 


                                As for USB cables, I have 3 that I've used for testing.

                                1) Standard USB 3.0 micro B. 

                                2) Standard USB 2.0 micro B. 

                                3) Non-standard USB 2.0 micro B with D+ and D- swapped. 

                                • 13. Re: CYUSB3302 does not enumerate on host PC

                                  Do you mean that the HUB could not enumerate even if you use a standard USB cable and set PMODE= interal ROM?

                                  When you do that, HX3 will not read data from EEPROM.

                                  • 14. Re: CYUSB3302 does not enumerate on host PC

                                    No, I haven't been able to test it with internal ROM config.  The board wasn't designed to allow the config mode to be changed so it will require some rework to change it. 


                                    I meant that when the config mode was set to I2C that I could scope the lines and see that the configuration was read successfully.  I've also read the contents of the EEPROM using a serial analyzer and verified that they are correct. 

                                    1 2 Previous Next