MCP2551はUART-CANコンバーターですか?


12

コンピューターを使用して、250 kbit / sのCANバススニファーを作成します。いくつかの調査の結果、MCP2551はCANの物理層の電圧レベルレギュレーターの一種であることがわかりました。それを念頭に置いて、このセットアップが機能するかどうか疑問に思っています。通信の一部ではなく、自動化されたテスト目的で交換されたメッセージを記録したいだけです。

PC <-> USB-UART(おそらくCP2102、既に持っているので)<-> MCP2551 <-> CANバス

そうでない場合、私をバスに参加させるためにMCP2551に入力する必要があるのはどのような信号ですか?

回答:


14

それはできますが、CANバスで取得できるのは、CAN電圧レベルを使用したUARTです。バス上のCANデバイスと通信する場合は、MCP2551にCANプロトコルメッセージを提供する必要があります。リスニングについても同様です。CANメッセージはUART形式とは非常に異なるため、UARTはメッセージの処理方法を知りません。常に少なくともフレームエラーが発生し、メッセージの内容に到達することはありません。
この画像は、CANメッセージの構造を示しています。

ここに画像の説明を入力してください

CANインターフェースを備えたマイクロコントローラがたくさんあり、トランシーバはありません。MCP2551が設計されたのはこれらのためです。過去に、4つのCANインターフェイスを備えたNXP LPC2294を使用しました。CANバスに接続するには、それぞれにMCP2551が必要です。NXPの最新のコントローラーにはLPC1800ファミリーが含まれ、そのすべてのメンバーがCANをサポートしています。


UARTのスタート/ストップビットと、おそらくいくつかのCAN「スタート/トップビット」の状況を完全に忘れていました。私はおそらくMCP2551に送信してしまいますGPIOとしてFTDIを使用してPC上のCANスタックを使用して解決策を見つけることを試みるだろう
rnunes

3
@rnunes-開始/停止ビットだけではありません。これらがなければ、UART伝送は8ビットバイトになります。CANメッセージは、アドレス指定、優先度、およびエラーチェックにより、はるかに複雑です。2つを比較することはできません。
-stevenvh

しかし、FTDIを使用すると、UARTのようにバイト単位ではなく、ビット単位で動作します(基本的には、非常に高速なUSB <-> GPIOです)。私はすでにそれらのCAN MCUを探していますが、今のところお金を使うことを望みます(それは学生の趣味のプロジェクトです)、そして私はすでにFTDIを持っています。FTDIではこれができないと研究で結論付けた場合、CAN MCUを使用してみます。
ルネ

スタックはすべてを処理し(ビットスタッフィングなど)、MCP2551にビット単位で送信します。私が今抱えている唯一の問題は、FTDIレイテンシです。これは、高速かつ定期的に行う必要があるためですが、後で測定します。
ルネ

1
@rnunes-ただし、CP2102(FTDIではなくSiLabs)から出力されるのは、ビットではなくバイトです。1ビット後に停止することはできません。マイクロコントローラをUSBと接続するにはCP2102と、CAN + MCP2551をサポートするマイクロコントローラの両方が必要です。または、USBデバイスとしても機能するマイクロコントローラー。その場合、CP2102は必要ありません。
-stevenvh

7

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メッセージバッファーとして機能するCANコントローラーを備えたMCUを使用することが理想的です。これから、最初に作成したセットアップを使用してみます。ありがとう
ルネ

+1 uCを使用せずにFTDIチップを使用してCANコントローラーと直接通信するのは便利です。明らかにFTDIは、専用のUSB-SPIブリッジであるFT221Xをリリースしました。(USBからI2Cへの別のモデルもあります。)
ニックアレキセフ

2

質問を理解しているように、既存のCANバスを聴きたいので、UARTをまったく使用できません。CANとUARTのシガリングはまったく異なります。

理論的には、MCP2551からのCAN受信ラインを見て、CANトラフィックをデコードできます。それは簡単ではありませんが、理論的には可能です。専用のCANハードウェアがなければ、CANビットレートよりも数倍速くサンプリングし、後でそのビットストリームをソフトウェアでデコードする必要があります。250 kbit / s CANをデコードするには、おそらく約1 Mbit / sで記録する必要があります。

マイクロコントローラーを使用する方がはるかに簡単です。PIC 18F2580および他の同様のプロセッサには、CAN周辺機器が組み込まれています。ハードウェアはすべてのビットレベルのデコードを行い、CANフレーム全体を受信します。プロセッサは、受信したCANフレームをUART経由でPCに送信できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.