Saya telah membuat antarmuka USB / CAN menggunakan FT2232H dalam mode MPSSE (lupa UART), MCP2515 dan MCP2551. MCP2515 adalah bagian kunci yang Anda lewatkan di sini. Pelajarilah dengan baik apa yang dilakukannya. Ini adalah pengontrol CAN yang sebenarnya yang melakukan pembingkaian, ACK, pembuatan checksum dan verifikasi, pemfilteran pesan dan hal-hal lain yang kurang jelas yang harus dilakukan oleh node CAN oleh standar. Jika Anda menginginkan sniffer, MCP2515 memiliki mode hanya mendengarkan yang tidak menjamin transmisi di bus. MCP2551 hanyalah sebuah adaptor lapisan fisik yang bodoh, mirip dengan MAX232 untuk RS-232 atau ADM485 untuk RS-485.
Sekarang arsitektur ini jauh dari sempurna karena teknologi FTDI MPSSE pada dasarnya tidak memiliki dukungan untuk interupsi (saya percaya ini hanya menggunakan transfer USB massal di belakang layar), jadi saya harus sering polling controller untuk pesan baru. Ini menempatkan banyak beban pada pengontrol host USB tetapi masih tidak menjamin bahwa tidak ada pesan yang hilang (MCP2515 dapat menyimpan hingga 2 pesan yang diterima secara internal jika Anda mengaktifkan "mode overflow", hanya satu jika Anda tidak). Solusi yang jauh lebih baik adalah mikrokontroler yang tepat dengan builtin CAN dan periferal USB seperti STM32F105 (103 tidak dapat menggunakan USB dan CAN pada saat yang sama). Lihat proyek ini untuk implementasi yang tepat dari ide ini. LPC18xx seperti yang disarankan oleh stevenh akan bekerja juga, tetapi LPC17xx mungkin lebih murah dan lebih mudah ditemukan.