📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

1行目: 1行目:
== 概要 ==
== 概要 ==
I2C (Inter-Integrated Circuit) 通信は、集積回路間の短距離通信を目的として設計された同期式シリアル通信プロトコルである。<br>
1982年にフィリップス社 (現NXPセミコンダクターズ) によって開発され、その後、多くの半導体メーカーによって採用された。<br>
<br>
この通信方式の特徴として、シンプルな構造と低速ながら信頼性の高い通信が挙げられる。<br>
I2Cバスは、データ線 (SDA) と クロック線 (SCL) の2本のワイヤーのみで構成されており、これらの線は双方向性を持つ。<br>
この簡素な構造により、複数のデバイスを容易に接続できるため、多くの電子機器や組み込みシステムで広く使用されている。<br>
<br>
I2C通信では、マスター・スレーブモデルが採用されている。<br>
一般的に、マイコンやSBC等がマスターデバイスとなり、センサやメモリチップ等がスレーブデバイスとなる。<br>
マスターデバイスはクロック信号を生成して、通信を開始・終了する役割を担う。<br>
各スレーブデバイスには固有のアドレスが割り当てられており、マスターはこのアドレスを指定することで特定のスレーブと通信を行う。<br>
<br>
通信速度に関しては、標準モードで100[kbps]、高速モードで400[kbps]、新しい規格では3.4[Mbps]までの通信が可能である。<br>
ただし、多くの一般的な用途では標準モードや高速モードで十分な性能が得られる。<br>
<br>
I2C通信のプロトコルは、スタート条件、スレーブアドレス、データ転送、ストップ条件という一連の流れで構成されている。<br>
マスターがスタート条件を送信して、続いてスレーブアドレスと読み書きの指示を送信する。<br>
その後、データの転送が行われ、最後にストップ条件で通信を終了する。<br>
<br>
エラー検出機能としては、各バイトの転送後に受信側がACK (確認応答) ビットを送信することにより、データの正常な受信を確認する。<br>
これにより、通信の信頼性が向上している。<br>
<br>
I2C通信の応用範囲は非常に広く、温度センサ、加速度センサ、EEPROM等のメモリチップ、リアルタイムクロック、ADコンバータ等の様々なデバイスで使用されている。<br>
特に、複数のセンサやアクチュエータを制御する必要がある組み込みシステムやIoTデバイスにおいて、I2C通信は重要な役割を果たしている。<br>
<br>
ただし、I2C通信にも制限がある。<br>
比較的低速であるため、高速なデータ転送が必要な用途には適していない。<br>
また、通信距離も数メートル程度に限られるため、長距離通信には他のプロトコルが選択される。<br>
<br>
プログラミングの観点からは、I2C通信の実装は比較的実直であるが、タイミングや通信プロトコルの詳細な理解が必要となる。<br>
多くのマイコンやSBCには、I2C通信を容易に実装するためのライブラリやAPIが用意されている。<br>
これらを利用することにより、開発者はより高レベルな機能の実装に集中することができる。<br>
<br><br>
<br><br>