He creado una interfaz USB / CAN con FT2232H en modo MPSSE (olvidar UART), MCP2515 y MCP2551. MCP2515 es la pieza clave que te estás perdiendo aquí. Estudia bien lo que hace. Es el controlador CAN real el que realiza el encuadre, los ACK, la generación y verificación de la suma de comprobación, el filtrado de mensajes y otras cosas menos obvias que la norma requiere que haga un nodo CAN. Si desea un sniffer, el MCP2515 tiene un modo de solo escucha que garantiza que no haya transmisiones en el bus. MCP2551 es simplemente un adaptador de capa física tonto, similar a un MAX232 para RS-232 o ADM485 para RS-485.
Ahora, esta arquitectura dista mucho de ser perfecta, ya que la tecnología FTDI MPSSE prácticamente no admite interrupciones (creo que solo usa transferencias USB masivas entre bastidores), por lo que tengo que sondear el controlador con frecuencia para detectar nuevos mensajes. Esto supone una gran carga para el controlador host USB, pero no garantiza que no se pierdan mensajes (MCP2515 puede almacenar internamente hasta 2 mensajes recibidos si habilita el "modo de desbordamiento", solo uno si no lo hace). Una solución mucho mejor sería un microcontrolador adecuado con CAN integrado y periféricos USB como STM32F105 (103 no puede usar USB y CAN al mismo tiempo). Vea este proyecto para una implementación operativa de exactamente esta idea. LPC18xx como lo sugiere stevenh también funcionará, pero LPC17xx probablemente sea más barato y más fácil de encontrar.