GNU/Linux >> Linux の 問題 >  >> Linux

I2C(Inter-Integrated-Circuit)とは何ですか?

ターゲットオーディエンス

この記事は、読者が基本的な電子回路と用語に精通していることを前提としています。

はじめに

この記事の目的は、I2C通信バスのセットアップ方法、物理的特性、頻繁に使用される場所と理由など、I2C通信バスの基本を読者に理解してもらうことです。


I2C

I2Cは通常「I-two-C」と発音されますが、IIC(および「I-I-C」と発音)またはIC(「I-squared-C」と発音)と表記されることもあります。頭字語はInter-Integrated-Circuitの略です。これは、1982年にフィリップスセミコンダクターズによって最初に市場に導入されたシリアルコンピュータバスおよび通信プロトコルの一種です。

I2Cは、複数の電子デバイス(ほとんどの場合、低速の周辺機器集積回路)が1対のワイヤを介して相互に通信できるようにする方法です。これらのワイヤは、データラインまたはバスとも呼ばれます。これらのバスの最初のものはデータラインであり、SDA( S )と呼ばれます erial DA ta)回線、および他のバスは時計、またはSCL( S erial CL ock)行。 I2C回路上のすべてのデバイスは、これら2つのラインに接続されて通信するため、ほとんどのI2C互換デバイスには、SDAおよびSCLのラベルが付いたピンと、正およびアース接続用のVINピンとGNDピンがあります。

典型的なI2C回路図/CCBY-SA3.0でライセンス供与


クロックバスとデータバスはどちらもオープンドレインラインです。バスが正しく機能するためには、各ラインと回路の正の電圧供給(Vccとも呼ばれる)の間に抵抗を接続する必要があります。これらの抵抗器のサイズは、1kΩから47kΩまでさまざまですが、バスとシステムの高電圧の間に存在する必要があります。それらが存在しない場合、すべてのラインがローに引き下げられ、I2Cバスは機能しなくなります。幸いなことに、システム全体に必要な抵抗器のペアは1つ(各ラインに1つ)であり、デバイスごとに1つではありません。これは、多くのデバイスですぐに混乱する可能性があります。

これらのバスには、かなりの数のデバイス(ノードとも呼ばれます)を接続できます。実際、I2C回路に実際に接続できるデバイスの数は、通常、スペース、ラインの固有の静電容量、および接続されたデバイスのアドレスによってのみ制限されます。ほとんどの専門家は、この制限が約1008デバイスに及ぶことに同意しています。

I2C通信には、マスターとスレーブの2種類のデバイスがあります。プロトコルのほとんどの実装では、1つのマスターデバイスが多くのスレーブに接続されています。複数のマスターが他のマスターだけでなくさまざまなスレーブデバイスと通信することも可能ですが、この形式はあまり一般的ではなく、この紹介の範囲を少し超えています。多くのI2Cデバイスは、必要なシステム結果に応じて、マスターまたはスレーブとして構成できます。マスターノードは、クロック(SCL)ラインを制御する唯一のデバイスであり、データ転送を開始できる唯一のデバイスです。スレーブノードは、マスターノードからの呼び出しをリッスンして応答することに制限されています。マスターを含む各ノードには、I2Cネットワーク上でノードを識別する一意の(通常は7ビット)アドレスがあります。場合によっては、アドレスの長さが10ビットで、128を超える異なるデバイスを使用できますが、これは通常の設定ではありません。

I2Cシステムの動作中、マスターノードはデータラインでコマンドと要求を送信します。これらの信号は8ビット長で、クロックラインがHIGHのときにのみ開始され、特定の「開始」シーケンスで開始され、特定の「停止」シーケンスで終了します。開始シーケンスは、接続されているすべてのスレーブノードにデータ転送要求が差し迫っていることを警告します。マスターが送信する次のシーケンスは、通信するスレーブのアドレスです。次に、指定されたスレーブノードは次のHIGHクロック信号からマスターに応答し、他のスレーブはアドレスが呼び出されるのをリッスンします。

コマンドで送信される7ビットのデバイスアドレスの後の8番目のビットは、単純な読み取り/書き込みビットです。アドレス指定されたデバイスに、マスターデバイスがデバイスからの読み取りまたは書き込みのどちらを行うかを通知します。これにより、受信デバイスは、送信するデータを準備するか、次のクロックのHIGH信号でSDAラインに沿ってデータを受信する準備をすることができます。

ほとんどのI2C回路のクロック速度(および関連する信号転送)は、通常、シリアル通信とSPI速度の間の100kHzから400kHzの間のどこかにあります。 I2Cは、速度よりもシンプルさ、低コスト、低電力が重要なシステムで一般的に使用されています。これらのアプリケーションには、アナログ-デジタルコンバーター、LCDディスプレイ、リアルタイムクロック、気圧計、コンパス、さらにはGPS受信機などのさまざまなセンサーが含まれます。

I2Cは非常に便利な通信プロトコルですが、少数のアプリケーションにしか適用できない場合があります。小型で低消費電力の設定に最適であり、その結果、ArduinoやRaspberryPiなどの組み込みデバイスやマイクロコントローラーとセンサーやコントロールをインターフェースするために使用する多くの愛好家の間で支持されています。 PiのGPIOピンのうち2つは、プロトコルを使用してデバイスとインターフェイスするように事前設定されており、ArduinoワイヤーライブラリによりI2Cデバイスとの通信が可能になります。 I2Cを学び、使用することで、プロジェクトの構築に関して趣味のツールキットを大幅に拡張できます。

Atlantic.Net

Atlantic.netは、VPSホスティングと、ホスティングパッケージにビジネスに不可欠なマネージドサービスのレイヤーを含むマネージドホスティングサービスを提供します。詳細については、今すぐお問い合わせください。


Linux
  1. システム管理者とは何ですか?

  2. 「lc_all=c」は何をしますか?

  3. エコー$は何ですか?行う??

  1. RAIDとは何ですか?

  2. とは :-!! Cコードで?

  3. オプション +FollowSymLinks とは?

  1. Linuxユーザーとは何ですか?

  2. 何をしますか?

  3. Linux テープ、dev のテープ デバイスの最後にある l a と m は何ですか?