Electrical – Chaining Multiple USB Hub Controllers for Serial Interfacing

serialserial-bususbusb deviceusb-host

I have a need for a large amount of serial I/O from a desktop computer in a robotics application. I considered using all off the shelf parts with a large set of USB hubs and usb to serial adapters, but off the shelf solutions were too large.

I need about 26ish, maybe more channels running anywhere from 9600 to 115200baud. To fit in the tight space I was considering getting some USB hub controllers, and putting them on a circuit board with the usb to serial ASICs.

The host computer is a mini itx intel based machine.

My current concept involves this 4 channel USB 3 hub controller:
4 Port USB 3 Hub
And several 7 port USB 2 hub chips:
7 Port USB 2 Hub
concept
The 7 port hubs would be connected to the super speed 4 port hub ports, thus giving all the USB endpoints I need. The USB to serial ASICs (FTDI or similar product) would be directly connected to each 7 port hub controller port. I know that FTDI for instance offers multi channel usb to serial devices, but I don't know if each USB channel enumerates as a separate device in linux (as in a seperate /dev/usbttyx device)

My questions is, how difficult is this hardware to implement? I've done some differential signal design before, but never USB speed fast. I was also considering having separate control of the power to each hub controller so they could be separately reset if needed.

Are there any traps I need to watch out for specific to working with these USB chips? This will be my first board design that has USB on it.

Thanks!

Best Answer

Not really an answer, I just can't comment...

Did you evaluate the option to use simple Arduino/AVR? With Atmega128 TQFP64 you should be able to get 26ish software serials, the hardware UARTs can go as fast as 2Mbps (to connect to PC host), Atmega128 has 2.

There is also STM32F103 series ARM with 72MHz clock.

On the PC host side, if you really need 26 separate COMs, there is possibility to use virtual COM ports...some software will be needed to "aggregate" data of these 26 ports into real 1. Or edit your PC software. Creating some custom protocol (similar to Modbus) to address each serial port shouldn't be hard. Same on MCU side.