cancel
Showing results for 
Search instead for 
Did you mean: 

USB Hosts Hubs Transceivers

New Contributor

Dear Cypress,

I am currently using the CY7C65634-28 in a design for an interfacing device. I am having trouble configuring the device properly for my use case and thus I'd like to know if there perhaps is a mistake I've made. I have attached the schematic and I will elaborate on some of the decisions I've made below.

The problem is two fold:

1. I have selected this chip because it allowed for programming of the maximum power draw in EEPROM. I will be powering an external camera with this PCB (200 mA, worst-case) and I have connected an FT2232 chip to interface with it to the hub. When I connect the hub to OSX or Windows a popup appears that the FTDI chip requires more power than is provided. (confirming that it is found, which means the hub sort of does its job, however there is a power problem)

I figured these problems would go away once I configure the hub EEPROM properly to set the requested power to FA (500 mA), as per the datasheet.

2. I'm using the Blaster program to configure the EEPROM. I have installed the driver and the device is found and in the titlebar of Blaster it shows Cypress HX2VL (Multi-TT) DVK VID:0x04B4 PID:0x6570. Seems good, however I can not for the life of me figure out how to program it. I have loaded the supplied 4port_HX2VL file, modified the PID and number of ports to match. When I press Erase EEPROM it confirms the operation, (EEPROM properly detected?), when I hit Write to EEPROM the screen halts for a second and no popup appears. When I press Read from EEPROM its always invalid, making me believe I'm not writing to it correctly...

Cypress_Screenshot.PNG

POWER

The power (3v3) is created by an external regulator connected to the 5V pin of the upstreamUSB.

OSCILLATOR

I have connected a 12 MHz crystal (ECS-120-8-33-JGN-TR) to the XIN and XOUT pins.

RESET#

Pulled up with a 10k resistor.

SELFPWR

This one I'm quite unsure about, but I guessed it should be bus-powered given that it is requesting power from the upstream USB. (Note that the 5V USB pin is connected to a regulator that turns it to 3V7 (used for the camera) and 3V3, used for the Hub and FTDI chip. On a previous version of the board (without the hub) I have confirmed the power draw of all these devices to be well within limits of the 500 mA.

GANG

Pulled down with a 100k resistor, per datasheet for 'Individual Mode'.

I2C
Pins are connected directly to SDA and SCL of the M24C02 EEPROM. I did not put any pull ups on it since it seems that these pins are dual use, should I have? The WC# pin of the EEPROM is left floating, which according to the datasheet allows for write operations. The ADDRESS is 1010000 RW.

Is there anyone who knows what I might have messed up?

0 Likes
Reply
1 Solution
Moderator
Moderator

Hello,

For the schematics, please ensure the following-

-The I2C SCL and SDA lines should have pull ups of 2.2K present on them for HX2VL to detect the EEPROM and boot properly.

-It is recommended to have pull ups of 10K on the OVR pins since those are input pins.

-The Reset pin should have a minimum delay of 10 ms using an RC circuit.

-Your crystal should have a drive level that matches the power dissipation on your board. Please refer to section 3.2.1 in the App Note for more details on the calculation.

1. You are powering the hub from the upstream connector VBUS so it is bus-powered. In a bus-powered configuration, HX2VL cant draw more than 500 mA and each device on the downstream port should not draw more than 100 mA. Since you are declaring 200 mA on your FTDI device, you are getting the popup on the host. Please refer to the KBA.

2. I think the EEPROM is not getting detected properly and hence the utility is not able to read or write to it even though it might be able to successfully erase. Please try this step after modifying he schematics as per our recommendations above. Please attach a screenshot of the errors that you get in case it still fails for read and write.

Best Regards,

Sananya

View solution in original post

0 Likes
Reply
4 Replies
Moderator
Moderator

Hello,

For the schematics, please ensure the following-

-The I2C SCL and SDA lines should have pull ups of 2.2K present on them for HX2VL to detect the EEPROM and boot properly.

-It is recommended to have pull ups of 10K on the OVR pins since those are input pins.

-The Reset pin should have a minimum delay of 10 ms using an RC circuit.

-Your crystal should have a drive level that matches the power dissipation on your board. Please refer to section 3.2.1 in the App Note for more details on the calculation.

1. You are powering the hub from the upstream connector VBUS so it is bus-powered. In a bus-powered configuration, HX2VL cant draw more than 500 mA and each device on the downstream port should not draw more than 100 mA. Since you are declaring 200 mA on your FTDI device, you are getting the popup on the host. Please refer to the KBA.

2. I think the EEPROM is not getting detected properly and hence the utility is not able to read or write to it even though it might be able to successfully erase. Please try this step after modifying he schematics as per our recommendations above. Please attach a screenshot of the errors that you get in case it still fails for read and write.

Best Regards,

Sananya

View solution in original post

0 Likes
Reply
New Contributor

Dear Sananya,

Thanks for the information, I managed to program the EEPROM after installing the pullup on the SDA line. (Note that placing one on the SCL line forces it into test mode and causes it to not be detected at all). My power issues however still do not seem fixed.

