CYUSB3302 does not enumerate on host PC

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
Anonymous
Not applicable

Hello,

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. 

0 Likes
1 Solution
Sananya_14
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello,

-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,

Sananya

View solution in original post

0 Likes
23 Replies
Sananya_14
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello,

-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,

Sananya

0 Likes
lock attach
Attachments are accessible only for community members.
Anonymous
Not applicable

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. 

0 Likes
YangyangC_06
Employee
Employee
750 replies posted 500 replies posted 250 replies posted

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.

0 Likes
lock attach
Attachments are accessible only for community members.
Anonymous
Not applicable

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. 

0 Likes

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?

0 Likes

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?

0 Likes
Anonymous
Not applicable

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. 

0 Likes

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.

0 Likes
Anonymous
Not applicable

user_973483,

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. 

0 Likes

Yes, you are right. Thanks for your explanation.

0 Likes

Hi Taylor,

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

https://community.cypress.com/docs/DOC-10504

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.
0 Likes
Anonymous
Not applicable

yyca,

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. 

0 Likes

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.

0 Likes
Anonymous
Not applicable

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. 

0 Likes

Just for completeness sake, can you show us the portion of the schematic on how you wired up the USB connectors and the EPAD?

0 Likes
lock attach
Attachments are accessible only for community members.
Anonymous
Not applicable

Upstream connector schematic is attached.  Should be the same as shown in AN94150. 

0 Likes

Your connector looks fine but did you follow the specification for the PCB pattern for the EPAD and is it connected to GND?

0 Likes

And if the HX3's EPAD is connected to GND with vias, how many vias did you use?

0 Likes
Anonymous
Not applicable

Ah sorry, I didn't realize what you meant by EPAD at first.  But yes, the exposed pad is connected to a ground plane through an array of 24 vias. 

Is there a specification regarding the ground pad?  I don't recall seeing one in any of the documentation. 

0 Likes

Cypress doesn't give a footprint but they do give the dimensions of the pad in Figure 18 of the datasheet (Document Number: 001-73643). Hmm. I'm running out of ideas.

0 Likes
Sananya_14
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hi Taylor,

Could you attach the USB traces when you get the "Port reset" error? Also, please try uninstalling the device in the device manager and binding it to proper driver if the error occurs.

Best Regards,

Sananya

0 Likes
Anonymous
Not applicable

Hi Sananya,

Could you clarify what you mean by USB traces?  The physical traces on the PCB, or the signals on a scope, or something else?

Also when the port reset error occurs, I can't bind the device to the proper driver.  The driver update fails and reverts back to the reset error message. 

0 Likes
Sananya_14
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hi Taylor,

I meant the USB traffic captured between the hub and the host with any USB protocol analyzer so that we can check the sequence of events leading to the error.

Best Regards,

Sananya

0 Likes