科学・計算関連

I2CとI3Cの違いは?後継規格との通信方式・機能差を解説!

I2CとI3Cの違いと比較表
当サイトでは記事内に広告を含みます
技術ブログ特化メルマガはこちら

I2CとI3Cの違いは?後継規格との通信方式・機能差を解説!

I2CとI3Cは、センサー、メモリー、電源管理ICなどをマイコンに接続するために使われる代表的なシリアル通信規格です。

どちらも少ない配線で複数の機器をつなげられますが、通信速度、割り込みの扱い、消費電力、接続できる機器の管理方法には大きな違いがあります。

I3CはI2Cとの互換性を意識しつつ、モバイル機器やIoT機器で求められる高速化と省電力化を目指して作られました。

ただし、既存のI2C部品をすべてそのまま置き換えられるとは限らないため、設計時には通信方式と対応状況を確認する必要があります。

この記事では、I2CとI3Cの基本的な違いから、通信の仕組み、機能差、用途別の選び方まで順を追って解説します。

I2CとI3Cの違いと比較表

I2CとI3Cの違いと比較表

それではまずI2CとI3Cの違いについて解説していきます。

通信速度と機器管理方式の違い

I2Cは広く普及した低速寄りの2線式通信規格であり、I3Cは互換性を保ちながら高速通信と柔軟な機器管理を加えた後継規格です。

I2CはSCLというクロック線とSDAというデータ線の2本を使い、マスターが通信のタイミングを主導します。

センサーの測定値を定期的に読むような用途では、構成が分かりやすく、多くのマイコンや周辺ICが対応している点が強みです。

一方、I3Cも基本的にはSCLとSDAの2本で通信しますが、より高い転送速度を利用でき、接続された機器の状態を扱う機能も充実しています。

たとえばスマートフォンやウェアラブル端末では、加速度、気圧、温度など複数のセンサーから短時間にデータを集める場面があります。

このような機器では、通信待ちによる消費電力や処理遅延を抑えやすいI3Cが有力な選択肢になります。

比較項目 I2C I3C
主な目的 低速な周辺機器通信 高速化、省電力化した周辺機器通信
配線 SCL、SDAの2線 SCL、SDAの2線
代表的な速度 標準モード100 kHz、高速モード400 kHzなど SDRで最大12.5 MHz級
アドレス管理 主に固定アドレス 動的アドレス割り当てが可能
割り込み通知 別配線やポーリングが中心 インバンド割り込みに対応
既存部品との関係 対応部品が非常に多い 同一バス上でI2C機器を扱える構成がある

配線数が同じでも、I3Cはバス上のやり取りを効率化する仕組みを持つことが重要な違いです。

ただし、最大速度だけで規格を選ぶと、接続するICの対応状況や基板配線の条件を見落とすおそれがあります。

オープンドレインとプッシュプルの使い分け

I2Cでは、SCLとSDAにオープンドレインまたはオープンコレクタ方式を用いるのが基本です。

各機器は信号線をLowに引き下げられますが、Highに積極的に押し上げるのではなく、プルアップ抵抗によってHighになります。

この仕組みにより、複数機器が同じ線を共有しても衝突を検出しやすくなります。

たとえば2つの機器が同時に通信を始めても、送った値と実際の線の状態を比べることで、優先権を失った機器が通信を譲る調停を行えます。

I3Cは、互換性が必要な場面ではオープンドレインを使いつつ、通常の高速データ転送ではプッシュプル方式を活用できます。

プッシュプルではHighとLowの両方を能動的に出力できるため、立ち上がり時間を短くしやすく、高速通信に向いています。

I2Cの信号速度は、プルアップ抵抗と配線容量の影響を受けやすい特徴があります。

I3Cは高速転送時にプッシュプルを使えるため、抵抗による立ち上がりの遅れを抑えやすい設計です。

ただし、I3C対応コントローラーであっても、接続する全機器やバスの構成によっては高速モードを使えないことがあります。

実際の通信速度は、規格上の最大値ではなく、バスに接続する機器全体の対応条件で決まります。

固定アドレスと動的アドレスの違い

