なぜ複数のI²Cポートが必要なのですか?


19

I²Cプロトコルでは、理論上、7ビットアドレッシングにより、最大127個のデバイスをマスターに接続できます。これは非常に大きいので、低価格のマイクロコントローラー(例:このPIC24)に複数のI²Cポートがあるのはなぜですか?なぜ必要なのですか?

回答:


23

センサーハブの配置

このシナリオでは、2つのI²Cバスがあります。それらをローカルバスメインバスと呼びましょう。ローカルバスの目的は、多数のセンサーをマイクロコントローラー(μC)に接続することです。μCの目的は、センサーをポーリングし、センサーから情報を集約し、特定のイベントを検出することです。このような役割のμCは、センサーハブと呼ばれます。センサーハブは、高次関数を担当しません。そのための強力なメインプロセッサがあります。メインバスは、センサーハブをメインプロセッサに接続します。そのため、センサーハブμCはローカルI²Cバスのマスターであり、I²Cメインバスのスレーブです。

SPIおよびI²C

元の投稿でリンクされているPICは、SPIとI²C間でピンを共有していません。ただし、ハードウェアSPIとI²Cに同じピンを使用する他のPICがあります。これは、両方が同じMSSPペリフェラルで実装されているためです。PICに2つの別個のMSSPペリフェラルがある場合、1つはハードウェアSPIに使用でき、もう1つはハードウェアI²Cに使用できます。


21

複数のバスを必要とする非常に一般的な理由は、異なる速度で動作するデバイスがあることです。元々、I²Cは最大100 kHzで動作していました。その後、速度は最大400 kHzに増加し、それ以降は1 MHz以上に増加しました。

問題は、各デバイスのアドレスがI²Cプロトコルに埋め込まれているため、同じバスに異なる速度定格のデバイスがある場合(100 kHzと400 kHzなど)、常にバスを最低速度で実行する必要があることです。同じバス上のすべてのデバイス(この場合は100 kHz)。

バスを高速(400 kHz)で実行した場合、明らかに低速デバイスは正常に動作せず、高速デバイスのアドレスを独自のものとして解釈することもあり、400 kHzデバイスは次のように失敗します。まあ。ただし、最初にバスを100 kHzで実行し、高速チップをアドレス指定した後、バスを400 kHzに高速化しようとしても、低速チップが(おそらくそうではないかもしれませんが)高速データパケットがアドレスとして誤って、バス上の通信を台無しにします。いずれの場合も、400 kHzデバイスとの交換の終わりに、100 kHzデバイスはおそらく不明な状態になります。

あなたが異なる速度で実行しているデバイスを持っている場合は、最も効率的であるそれはそう、あなたが複数のI²Cポートを持っている、あなたが100 kHzのデバイスに対して1人のI²Cの発言権を持っている、そのような贅沢を可能にするために予備のピンを持っている400 kHzのデバイスのための別の、および他の必要に応じて1 MHzデバイス用。

これはSPIでは問題になりません。各デバイスは、個別のチップセレクトラインによってハードウェアで有効化(アドレス指定)されるためです。そのため、同じバス上の他のチップが有効になっていないため、クロック速度を選択したチップの速度(10 MHz、20 MHzなど)に合わせることができます。


19

また、同じアドレスを持つ2つのデバイスをサポートできます。はい、ほとんどのデバイスでは、ストラップでアドレスの下位2ビットを選択できます。最近、4つのデバイスをサポートする必要がありましたが、各デバイスでは、アドレスのLSBを抵抗器でしか設定できませんでした。2つのポートがあれば、追加費用はかかりません。

1つを多数のデバイスのマスターにし、もう1つをスレーブポートとして提供したいので、10,000番目の温度センサーをポーリングしている間、マスターがコマンドを出すためにバスをつかむ必要はありません時間。

このスレッドには他にもたくさんの良い反応があるようで、私の2セントを追加するだけです。


9

速度。

2つのI2Cデバイスに同時にアクセスする必要がある場合、重大な競合が発生する可能性があります。または、一方が他方を待つ必要があります。


9

第二に、I²Cを使用して帯域幅を増やすことができます(同時に2バイトを送受信できます)。

継続的に動作するADCがある場合、1つのI²Cが常にビジーです。

アドレスの切り替えにも時間がかかるため、場合によっては、2つのデバイスに2つのポートを使用し、アドレスの変更を避けて時間を節約できます。


0

他の人はこれを行うための多くの理由を述べました、私は1つを追加します:

多数の5V I2Cデバイスと、多数の3V3 I2Cデバイスを入手しました。

たとえば、2つのI2Cポート、1つは5Vトレラント、もう1つは3V3のみの3.3Vマイクロがあります。


好奇心から、どのミクロですか?
ニックアレキセフ

1
LPC4330、マニュアルからの抜粋:「I2CバスFast Mode Plus仕様と互換性のあるオープンドレイン5 VトレラントデジタルI / Oパッド。このパッドは、出力機能を提供するために外部プルアップを必要とします。 I2Cバスに接続されたピンはフローティングで、I2Cラインを妨害しません。」
プーフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.