オフボードSPI通信の設計上の問題は何ですか?


8

概要:

SPIを使用して、dspic33を搭載した3つのカスタムPCBボード間で通信しています。私はマスターと2つのスレーブを持っていますが、両方のスレーブに同じデータを送信しています(注意を払う対象を選択させる)。

ハードウェアのセットアップ:

2つのスレーブにはBLDCモーターコントローラーが組み込まれており、マスターはこれらのモーターコントローラーをSPI経由で制御しています。ワイヤーはマスターから各スレーブまで約3フィートであり、ヘッダーは標準的な0.1インチピッチスルーホールのSAMTECHヘッダーです。各モーターコントローラーには、dsPIC / LV電子回路を実行する独自の3.3ボルトレギュレーターがあります。モーターコントローラーレギュレーターを1つ使用します(彼をAと呼びます)SPIマスターDSPICにも電力を供給します。他のモーターコントローラー(彼をBと呼びます)に対しては、マスターからSPIラインとグラウンドを実行します。SPIclkは100KHzで動作しています

要点(最終的に):

これを実行しているモーターがないため、すべてが正常に機能し、すべてのデータが期待どおりに両方のスレーブに送信されます。ただし、モーターを起動すると、Bslaveは正しいデータを取得しなくなります。彼は余分な時計を拾っているか落としているかのどちらかだと思います。いずれにしても、彼のチェックサムは失敗し始めます。Aslaveは何があってもチャンピオンのように機能します。

1)これらのすべてのデバイスを同じ3.3ボルト電源で実行する必要があると思いますか?もしそうなら、より長いインダクタンスループとそのような黒魔術について話して私を説得できますか?

2)SPI clkを実行し、上記のようなハードウェアセットアップで成功することができると私がどれほど速く期待できるかについて、どんな経験則がありますか?


シミュレーションは、クロックの実行速度を見積もるために必要です。2層または1層のボードがあるとすると、経験則として、トレースに結合するノイズを減らすために、グランドトレースまたは(反対層の)グランド銅プレーンをSPIラインの下または近くに配線します。
Steinar 2013

回答:


5

私は1つのボックスから別のボックスまで約5mのSPI(2MHzクロック)を実行しており、クロックとデータがバランスのとれた出力になるように設計することを躊躇しませんでした。2つの間の(カスタム)ケーブルもツイストペアとデータとクロックの両方で画面を使用しました。

また、DC / DCコンバータを介してリモートボックスに絶縁電源を送りました。私はこれを誤解するのに十分な時間を持っていなかったので、おそらく私の解決策はやり過ぎでしたが、ちょっと、それはうまくいきました。この決定の背後にある私の推論は、ツイストペアの画面を下って行く「現在の消費」スパイクが欲しくなかったということです。PC送信側で画面がアースに接続されていませんでした。最高のパフォーマンスを得るには、貴重なアナログ信号のようにデジタル信号を扱います。常に画面を受信側で終了し、(何らかの理由で)送信側で大胆に(同様に)終了する必要がある場合。

これは、128チャネルの低速アナログ信号をPCからブレークアウトボックスに送信するためのものです。もし必要なら、20MHzのクロックでこれを動作させることができると思います。


「スクリーン」とは、カスタムケーブルを指すときに「シールド」を意味しますか?
JYelton 2013

1
英国では@JYeltonはスクリーンと呼ばれます。どこの国にいますか?
Andy別名

私はアメリカにいます。私の親友の1人はイギリス人です。そのため、言葉の選択についていつもとは違う議論をします。:)私にとっての「画面」は、ディスプレイまたはモニター、あるいは窓が開いているときに家の外に飛び出さないようにするメッシュ布です。
JYelton 2013

@JYelton。ああ、ものを入れないメッシュの布。私には画面のよう
Andy aka

1)と2)の両方に対処した唯一の回答であるため、回答として選択しました。多くの人が示唆したように、もし私がボードを再設計した場合、差動信号を送る代わりに、おそらくプロトコルを変更するだけでしょう。私はこれがうまくいくと信じています。この場合、プロトタイプですぐに使用できるため、SPIを使用しています。
Matt

