SPIによって、3mのケーブルを介した通信を実現することは可能ですか?
質問
あるマイコンのペリフェラルとASICの間で、SPIによる通信を行いたいと考えています。ただ、顧客から両者の間を3mのケーブルで接続することを求められています。クロック周波数(伝送レート)は1MHz(1Mbps)程度ですが、このような仕様を満たすことは可能なのでしょうか? また、実現が難しい場合には別の通信プロトコルに変換せざるを得ないのだと思いますが、その際にはどのようなプロトコルを選択すべきなのでしょうか?
回答
ご存じのとおり、SPIは単一の基板上などにおける短距離の通信に使用することを前提とする規格です。したがって、質問者が懸念しているとおり、長距離での伝送を行いたい場合、基本的には別の技術と組み合わせることになるでしょう。
例えば、RS-422などのようなプロトコルに対応する信号に変換して3mの通信を実現するということです。ある投稿者からは、場合によっては、1Mbpsでの通信に対応したRS-422のインターフェース部や、装置の外部を通す配線などに対しては絶縁を施すことも検討すべきだという意見も寄せられました。
別の投稿者からは、次のような経験談が寄せられました。その方は、同様のケースで、上記のような考えに基づいてSPIからRS-422に変換する手法を検討したことがあるそうです。それに向けて、RS-422に対応することを謳うトランシーバー製品を選択したところ、1Mbpsのレートを達成できないというトラブルに見舞われたといいます。
この投稿者は、そのような経験を踏まえ、「過剰な対応になるかもしれないけれど」としつつ、CAN(Controller Area Network)に対応するトランシーバーを使用することを勧めていました。実際、クロックに同期したシリアル通信が必要なケースでCANを利用して対応を図ったことがあるそうです。 これらの意見を受けて、アナログ・デバイセズの技術者から次のような内容の投稿が寄せられました。
RS-422でもCANでも、1Mbpsの伝送レート、3mのケーブル通信という条件を満たすことができるはずです。ただ、その際には多少の注意が必要です。というのは、伝送線路をきちんと設計しなければなりません。
特に、終端抵抗を適切に接続することが重要になります。終端抵抗の値は差動伝送であれば通常は120Ωくらいでよいでしょう。図1、図2に示したのは、この話題に関連するアナログ技術セミナーの資料です。これらは、RS-422やCANのPHYと似たRS-485を使用し、7mの線路において1Mbpsのレートで信号の伝送を行った例です。図1は終端抵抗なし、図2は終端抵抗ありの場合の結果を表しています。


このように、終端抵抗を付加することで明らかに良好な状態になります。また、信号のスルー・レートを線路の往復時間の数倍のレベルまで低速に抑えることで、反射による問題もなくなります。ただし、それは妥協の産物と言えるかもしれません。逆説的になりますが、このような事柄について十分に理解したうえで、うまくケーブル、送端、受端を構築すれば、あるいはCMOSでの伝送も可能であるかもしれません。
さらに、別の投稿者からは以下のような内容の意見/提案が寄せられました。
SPIに対応する信号を長い距離にわたって伝送する方法はコストを度外視すればいくらでもあるはずです。何らかのドライバICを使って50Ω系の信号に変換すれば、50Ωの同軸ケーブルによって数kmでも伝送できます。
実際、ケーブル・テレビの配線網では、数百MHzの信号を数十kmにもわたって伝送しています。今回の問題におけるポイントは、できるだけコストを抑えつつ、3mにわたり、SPIの信号を高品位な波形としていかに伝送するのかということでしょう。
実は、SPIに非常によく似たものに、I2Sというオーディオ用の規格があります。このI2Sに対応する信号を数mにわたって伝送する方法が話題になっています。それは、LVDS(Low Voltage Differential Signaling)に対応するドライバICを使用し、HDMI(High-Definition Multimedia Interface)ケーブルによって伝送を実施するというものです。
HMDIケーブルは高速信号の伝送に適しています。しかも、大量に生産されていることもあって安価です。LVDSに対応するドライバIC/レシーバーICとHDMIケーブルを組み合わせるだけで、3mの伝送路はほぼ完成するはずです。
以上のようなアドバイスを受けた質問者は、SPIをそのまま使用して3mの伝送距離に対応することのリスクを受け止めました。顧客に対してはそのことを伝えて、RS-422/485、CAN、HDMIなどを組み合わせる方法を提案することを基本線として考えることにしました。
その一方で、質問者が所属している会社では、1m程度ならSPIで直接伝送を行った例があるという情報を得たそうです。また、別の投稿者からも1m程度の距離で同様のことを行ったことがあり、問題なく動作していたという例が紹介されました。
そこで、アドオン・ボードを使って何らかの差動プロトコルに対応できるよう保険をかけておきつつ、SPIの信号をそのままバッファしただけで通信する方法も試してみることにしたそうです。その際、バッファとしては電源電圧が5Vの場合に±32mAの出力電流が得られるドライバICを適用することにしました。ただ、質問者からは、この時点まで話題に上っていなかったもう1つの要件が明かされました。
それは、SPIを2チャンネルまたは4チャンネルのマルチドロップ構成で使用するケースがあるというものです。
それを受けて、アナログ・デバイセズの技術者は、RS-485などで差動構成を採用するのが本筋だとしつつ、SPIで直接通信し、なおかつ2チャンネル/4チャンネルのマルチドロップ構成をとるためには、回路や伝送線路について、より十分な対応を図らなければならないと指摘しました。そのうえで、以下のようなアイデアを提示しました。
まず、電源電圧が5V、出力電流が±32mAのドライバICを使用するということを前提とし、図3に示すようなマルチドロップ構成を考えます。ここでは、(1)と(4)がエンドポイントであるとしましょう。