I have confirmed that the board requests more than 100 mA from the computer by drawing some power from the board (>100 mA, using a resistor) and using one of those USB power monitors to confirm that more than 100 mA can be drawn successfully. So that is a partial success.

However it still seems that some devices such as an Arduino and the FTDI chip on the board do not seem to work because they 'request too much power' eventhough there is plenty available, making me believe its a software/communication issue. Per the FTDI datasheet the default configuration should request 100 mA from the hub, which should not cause any problems...

There is one random dev board that for some reason does seem to work (also an FTDI chip). I have looked at its EEPROM and it seems that it is configured as bus-powered with a maximum of 100 mA. Removing the EEPROM and letting it default makes it cause the same errors. So there is something about specifically stating the device is bus-powered with 100 mA that causes it to work, however not quite the universal solution and I believe there must be something wrong on the hub end. (given that I can't even connect a standard Arduino Leonardo)

The Windows (7) popup I get is:

"USB Hub Power Exceeded, the hub does not have enough power available to operate the USB composite device." Looking at the composite device in device manager shows that the device cannot start (code 10)

On OSX it states the device requested more power than available and thus should be connected to the Mac directly.

I have been at this for a couple of hours, I have tried pulling up the OVR pins as you stated, but that didn't seem to have any effect. Furthermore when I measure them they are nicely 3.3V so they are not causing the problem.

Using LSUSB -v on OSX I find the following:

HX2VL Hub (Four port):

          Product ID: 0x6570

          Vendor ID: 0x04b4  (Cypress Semiconductor)

          Version: 32.99

          Serial Number: 000000000000

          Speed: Up to 480 Mb/s

          Manufacturer: Cypress Semiconductor

          Location ID: 0x14200000 / 6

          Current Available (mA): 500

          Current Required (mA): 500

          Extra Operating Current (mA): 0

            Dual RS232-HS:

              Product ID: 0x6010

              Vendor ID: 0x0403  (Future Technology Devices International Limited)

              Version: 7.00

              Speed: Up to 480 Mb/s

              Manufacturer: FTDI

              Location ID: 0x14220000 / 10

              Current Available (mA): 500

              Extra Operating Current (mA): 0

            USB <-> Serial Converter:

              Product ID: 0x6011

              Vendor ID: 0x0403  (Future Technology Devices International Limited)

              Version: 8.00

              Serial Number: FT2PSAF2

              Speed: Up to 480 Mb/s

              Manufacturer: FTDI

              Location ID: 0x14210000 / 4

              Current Available (mA): 500

              Current Required (mA): 100

              Extra Operating Current (mA): 0

The device that doesnt work is the Dual RS232-HS and the device that DOES work is the USB <-> Serial Converter. Main difference here seems to be the fact that the second one specifically states it needs 100 mA, whilst the previous one does not. The Arduino also does not specifically request a current, thus is there some default setting that is off? (I thought that in USB2.0 if nothing is requested it defaults to 100)

The end Goal

Perhaps I should explain why I have configured the device the way it is.

I picked the Cypress HUB since it had an option to program the requested power. I need the entire PCB to be supplied with approx 250-300 mA. Thus I let the Cypress hub request a maximum of 500 so that everything on the board is powered. I want the entire board powered off of the USB connector.

Some of the power goes to the external camera (not a USB device) and some will go to the hub and the FTDI communication chip. None of these should be formally requesting more than 100 mA since the FTDI chip doesn't need it and the camera isnt a USB device.

One thing I considered is running it in self-powered mode, but then I suppose the HUB no longer requests 500 mA from the host and there will not be enough power, or is this a false analogy?

0 Likes
Reply
Moderator
Moderator

Hello,

Yes, you're right SCL should be pulled low to avoid Test mode. If the board is able to get more than 100mA, it means you're able to read EEPROM configuration settings correctly and get upto 500mA for the hub. The HX2VL design is such that if you have it in bus-powered mode, you cant have a downstream device connected which requests more than 100mA. This declaration is done in the Configuration Descriptor of the device and host will show the popup if that value exceeds 100mA. So even if you have only one device connected, and hub has maximum power set to 500mA, the device wont be able to enumerate properly if it has requested more than 100mA even though it may actually need a lower value.

The way to overcome this is by setting the hub to self-powered mode as you said. In this case, the devices can request for upto 500mA each since they wont be deriving the power from the host but the external power supply. You could also keep the hub powered from the host but have the SELFPWR pin pulled high so that the host thinks it is self-powered and allows a downstream device to request and draw more than 100mA. However, this could cause compliance failures and there is no fault protection as well.

Best Regards,

Sananya

0 Likes
Reply
New Contributor

I'd like to reply one more time just so somebody finding this in the future finds the answer.

By having the FTDI formally request 100 mA the problem is solved. However I still do not understand why the default (no specific power requested) does not work...

So in short:

- Put a pullup on the SDA line.

- Configure the device to formally request 100 mA.

0 Likes
Reply