決定的なI2Cピン配置ガイダンスはありますか?「標準」を探していない


16

編集:これは数回繰り返されているので、一番上に配置します:はい、I2Cデバイス間コネクタには「標準」がないことはよく知られていますが、このコミュニティでは、作成のための「ガイダンス」ポイントのリストを作成できます。このような相互接続は、信号の動作、ノイズの最小化、および誤った接続によるリスクの軽減に基づいています。


NXP は、I2Cコネクタのピン配列を指定せずにI2C標準を定義しました。NXPからの唯一のガイダンスは、Vss / Gndがインターコネクトを介して運ばれる場合、SDAとSCLの間にグランドおよび/またはVssを配置することに関する言及のようです。

さまざまなI2Cモジュールを購入すると、さまざまなI2Cピン配置が必要になり、それらに必要なさまざまな小さなリボンケーブルスイッチングシムを追跡する作業が少し必要になりました。

例えば

  • モノOLEDモジュール:SCL、SDA、GND、5V(クロックとデータが隣接しているため、明らかに理想的ではありません。
  • Arduino用センサーシールド:SDA、SCL、GND、5V(やはり理想的ではない、スイッチドSCL / SDA)
  • カラーLCDモジュール:SCL、GND、5V、SDA(Yay!)
  • 名前のないI2Cリピーター:SCL、5V、GND、SDA(いや、彼らは電源ピンを切り替えました!魔法をほぼ消し去りました。)

だから私の質問はこれです:VssとGNDの両方がホストからデバイスに運ばれるI2C 4ピンコネクタのピンアウトシーケンスの
決定的/正式なガイドラインはありますか?

これに失敗すると、それぞれが採用しているピン配列をリストしているI2Cモジュール/デバイスのディレクトリがありますが、不完全です。

明確化:明確に存在しない定義済みの標準ではなく、「SCLにVsを近づける」などのガイドラインを探します。


3
したがって、質問。
アニンドゴーシュ

1
あなた自身の質問によって、標準がないことは明らかです...そして、もしあったとしても、明らかに人々はそれに従っていません。シムの作成に困っています。:P
トビーローレンス

1
@anindoGhoshへえ。私なら、購入済みのモジュールを捨てて、偏極ヘッダーを使用して標準化されたピン配列で独自のブレイクアウトボードを転がすでしょう。おそらく6ピンのようなもので、SDA、SCL、5Vの隣にGNDがあり、3つのツイストペアのケーブルを使用して各信号の近くにグランドを保ち、ノイズを減らし、干渉を排除します。
トビーローレンス

3
I2CがArduinoユーザー向けに販売されている多くのモジュールの一般的なデフォルト接続オプションであることに気分を害しているようです。外部ボードコネクタ用に設計されていなかったとしても、ここにあります。新しいデバイス用のコネクタをどのように改良するかについてのアドバイスを求めるのは、専門家ではなく、専門家ではない可能性があります。
エキサイティングな

1
@ExcitingProjectsいいえ、彼らは彼らの言うことについては正しいです。I2Cはこれを意図したものではなく、明らかにデバイス間接続でいくつかの課題に直面しています。モジュール設計者がI2Cを選択したのは偶然です。選択肢があれば、私も「気分を害する」でしょう。
アニンドゴーシュ

回答:


16

私は最近、I2Cコネクターに関する限り、独自にロールバックしました。コネクタ自体はあまり重要ではありませんが、今は100milピッチヘッダー(通常はオンボードのメスなので、接続されていないときはあまり気になりません)を使用していますが、4plusピンコネクタはすべて使用できます。さらに、私はP82B715を使用していますI2CバスエクステンダーとしてTIから。これにより、I2Cが長時間オフボードで実行されることに関連する容量の問題が克服されます。あなたが与えた例のように、私は多くの異なる組み合わせを試しましたが、パフォーマンスにまったく違いがないことに気付きました。これは、I2Cが比較的遅く、SDAとSCL間の干渉がそれほど問題にならないためだと思います。基本的に、バス上の電圧(干渉が発生する場合)の立ち上がり時間は、ビット長よりもはるかに短くなります。それで、それはあなたが聞きたいことではないかもしれませんが、それはより多くの選択肢を与えます。私は個人的に[VCC、SDA、GND、SCL]を使用してこのチップとの間で簡単に配線し、逆方向に差し込んだときにVCC / GNDの混同の影響を受けないようにしました。


2
+1 +同意する。おそらく、これまでで最も実際に実行可能な回答である「デバイス間I2Cが存在します。ここで使用方法と理由を説明します」。VCC / GNDの混同回避が役立ちます。ボード上のポーキーピンヘッダーを避けることの良い点は、偶然いくつかのセンサーモジュールからいくつかのピンを引き裂いたことです。
アニンドゴーシュ

これは本当に役立つ答えであり、十分な評判があれば、@ Samuelにボーナスを提供します。多くのI2Cモジュールがあり、このガイドに従っていつかI2Cモジュールを構築するため、この質問を気に入っています。
エキサイティングな

11

最初に確立されたとき、I2C(Inter-Integrated Circuit)バスは、単一のPCBアセンブリ上のチップを接続することのみを目的としていました。複数のボードを一緒に接続するためにケーブルで使用することは意図されていなかったため、そのためのコネクタは定義されていませんでした。

私が知っている唯一の「標準」I2Cベースの外部インターフェイスは、ユーザーインターフェイスデバイスをコンピューターに接続するための短命のACCESS.busと、VGA、DVI、およびHDMIコネクタ経由でモニター情報を取得するために使用されるVESAディスプレイデータチャネルです。


元々の目的は異なっていたと理解していますが、現在I2Cは多くのケーブル接続モジュールに使用されているため、さまざまな製品、特に多くの製品が使用するピン配置を文書化するための共同データベースを誰かが始めてほしいと思いますArduinoおよびその他のマイクロコントローラーボード市場。
アニンドゴーシュ

4

標準のピン配列、標準コネクタはありません。I2C規格は、この種のことを実際には受け入れられません。デバイスレベルではなく、バスレベルで指定されます。たとえば、I2Cデバイスをプラグインする場合、プルアップがホスト上にあるかデバイス上にあるかを標準で知っていますか?いいえ。ケーブルの静電容量がどこにあるか、Vccが何である必要があるかなど、あなたが知らない他の多くのものも....

実際、割り込みやその他の従来のデジタルI / O用に追加のラインを必要とするI2Cデバイスもあります。必要なピンの数について合意を得られない場合、どのように標準に追加しますか。

結論として、相互接続の移植性と安定性を探しているなら、I2CとSPIはあなたが探す必要がある場所ではありません。


3
自分のデバイスを作成するためのガイドラインを探しているとしたら、それは「duino」のためにそこにある他のすべてのモジュールで動作します(そして好きです)?そこには市場があります、それを無視する点は見当たりません。ちなみに、仕様では、ホストではプルアップが必要であり、デバイスではオプションです。
アニンドゴーシュ

5
標準に関する「素晴らしい」ことは、選択できるものが非常に多いことです。MIDI、USB、RS232などの明確に定義されたコネクタを使用して標準を選択し(その愚かなヌルモデムのことは別として)、独自のデバイスにトランスレータを構築します。もう1つのオプションは、IEEEなどの標準組織を通じて標準ワークグループを形成することです。デバイス上の「オプションの」プルアップは、バス全体の動作に影響を与えるため、正確に言えます。MIDIは、光学的に標準なので、準拠したデバイスによって、すべてのデバイス、これらの問題を引き起こさない隔離
スコットサイドマン

1
+1が標準についての面白いが本当のポイントです!:
アニンドゴーシュ

4

多くの人が何らかのコネクタを使用して、2つのPCB間でI²C信号と電力を伝送します。例えば、

I²C信号を長距離伝送するための一般的なヒント:

ps:ウィキペディア:I²C回路の相互接続がこの質問にリンクしているようです。


3

I²Cのピン配列やコネクタ標準はありませんが、標準化されたI²Cが使用される場所はかなりあります。気になるその一部は、メモリモジュール(DIMM、SO-DIMM)、ビデオコネクタ(あるDDCDVIVGA)とSM-バス(子供は90年代半ばに作られた何かのようにはい、そのウェブページルックス)。特に、SMバスコネクタにはキーが付いており、I²Cと電源のみが含まれていますが、技術的にはすべてのI²Cデバイスを実際のSMバスに接続する必要はないため、SMバスは追加の制限を設けます。Lego NXTセンサーなど、独自のプラグもいくつかあります。


標準がないことは当然のことです...私が望んでいるのは、デバイス設計者が従うかもしれないガイドラインの標準的なコレクションです。たとえば、SMBusの外側には+ 5Vラインがありますが、NXPでは、+ VとGNDの両方を信号トレースの間に配置することを推奨しています。どちらの方法が良いですか、そしてなぜですか?
アニンドゴーシュ

2

標準はありません。

一般的なプラクティスはありません。

何をすべきかを自分で決定するための問題について:

  1. 信号をそもそも意図したとおりに1つのボードに保管してください。IICラインのインピーダンスはかなり高く、シングルエンドであるため、ノイズの影響を受けやすく、伝送ラインを適切に終端できません。IICは、単に退場するためのものではありません。

  2. とにかく船から降りる場合は、バスを短くしてください。おそらく数インチは大丈夫です。メーター以上は本当にトラブルを求めています。

  3. ボード線をノイズ源から遠ざけてください。たとえば、モーターに巻き付けたり、モーターの近くに行こうとしないでください。

  4. 後方に接続できないコネクタを使用してください。誰かがそれを後方に差し込めるなら、誰かがそうするでしょう。

  5. おそらく、リボンケーブルが最も使いやすいでしょう。最低3本のワイヤ、SCL、SDA、およびアースが必要です。パワーを追加することはおそらく良い考えです。いずれの場合でも、クロストークを避けるために、アース線がSCLとSDAの間にあることを確認してください。電源線はうるさいものであってはならないので、片側に貼り付けてください。どちらでも構いません。

  6. コネクタをいじり、潜在的な問題を追いかけた後、ポイント1が実際にあなたが知る必要がある唯一のものであることに気付く。


だから、arduinoや他のマイクロコントローラの初心者のために人々が作ったものや販売している何百ものI2Cのすべてのために砂に頭を入れなければなりませんか?
エキサイティングな

1

なぜ何かが標準化されているのかを尋ねる投稿ではいつものように:[nt]
幸いなことに、すべてがミニUSBで標準化されたため、充電の問題は解決されました。 [または、マイクロUSBですか? たわごと。
XKCDから


質問をもっと注意深く読んだり、多くのコメントスレッドを読んだりした場合は、それが求められている標準ではなく、標準的なガイドラインの形で知恵のコレクションであることに気づいたかもしれません。
アニンドゴーシュ

1
@AnindoGhosh-それがどのように違いを生むかわかりません。上記のコミックの標準をガイドラインに置き換えた場合も同様に有効です。一般に、何かを行う方法が複数ある状況では、多くの人が多くの方法で言ったことをします。正式な「標準」ではない場合でも。
コナーウルフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.