web-dev-qa-db-ja.com

UART vs I2C vs SPIマイクロコントローラ間のプロセッサ間通信の場合

2つのマイクロコントローラーを接続する方法を検討しています。シリアル化のレベルでは、Nano protobuffersの使用を考えています( http://code.google.com/p/nanopb/ )。このようにして、メッセージをエンコード/デコードし、2つのプロセッサ間で送信できます。

基本的に、1つの小さなプロセッサがRPCサーバーであり、いくつかの機能を実行できます。より大きなプロセッサは、送信されたメッセージを介してRPCを呼び出し、データの準備ができたら、より小さなプロセッサから読み取ります。

UART、I2C、またはSPIを使用することの長所と短所は何ですか?

メッセージは、送信前にメールボックスキューに入れられます。

よろしく、ドラスコ

25

それはあなたの総要件とピンの値段に依存します。

I2Cには2本のピンしか必要ありませんが、速度が遅く、周辺モジュールに組み込まれている場合でも、割り込みの有無にかかわらずそれを処理するのは苦痛です。これはマスター/スレーブシステムであり、温度センサーなどの多くの低速デバイスの制御に適しています。
すべてのバスデバイスで2行のみ、選択はプロトコルのI2Cアドレスを介して行われます。

Uartには2本のピンが必要です。通常はより高速で扱いやすいですが、両側に(ほぼ)同じクロックが必要です。 1対1の非同期システムは、両方のシステムがマスターポーリング要求を待たずにデータを送信する必要がある場合に適しています。
バスシステムとして使用することもできますが、マスター/スレーブ構造またはより複雑なプロトコルが必要になります。

SPIには3(またはCSの場合は4)ピンが必要です。DMAは、CPU時間のオーバーヘッドが低く、多くの場合バッファされますが、最速で実装が簡単です。十分な空きピンがある場合、私はそれを好むでしょう。

28
jeb