Tôi đã tạo giao diện USB / CAN bằng FT2232H ở chế độ MPSSE (quên UART), MCP2515 và MCP2551. MCP2515 là phần quan trọng bạn đang thiếu ở đây. Nghiên cứu tốt những gì nó làm. Đó là bộ điều khiển CAN thực tế đóng khung, ACK, tạo và kiểm tra tổng kiểm tra, lọc thông báo và những thứ ít rõ ràng hơn mà một nút CAN bắt buộc phải làm theo tiêu chuẩn. Nếu bạn muốn một sniffer, MCP2515 có chế độ chỉ nghe đảm bảo không truyền trên xe buýt. MCP2551 chỉ đơn giản là một bộ chuyển đổi lớp vật lý câm, tương tự như MAX 232 cho RS-232 hoặc ADM485 cho RS-485.
Bây giờ kiến trúc này không hoàn hảo vì công nghệ FTDI MPSSE về cơ bản không hỗ trợ ngắt (tôi tin rằng nó chỉ sử dụng chuyển số lượng lớn USB phía sau hậu trường), vì vậy tôi phải thăm dò bộ điều khiển thường xuyên cho các tin nhắn mới. Điều này đặt rất nhiều tải lên bộ điều khiển máy chủ USB nhưng vẫn không đảm bảo rằng không có tin nhắn nào bị mất (MCP2515 có thể lưu trữ tối đa 2 tin nhắn nhận được bên trong nếu bạn bật "chế độ tràn", chỉ một nếu bạn không). Một giải pháp tốt hơn nhiều sẽ là một bộ vi điều khiển thích hợp với các thiết bị ngoại vi CAN và USB tích hợp như STM32F105 (103 không thể sử dụng USB và CAN cùng một lúc). Xem dự án này để thực hiện chính xác ý tưởng này. LPC18xx theo đề xuất của stevenh cũng sẽ hoạt động, nhưng LPC17xx có lẽ rẻ hơn và dễ tìm hơn.