I2C機器の多くは、製品ごとに決められた固定アドレスを使います。

同じ型番のセンサーを複数つなぎたい場合、アドレス選択端子を切り替えたり、I2Cスイッチを追加したりする工夫が必要になることがあります。

たとえばアドレス変更できない温度センサーを同じバスに2個置くと、両方が同じ宛先として反応するため、個別に読めません。

I3Cでは、初期化の段階でコントローラーが各ターゲット機器に動的アドレスを割り当てる仕組みを利用できます。

これにより、機器を識別しやすくなり、同種のデバイスを多数扱う構成にも対応しやすくなります。

I2Cでの確認例

温度センサーAのアドレスが0x48の場合、マスターは0x48を指定して読み出します。

同じ0x48の機器を追加する場合は、アドレス変更端子、バススイッチ、別バスのいずれかを検討します。

I3Cでは初期化時に各機器へ異なる動的アドレスを与え、通信先を区別できます。

もっとも、I3C対応機器にも静的アドレスを持つものがあり、設計者がすべてのアドレス管理から解放されるわけではありません。

機器のデータシートで、動的アドレス割り当てと旧来のI2C互換動作の両方を確認することが大切です。

I2Cの通信方式と基本機能

続いてはI2Cの通信方式を確認していきます。

スタート条件とストップ条件による通信単位

I2C通信は、バスが待機状態にあるときにSDAとSCLがHighで保たれるところから始まります。

マスターがSCLをHighにしたままSDAをHighからLowへ変化させると、スタート条件が成立します。

その後、アドレス、読み書きの指定、データを順に送り、通信の区切りとしてストップ条件を発生させます。

ストップ条件は、SCLがHighの状態でSDAをLowからHighへ変化させる操作です。

この開始と終了の合図があるため、同じ2本の配線を複数の機器で共有しても、通信の境目を判断できます。

たとえばマイコンが照度センサーへ測定開始命令を出したあと、しばらくして結果を読み出す処理も、スタート条件とストップ条件を含む複数回の通信で構成されます。

I2Cでは、クロックがHighの間にSDAを不用意に変化させないことが、正しい信号として認識させる基本です。

クロックがHighの最中にSDAを変えると、データではなく開始または終了の制御信号と誤解される可能性があります。

基板上で信号を観測するときは、ロジックアナライザーでSCLとSDAを同時に見ると、通信の流れを把握しやすくなります。

アドレス送信とACK応答の仕組み

I2Cでは、スタート条件の後に通信先を示すアドレスと読み書き方向を送ります。

一般的なI2C機器では7ビットアドレスがよく使われ、続く1ビットで読み出しか書き込みかを指定します。

受信側の機器は、自分宛てのアドレスであると判断すると、9番目のクロックでSDAをLowにしてACKを返します。

ACKは肯定応答を表し、送信側にデータを受け取れたことを知らせる役割を持ちます。

反対にSDAがHighのままであればNACKとなり、宛先不在、処理準備中、読み出し終了などを示す場合があります。

7ビットアドレス0x3Cへ書き込む場合の概念例

アドレス0x3Cは2進数で0111100です。

書き込み指定のR Wビットを0にすると、送信する8ビットは01111000になります。

受信側が応答すれば、9番目のクロックでACKが返されます。

アドレスを16進数で記載するデータシートでは、7ビット表記と読み書きビットを含む8ビット表記が混在することがあります。

アドレスが合っているのに通信できない場合は、7ビット表記か8ビット表記かを最初に確認すると原因を絞り込みやすくなります。

クロックストレッチとマルチマスターの考え方

I2Cでは、ターゲット側が処理に時間を要するとき、SCLをLowに保持してマスターを待たせるクロックストレッチを行える場合があります。

たとえば変換処理中のADCや、内部メモリーへ書き込み中のEEPROMでは、直ちに次のデータを処理できないことがあります。

このとき、単に高速にクロックを送るのではなく、ターゲット側の準備が整うまで待つ考え方がI2Cにはあります。

また、I2Cは複数のマスターが同一バスを使うマルチマスター構成も想定しています。

複数のマスターが同時に送信を始めた場合は、各機器がSDAの実際の状態を監視し、優先権を失った側が送信を止めます。

