短距離基板間通信


24

私のMCUは、約4つのデバイスでSPIバスを実行しています。このバスもボード外に拡張したいと思います。つまり、いくつかのPCBを「メイン」ボードに接続し、機能を拡張したいと思います。「パッド間の距離」は次のとおりです。

メインボードのトレース長+ケーブル長+拡張ボードのトレース長

3 "+ 6" + 3 "=約12"

私の経験では、リボンケーブルを介したこの距離での立ち上がり時間が約7 nsの1 MHzの信号でさえ、1 Vを超えてオーバーシュートしていました(ただし、過度のリンギングはありませんでした)。ボードには同じ電源から電力が供給されます。

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

注:立ち上がり時間はここでは確認できませんが、過度のオーバーシュートは確認できます-これは3.3V信号です。そして、はい、これはプローブからグランドまでの非常に短いワイヤで適切に測定されました。このサイトでよく推奨されるように。私はそれが測定エラーだとは思わない。

システムを4 MHzで動作させたいのですが、2 MHzでも問題ありません。最大 接続したいボードの数は約4で、これによりSPIバスが拡張され、約12のデバイスができます。私はすでにこのような機能を持っているので、これをコードで管理するのはそれほど難しいとは思わない 追加のスレーブ選択ラインを持つことも問題ではありません。

しかし、私の懸念は、あるボードから別のボードにSPIデータを送信する方法です。ストレートSPIを送信するか、一方をLVDSに変換し、もう一方をSPIに戻す必要がありますか?


1
立ち上がり時間は?
コルトゥク

@Kortukそれをリストするのを完全に忘れてしまった、ごめんなさい。質問を更新しました。
サアド

7nSの立ち上がり時間、それは速い叫び声です。
コルトゥク

2つの無関係な質問で申し訳ありません。使用したオシロスコープは何ですか?2.リングがそんなに重要なのはなぜですか?
richieqianle

回答:


15

経験則によれば、接続長が信号の波長の1/10よりも長い場合、伝送線路の影響を計算する必要があります。

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

伝送ラインは、インピーダンスの突然の変化を示す反射を引き起こします。反射された信号は元の信号に追加され、送信機側で再び反射される場合があり、そのように前後に行き来します。結果はグラフに表示されます:あなたが話しているオーバーシュートと、いくつかのリンギング。

ΩΩ 抵抗器から始めて、それがどれだけ遠くまで到達するかを見てください。

編集(質問の更新について)
立ち上がり時間は7nsのようです。Kortukが言うように、それは高速で、少なくとも400MHzまでのスペクトルがあり、クロックが1MHzであっても、それらの高調波は実際に伝送ラインの影響を受けます。それらを除外してみてください。20MHzの帯域幅(4MHzクロックの場合は80MHz)で十分な立ち上がり時間が得られます。これは、20MHzでブリックウォール LPFでフィルタリングされた1MHzの方形波です。

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

直列抵抗を配置すると、ラインの静電容量で1次のLPFが形成されます。50pFでそれを推定すると、

R=12π100MHz50pF=32Ω

Ω


2
1MHzの周波数は無関係です。重要なのは立ち上がり時間です。
Rocketmagnet

@stevenvh、宛先で1K抵抗をグランドに追加しようとしました。スパイクを助けましたが、信号レベルを少し下げました。それは正常ですか?信号が落ち着くレベルを言うと。また、500オーム、220オームと同じ効果を試みましたが、より顕著です。
サアド

@Saad-ビットはいくらですか?1kの3.3Vはわずか3mAであり、ドライバはそれを完全に供給できるはずです。内部抵抗があるかもしれませんが、それは数十オームであるため、レベルは2または3%しか低下しません。
stevenvh

@stevenvhラインの抵抗を直列に接続することを忘れていたので、明らかに電圧を下げます。愚かな私!ただし、180Ωの抵抗器でさえあまり役に立ちませんでした。オーバーシュートが4.5Vになりました。私ははるかに低い抵抗が必要になると思いますが、それでは電流の消費を心配する必要があります。
サアド

また、アクティブな終了を検討する必要がありますか?低抵抗を使用すると、ボード全体の所要電力が増加し、バスが常に動作しているため、消費電力が増加します。ショットキーダイオードをクランプとして使用するとうまく機能しますか?
サアド

6

このような短いバスの場合、小さな抵抗をラインを駆動するものと直列に接続してみます。これは、伝送線路理論を考慮した理論上の理想的な方法ではなく、あなたの場合に十分うまくいくと思われる実用的なアプローチです。はじめに47Ωを試して、それが何をするかを見てください。それで十分な場合は十分ですが、高くすることはできますが、120Ωを超えることはありません。その範囲のどこかに、十分に機能する値が見つかる可能性があります。


私はそのアプローチを試みました、Olin。100オームの抵抗を使用し、オーバーシュートを約500 mV落とし、4.7 Vから4.3 Vに下げました。それでも3.3 Vを超える電圧です。立ち上がり時間は、最初の7と比較して12 nsでした。
サード

あなたが答えを投稿している間、私は抵抗器を計算していたようです、オーリン。ごめんなさい
-stevenvh

@OlinLathrop Iは直列抵抗を330オームに増やし、オーバーシュートを3.7Vにしました。私はこれにとても満足しています。立ち上がり時間は10 nsでした。これに固執するか、ボードの次のリビジョンで終端抵抗を入れる必要がありますか?120オームを超えないことをお勧めしたのでお願いします。
サアド

@Saad:回線上の他の負荷の影響が心配で、ノイズの影響を受けやすくなりました。信号がクリーンで、ラインにDC負荷(たとえば、高インピーダンスCMOS入力のみ)がない場合は、300Ωを使用してください。
オリンラスロップ

4

オーバーシュートは、ドライバーが負荷を駆動できる場合、適切に終端することで解消できます。そうでなければ、LVDSのような専用ドライバー/レシーバーペアまたはRS485でさえも確実に機能します。


+1:頻繁にLVDSを使用してSPI信号を伝送します。
ジェイソンS

1

過去にSPIをリボンケーブルで実行することで深刻な問題が発生しましたが、説明したものよりもはるかに長い問題がありました。ノイズ耐性が実際の問題になり、破損したコマンドが私の周辺機器に届きました。CEノイズ耐性テストに失敗するのに十分でした。後でこの点で問題が発生した場合は、各ボードに個別のMCUを配置し、CANbus経由で接続することをお勧めします。

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