Три отдельных платы, каждая со своим МК соответственно. Если на IN использовать endpoint 3 с максимальным размером без разделения в 512 байт, то запросы пакетов должны быть не реже, чем раз в 6 мс для каждого из двух устройств.
А ещё, не подскажите программы для отображения принимаемой информации? Сейчас использую Jungo WinDriver, в нём получаю драйвер, а также можно посмотреть, что принимается.
В приведенных к МК примерах этот режим реализован в TestPanel, он, вроде как, предполагает работу по запросу от хоста, но с гарантированным временем задержки (до 1 мс в full speed), которое прописано в дескрипторе endpoint.
Как я понял HID, MSD и т.д. это стандартные классы устройств, а режимы работы USB это Bulk, Interrupt и Isochronus. Использование стандартных классов позволяет избежать необходимости в самостоятельном написании драйверов.