Я сделал интерфейс USB / CAN, используя FT2232H в режиме MPSSE (забудьте UART), MCP2515 и MCP2551. MCP2515 - это ключевой элемент, который вам здесь не хватает. Изучите хорошо, что это делает. Это фактический контроллер CAN, который выполняет кадрирование, ACK, генерацию и проверку контрольной суммы, фильтрацию сообщений и другие менее очевидные вещи, которые узел CAN должен делать по стандарту. Если вам нужен анализатор, MCP2515 имеет режим прослушивания, который гарантирует отсутствие передачи по шине. MCP2551 - это просто тупой адаптер физического уровня, похожий на MAX232 для RS-232 или ADM485 для RS-485.
Сейчас эта архитектура далека от совершенства, поскольку технология FTDI MPSSE практически не поддерживает прерывания (я полагаю, что она использует только массовые передачи USB за кулисами), поэтому мне приходится часто опрашивать контроллер на наличие новых сообщений. Это создает большую нагрузку на хост-контроллер USB, но, тем не менее, не гарантирует, что никакие сообщения не будут потеряны (MCP2515 может хранить до 2 полученных сообщений внутри, если вы включите «режим переполнения», только одно, если вы этого не сделаете). Гораздо лучшим решением был бы надлежащий микроконтроллер со встроенными периферийными устройствами CAN и USB, такими как STM32F105 (103 не может использовать USB и CAN одновременно). Посмотрите этот проект для рабочей реализации именно этой идеи. LPC18xx, предложенный Стивеном, тоже будет работать, но LPC17xx, вероятно, дешевле и его легче найти.