この仕組みは便利ですが、すべてのマイコン周辺回路やドライバーが完全に同じ条件で対応しているとは限りません。

クロックストレッチを使う機器では、マスター側のタイムアウト設定が短すぎると正常な応答まで異常と判断する場合があります。

通信不良を調べる際は、ターゲットの処理時間とマスターの待機時間を合わせて確認しましょう。

家庭用の電子工作では単一マスター構成が多いため、マルチマスター機能を使わない場合でも、バス共有時の基本原理として理解しておくと役立ちます。

I3Cの通信方式と追加機能

続いてはI3Cの通信方式を確認していきます。

SDR転送と高速データ伝送の特徴

I3Cの基本的な高速転送として知られるのがSDRです。

SDRはSingle Data Rateの略で、クロックの一方のエッジを基準にデータを転送する方式を指します。

I2Cの高速モードより大幅に高いクロック領域を扱えるため、短い時間で多くのセンサーデータを収集しやすくなります。

たとえば高い更新頻度が必要な慣性センサーでは、加速度や角速度の値をまとめて読み出す場面があります。

通信にかかる時間が短くなれば、マイコンが待機する時間を減らし、アプリケーション側の処理余裕も作りやすくなります。

ただし、I3Cの高速動作は、単にクロック周波数を上げたI2Cではありません。

I3Cは通信の開始方法、アドレス割り当て、割り込み通知などを規格として整理し、高速化をバス全体の効率向上につなげています。

高速信号では、配線長、分岐、負荷容量、電源ノイズの影響も無視できません。

評価基板で動いた設定をそのまま製品基板へ移すのではなく、実際の基板構成で波形とエラー状態を確認する必要があります。

インバンド割り込みとコントローラー主導の制御

従来のI2C機器では、データが準備できたことを知らせるために、割り込み用の専用端子を使うことがよくあります。

複数のセンサーを使うと、マイコンのGPIOを多く消費したり、割り込み線の配線が増えたりすることがあります。

I3Cには、データ線を利用してターゲット側が通信要求を示すインバンド割り込みの仕組みがあります。

専用の割り込み配線を減らせるため、小型基板や多センサー構成で配線を整理しやすくなります。

たとえば心拍センサーが新しい測定データを用意した時点で、一定間隔のポーリングを待たずにコントローラーへ知らせる運用が可能になります。

これにより、不要な問い合わせ回数を減らし、応答性と消費電力の両面で有利になる場合があります。

通知方式の考え方

I2Cのポーリングでは、マイコンが一定時間ごとに状態レジスターを読みます。

I2Cの外部割り込みでは、各機器から専用GPIOへ通知線を引きます。

I3Cのインバンド割り込みでは、対応機器がバス上で通信要求を示します。

ただし、インバンド割り込みを使うには、コントローラー、ターゲットIC、ソフトウェアドライバーのすべてが対応している必要があります。

I3Cの機能は対応ICを接続しただけで自動的に有効になるわけではなく、初期化処理とドライバー実装まで含めて確認することが必要です。

共通コマンドとバス初期化の流れ

I3Cでは、コントローラーがバス全体へ共通コマンドを送る仕組みを利用できます。

共通コマンドは、接続機器の状態確認、アドレス割り当て、設定変更などを効率良く進めるために使われます。

動的アドレス割り当てでは、起動後にコントローラーが対象機器を識別し、それぞれに通信先となるアドレスを与えます。

この流れにより、製造時に同じ部品を複数搭載する製品でも、接続後の識別を行いやすくなります。

たとえば複数のセンサーモジュールを組み合わせる計測装置では、ケーブル接続や部品構成の違いに応じた管理を設計へ取り入れやすくなります。

一方で、初期化中にどの機器が参加するか、I2C専用機器をどう共存させるかは、事前に決めておく必要があります。

I3Cバスの立ち上げでは、ハードウェア接続だけでなく、バス初期化、機器発見、アドレス割り当て、通常通信という順序を意識します。

ファームウェアの起動処理にこの順序を反映すると、通信不良の切り分けもしやすくなります。