5

SPIは他の電気的インターフェースと何の違いもありません。通常のシグナルインテグリティの問題(シールド、ループ領域、インピーダンス、信号終端など)に注意してください。適切な距離で実行できます。妥当な距離とは、それで何をしているのか、そしてさまざまな要因をどれだけうまく制御できるかに依存します。

3フィート走れる?もちろん。しますか?さて、使用するより良いものがあります。他の人が指摘したように、うまく機能するRS-4xxがあります。SPIを実行することもできますが、RS-4xxのようなケーブルを介して差動信号を使用します。これはより多くのワイヤーを使用しますが、それらは中断です。UARTなどを使用して、通常のRS-485を実行することもできます。

個人的には、SPIをシャーシ内で1フィートのケーブルで32 MHzまでのレートで問題なく実行しました。また、高EMI環境で100 KHzで4フィートを超えるI2Cを実行しており、SPIはI2Cよりもはるかに優れているため、実行できます。ただし、詳細に注意を払わないと、問題が発生しやすくなります。しかし正直なところ、何を使用するかに関係なく、詳細に注意を払う必要があります。


RS232のような多くのインターフェースは、リンギングやオーバーシュートなどの影響を比較的受けません。ただし、回線の移行に起因するそのような影響がビット時間内に解決される場合に限ります。回線が高いボーレートをサポートできない場合でも、ボーレートを下げると効果があります。対照的に、リンギングのようなものがSPIに何らかの速度で問題を引き起こす場合、ラインの遷移の傾きを減らすことができない限り、リンギングを遅くしても効果がない場合があります。
スーパーキャット2013

これは良い答えです。特に、実装したシステムの数はそうです。ドライバ側で直列抵抗を試して、それが役立つかどうかを確認すると思います。しかし、私はノイズが余分な時計を引き起こしているのではないかと恐れています...その場合、それは助けにならないかもしれません。
マット

5

アース方法を慎重に検討してください。役立つ場合は、データラインをシールドし、シールドを適切に接地します。データとクロックを同じツイストペアで実行しないでください。必要に応じて、ガルバニック絶縁を使用してください。それ以外には、私が知っている経験則はありません。

SPIは、(1)通常は1つのPCB内での短距離通信、および(2)EMIの少ない環境での使用向けに設計されています。おそらく、EMIの存在下でSPIよりもパフォーマンスが悪いバスはI 2 Cと1線のみです。EMI(RS-485、CAN、イーサネット)の存在下で長距離通信用に設計されたバスがあります。

SPIを拡張して耐久化することは可能です。ここだアプリケーションノート差動ラインとSPIバスを示し、。


線をシールドしてみます。ガルバニック絶縁に関して、グランドを接続しない場合、スレーブデバイスはマスターから送信されたクロックを登録しません。
マット

1

信号線へのノイズの影響を最小限に抑える方法はいくつかあります。最も簡単な方法は、銅トレースまたは銅トレースを信号トレースに隣接してルーティングすることです。これにより、トレースのインダクタンスとループ領域が最小限に抑えられます。

高周波では、リターン電流は、信号ライン自体に隣接する最小インピーダンスの経路を走るようです。回路間に共通接地があると思いますが、共通接地が回路間の単なる「電源」接地接続である場合、これが高周波信号の問題を引き起こす可能性があります。これにより、信号電流のループ領域が非常に大きくなり、浮遊磁気結合による大量のノイズ注入が可能になる場合があります。

可能であれば、SPI信号ラインに隣接するグラウンド間に追加のグラウンド接続を接続し、銅製のグラウンドプレーンまたはトレースをボード内部のラインに隣接して配線することも維持します。それはあなたの回路がモーターに対してどれほど敏感であるかの世界に違いをもたらすかもしれません。


「SPI信号線に隣接するグランド間」という言葉がわかりません。具体的には、隣接という言葉は私には明確ではありません。
マット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.