回答:
それはできますが、CANバスで取得できるのは、CAN電圧レベルを使用したUARTです。バス上のCANデバイスと通信する場合は、MCP2551にCANプロトコルメッセージを提供する必要があります。リスニングについても同様です。CANメッセージはUART形式とは非常に異なるため、UARTはメッセージの処理方法を知りません。常に少なくともフレームエラーが発生し、メッセージの内容に到達することはありません。
この画像は、CANメッセージの構造を示しています。
CANインターフェースを備えたマイクロコントローラがたくさんあり、トランシーバはありません。MCP2551が設計されたのはこれらのためです。過去に、4つのCANインターフェイスを備えたNXP LPC2294を使用しました。CANバスに接続するには、それぞれにMCP2551が必要です。NXPの最新のコントローラーにはLPC1800ファミリーが含まれ、そのすべてのメンバーがCANをサポートしています。
MPSSEモードのFT2232H(UARTを忘れてください)、MCP2515およびMCP2551 を使用してUSB / CANインターフェイスを作成しました。MCP2515は、ここで不足している重要な要素です。それが何をするかをよく研究してください。フレーミング、ACK、チェックサムの生成と検証、メッセージのフィルタリングなど、CANノードが標準で行う必要のあるあまり明らかでないことを行うのは、実際のCANコントローラーです。スニファーが必要な場合、MCP2515にはリッスンオンリーモードがあり、バスでの送信を保証しません。MCP2551は、RS-232の場合はMAX232、RS-485の場合はADM485に類似した単純な物理層アダプターです。
FTDI MPSSEテクノロジーは本質的に割り込みをサポートしていないため(このようなアーキテクチャは舞台裏でバルクUSB転送のみを使用していると思われるため)、このアーキテクチャは完全とは言えません。これにより、USBホストコントローラーに多くの負荷がかかりますが、メッセージが失われないことは保証されません(「オーバーフローモード」を有効にすると、MCP2515は最大2つの受信メッセージを内部に保存できます。はるかに優れたソリューションは、組み込みのCANおよびSTM32F105などのUSB周辺機器を備えた適切なマイクロコントローラーです(103はUSBとCANを同時に使用できません)。このアイデアの実際の実装については、このプロジェクトを参照してください。stevenhが提案するLPC18xxも機能しますが、LPC17xxはおそらくより安価で見つけやすいでしょう。
質問を理解しているように、既存のCANバスを聴きたいので、UARTをまったく使用できません。CANとUARTのシガリングはまったく異なります。
理論的には、MCP2551からのCAN受信ラインを見て、CANトラフィックをデコードできます。それは簡単ではありませんが、理論的には可能です。専用のCANハードウェアがなければ、CANビットレートよりも数倍速くサンプリングし、後でそのビットストリームをソフトウェアでデコードする必要があります。250 kbit / s CANをデコードするには、おそらく約1 Mbit / sで記録する必要があります。
マイクロコントローラーを使用する方がはるかに簡単です。PIC 18F2580および他の同様のプロセッサには、CAN周辺機器が組み込まれています。ハードウェアはすべてのビットレベルのデコードを行い、CANフレーム全体を受信します。プロセッサは、受信したCANフレームをUART経由でPCに送信できます。