共通コマンドの詳細は実装するコントローラーや機器の資料で異なるため、規格の概念だけでなく、採用部品の対応表も確認しましょう。

互換性と導入時の注意点

続いては互換性と導入時の注意点を確認していきます。

同一バスでのI2C機器との共存条件

I3Cは既存のI2C資産を意識して設計されていますが、すべてのI2C機器と無条件に共存できるわけではありません。

I2C専用デバイスが接続されたバスでは、I3C側の高速動作や信号方式が制約されることがあります。

特にI2Cデバイスのプルアップ抵抗、クロックストレッチ、タイミング特性は、バス全体の動作に影響します。

たとえば古いI2Cセンサーを残したまま新しいI3Cセンサーを追加する場合、I3Cだけの高速性能を十分に引き出せないことがあります。

また、I2Cデバイスの中には、規格で想定された動作から外れた独自のタイミングを持つ製品もあります。

そのため、机上では互換構成に見えても、実機でアドレス応答や立ち上がり波形を確認することが欠かせません。

構成 期待できる利点 主な注意点
I2C機器のみ 部品選択肢が多い 速度、アドレス重複、配線容量
I3C機器のみ 高速機能、動的アドレス、通知機能 対応コントローラーとソフトウェア
I2CとI3Cの混在 既存部品を活用しやすい 高速動作の制約、個別部品の互換性

混在構成では、I3C対応という表記だけで判断せず、使用する通信モードとI2C共存時の条件を部品ごとに確認することが重要です。

プルアップ抵抗と基板配線の設計条件

I2Cバスでは、プルアップ抵抗の値が信号の立ち上がり速度と消費電流の両方に関係します。

抵抗値が大きすぎるとHighへ戻る速度が遅くなり、高速通信時に信号が十分な電圧へ達しないことがあります。

反対に抵抗値が小さすぎると、機器がLowを出力したときの電流が増え、消費電力や出力能力への負担が大きくなります。

配線容量は基板パターン、ケーブル、接続機器の入力容量によって増えるため、短い配線で問題なくても長いハーネスでは条件が変わります。

I3Cを採用する場合も、I2C互換動作を含む設計ではプルアップ抵抗を無視できません。

プルアップ抵抗を検討する際の確認項目

電源電圧を確認します。

接続するすべてのICが許容するLow出力電流を確認します。

配線容量と目標通信速度を確認します。

評価時にはSCLとSDAの立ち上がり波形を測定します。

計算式だけで抵抗値を決めるのではなく、部品のデータシートにあるバス容量やタイミング条件を参照することが安全です。

通信エラーが断続的に起きる場合は、ソフトウェア設定だけでなく、抵抗値、配線長、電源変動を含めて確認しましょう。

ソフトウェア対応と評価手順

通信規格を変更するときは、ハードウェアだけでなく、OS、SDK、ドライバー、評価ツールの対応範囲も調べる必要があります。

I2Cは多くのマイコン環境で標準的なAPIが用意されており、レジスター操作の情報も豊富です。

I3Cは対応が広がっている一方で、コントローラーごとに利用できるモードやドライバーの成熟度が異なることがあります。

まずは対象マイコンがI3Cコントローラーを内蔵しているか、外付けコントローラーが必要かを確認します。

次に、ターゲットICが動的アドレス割り当て、インバンド割り込み、高速転送のどこまで対応するかを整理します。

そのうえで、最低限の読み書き、初期化、エラー復帰、混在構成の順に評価すると、問題の場所を見つけやすくなります。

評価段階 確認内容 確認の目的
部品選定 コントローラー、ターゲットの対応機能 必要機能の不足を防ぐ
初期通信 アドレス認識、基本的な読み書き 配線と設定の確認
機能評価 割り込み、連続転送、電力状態 実運用時の挙動確認
異常試験 切断、再起動、応答なし 復帰処理の確認

実装を急ぐほど、高速転送だけを先に試したくなりますが、最初は低い通信条件で基本動作を確かめるほうが原因を切り分けやすいでしょう。

用途別の規格選定と使い分け

続いては用途別の規格選定を確認していきます。

既存製品と低速センサーに向く構成

