Electronic – Weird problem with usb2422 and CP2108

cp2102raspberry piserial

I've have a system consisting of a Raspberry Pi Zero W, a usb2422 USB-hub, a CP2108 Uart-to-USB converter as well as another USB device (lets call it device 2, it doesn't matter which one I plug in).

Starting the circuit up, i have access to device 2, but not to the CP2108. In the dmesg kernel output of the raspberry I can't find any errors. It just does not recognize the CP2108.

After some debugging, I found it working. Following scheme is reproducable 100% (tried it about 10 times);

I found it working if I turn off power to the circuit and then turning it on again. After tuning it off, the 5V supply voltage of the Pi (where the 3V get generated from a switching converter at Pi) drops down to 1V immediately, then slowly further. If I turn the power on again before beeing lower than 20mV, the all devices work.

Following information gathered during debugging:

The CP2108 has a reset pin. When i have no access, resetting the device via this feature has no effect. I do not see any log of this event in the dmesg output. However, it disables the pullup on the data line, as it is supposed to do, as long as the reset is pulled.
When I have access to the device (measured quarz Voltage at startup), a reset causes the expected error message in kernel, seen at the dmesg output.

Plugging and unplugging device 2 always causes the expected kernel messages.

The usb2422 as well as device 2 are always visible to the Raspberry, no matter the state of the CP2108.

Additional info:
CP2108 and USB2422 are on 1 pcb, the design is my own. I can share it if you want.
device 2 is connected via a usb connector.
I posted it in this forum as the whole thing with measuring the quarz making it work pointing to a electrical mistake, but thats only a guess.

Thanks for any help!

(edited after further debugging findings)

Best Answer

The problem was an overseen fact in the datasheet. It says that he USB2422 MUST be reset after startup to work properly.

After implementing a reset after each startup, there were no problems anymore.