各ポイント間はツイスト・ペア線を使用して接続するとともに、グラウンドへのリターン電流についても考慮する必要があります。ツイスト・ペア線の特性インピーダンスは120Ω程度(差動インピーダンスの場合)なので、エンドポイントである(1)、(4)のレシーバーは本来120Ωで終端する必要があります。ただ、ドライバICの駆動能力を考慮して180Ω程度にしておくとよいでしょう。そうすると、反射係数が(線路が120Ωであるとして)0.2程度になり、反射による影響を小さく抑えることができます。(2)、(3)についてはハイ・インピーダンスで信号を受けます。
ドライバの出力電流は±32mAなので、電源電圧が5Vの場合、156Ωまで駆動できる計算になります。レシーバーが上記の状態でマルチドロップとなっている場合、SPIのマスタからの送信については、次のようになります。
(2)または(3)がマスタの送信側であるなら、(1)、(4)の抵抗の並列値が90Ωなので、ドライバの出力には68Ω~75Ωの抵抗を直列に接続して電流値を32mA以下に制限します。一方、(1)または(4)がマスタの送信側であるなら、ここには終端抵抗を付加するのではなく、ドライバを常にアクティブにしたままで、その出力に180Ωの抵抗を直列に接続します。なお、この場合、180Ωではなく120Ωの抵抗を選択することでも、反射を減らしつつ電流の制限も行えるはずです。
上記のようにすると、抵抗における電圧降下によって、レシーバー側のスイングがVCC/2になります。そのため、受信側では閾値を低く設定することが重要です。
スレーブが送信側となるMISOのラインについては、線路を終端するために(1)、(4)には終端抵抗を付加しなければなりません。また(2)、(3)がマスタとなって送信する場合と同じ条件になります。ただし、この場合、各ドライバはハイ・インピーダンスになるようにしなければなりません。
上記の内容をまとめると、リターン電流を確実に流すこと、反射を抑えること、振幅が半分になることの3つが重要なポイントになります。
以上のような説明を受けて、質問者は次のように対処すると返答しました。まず、想定している仕様では、マスタは(1)または(4)に固定することが可能なので、そのドライバ出力に120Ωの抵抗を直列に接続し、スレーブ側の端点となる(4)または(1)を120Ωの抵抗で終端します。さらに、受信側はTTL(Transistor-transistor logic)で信号を受けることで対応します。このような形で、SPIで直接通信する方法にもチャレンジしてみるという結論に至りました。
アナログ電子回路コミュニティとは
アナログ電子回路コミュニティは、アナログ・デバイセズが技術者同士の交流のために提供していた掲示板サイトで、2018年3月に諸般の事情からサービスを終了しました。
アナログ電子回路コミュニティには日々の回路設計活動での課題や疑問などが多く寄せられ、アナログ・デバイセズのエンジニアのみならず、業界で活躍する経験豊富なエンジニアの皆様からも、その解決案や意見などが活発に寄せられました。
ここでは、そのアナログ電子回路コミュニティに寄せられた多くのスレッドの中から、反響の大きかったスレッドを編集し、技術記事という形で公開しています。アナログ電子回路コミュニティへのユーザ投稿に関するライセンスは、アナログ電子回路コミュニティの会員登録時に同意いただいておりました、アナログ・デバイセズの「利用規約」ならびに「ADIのコミュニティ・ユーザ・フォーラム利用規約」に則って取り扱われます。
また、英語版ではございますが、アナログ・デバイセズではEngineerZoneというコミュニティサービスを運用しています。こちらのコミュニティでは、アナログ・デバイセズの技術に精通した技術者と交流することで、設計上の困難な課題に関する質問をしたり、豊富な技術情報を参照したりすることが出来ます。こちらも併せてご活用ください。
この記事に関して
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}