既存の製品設計を更新する場合や、温度、湿度、RTC、GPIOエキスパンダーのように通信量が少ない部品を扱う場合は、I2Cが適した選択になることがあります。

I2Cは対応デバイスが多く、部品の入手性、開発資料、ライブラリーの豊富さを活かしやすいからです。

たとえば室内環境を数秒ごとに記録するデータロガーでは、100 kHzや400 kHzでも必要なデータ量を十分に扱える場合があります。

このような用途でI3Cへ移行しても、通信速度以外の設計条件が変わらなければ、得られる利点は限定的かもしれません。

I2Cを選ぶ際は、同一アドレスの部品を複数使わないか、通信待ち時間が許容範囲かを確認します。

また、センサーの更新周期だけでなく、マイコンが他の処理に使う時間も含めて考えることが重要です。

必要なデータ量が小さく、既存ソフトウェアを安定して使えるなら、I2Cは現在でも実用的で扱いやすい規格です。

規格の新しさだけでなく、必要性能と開発負荷の釣り合いを見て決めると、無理のない設計につながります。

多センサー機器と省電力設計に向く構成

多数のセンサーを搭載し、短い周期でデータを集める機器では、I3Cの機能が活きやすくなります。

ウェアラブル機器、携帯端末、産業用の小型計測機器では、基板面積、GPIO数、バッテリー容量が限られることが少なくありません。

I3Cの動的アドレス割り当ては、複数機器の識別を助け、インバンド割り込みは外部通知線を減らす選択肢になります。

たとえば動きがあった時だけ加速度センサーが通知し、その後に必要なデータをまとめて読むような構成では、常時ポーリングを減らせる可能性があります。

高い通信速度は、センサーのデータを読む時間を短くし、バスを早く空けることにも役立ちます。

ただし、省電力効果は規格だけで決まるものではなく、センサーの動作モード、マイコンのスリープ設定、無線送信の頻度にも左右されます。

I3Cは高速化そのものより、複数機器の通信を整理し、不要な待機や配線を減らせる点に価値があります。

採用効果を見積もるときは、通信部分だけを切り出さず、製品全体の消費電流と処理時間で比較しましょう。

規格選定時の確認項目

I2CとI3Cのどちらを採用するかは、通信速度だけで即決しないことが大切です。

まず、接続する機器の数、必要なデータ量、更新周期、アドレス重複の有無を洗い出します。

次に、マイコンの周辺機能、ボードサポート、ドライバー、デバッグ環境が要求仕様に合うかを確認します。

既存設計にI2C専用部品が多く残る場合は、混在時の制約を調べ、I3C化による効果がどこまで得られるかを見積もります。

将来の機能追加でセンサー数が増える予定なら、配線、GPIO、アドレス管理に余裕を持たせる視点も必要です。

規格選定では、必要な転送量、接続機器数、消費電力、既存部品との互換性、ソフトウェア対応を並べて比較します。

この5項目を先に整理すると、I2CとI3Cのどちらが製品要件に合うかを判断しやすくなります。

最終的には、試作基板で実際のデバイスを接続し、通常時だけでなく起動時やエラー時の挙動まで確認することが確実です。

I2CとI3Cの違いと使い分けのまとめ

I2Cは対応部品が豊富で扱いやすい2線式通信規格であり、I3Cはその考え方を発展させて高速通信、動的アドレス、インバンド割り込みなどを取り入れた後継規格です。

両者は同じSCLとSDAを使うため似て見えますが、信号の駆動方式や機器管理の方法には明確な違いがあります。

I2Cは通信量が少ないセンサーや既存設計で使いやすく、I3Cは多センサー構成や小型機器での効率化に向いています。

I3Cを採用する場合は、コントローラー、接続先IC、ドライバーが必要な機能へ対応しているかを確認しましょう。

I2C機器との混在では、高速モードの制約、プルアップ抵抗、配線容量も重要な確認点です。

通信エラーを防ぐには、アドレス表記、初期化順序、タイムアウト設定、波形を順番に点検することが役立ちます。

必要な転送量と今後の拡張性を整理し、実機評価を通じて自分の製品に合う規格を選んでみてください。