I3C(Improved Inter-Integrated Circuit)とは?

0
4

電子工作やIoTデバイスの開発において、センサーやディスプレイとの通信に欠かせないのが「I2C」や「SPI」といったシリアル通信規格です。しかし、近年センサーの高精度化や複数搭載が進むにつれ、「I2Cでは速度が足りない」「SPIではピン数を消費しすぎる」といった課題が浮き彫りになってきました。

そこで注目を集めているのが、次世代規格である「I3C(Improved Inter-Integrated Circuit)」です。

この記事では、I3Cの基本概要から、I2C・SPIとの違い、そして電子工作やIoT開発にもたらす画期的なメリットを網羅的に解説します。

I3C(Improved Inter-Integrated Circuit)とは?

I3Cは、モバイル機器向けのインターフェース規格を策定する業界団体「MIPI Alliance」によって開発された次世代のシリアルバス規格です。

名前の通り、フィリップス(現NXPセミコンダクターズ)が開発したI2Cを大幅に改良(Improved)したものであり、I2Cのシンプルさ(2線式)を維持しながら、SPIと同等以上の高速通信を低消費電力で実現するために誕生しました。

従来の課題を解決する「I3Cの5つの画期的な特徴」

電子工作ファンやエンジニアにとって、I3Cは「これまでI2CやSPIで抱えていたモヤモヤ」を一掃してくれる強力な仕様を持っています。

1. I2Cと同じ「2線式」で、SPI並みの「高速通信」

I3Cは、I2Cと同様に「SDA(データ)」と「SCL(クロック)」の2本の通信線のみを使用します。それにもかかわらず、標準モード(SDR)で最大12.5 Mbpsのデータ転送レートを誇り、高データレートモード(HDR)を使用すればさらに高速な通信が可能です。SPIのようにデバイスごとにチップセレクト(CS)線を用意する必要がありません。

2. 割り込みピンを削減する「インバンド割り込み(IBI)」

従来のI2Cでは、センサーからマイコンへ「データが準備できた」「異常を検知した」と伝えるために、通信線とは別に専用の「割り込み(INT)ピン」を配線する必要がありました。

I3CにはIn-Band Interrupt(IBI)という機能があり、通信用のSDA/SCL線を使ってスレーブ側からマスターへ割り込み要求を送ることができます。これにより、基板上の配線数とマイコンのピン消費を大幅に削減できます。

3. アドレス衝突から解放!「動的アドレス割り当て(DAA)」

I2Cモジュールを複数繋ぐ際、同じアドレスを持つセンサー同士が衝突(コンフリクト)してしまい、ハンダジャンパー等でアドレスを変更した経験はないでしょうか?

I3CはDynamic Address Assignment(DAA)をサポートしており、マスター(マイコン)が接続されている各デバイスに対して自動的かつ動的に固有のアドレスを割り当てます。これにより、アドレス被りの悩みが過去のものになります。

4. いつでも繋げる「ホットジョイン(Hot-Join)」

システムが稼働している最中に、後からモジュールを接続してもネットワークに安全に参加できる「ホットジョイン」機能を持っています。モジュール式のIoTデバイスや、抜き差し可能なセンサーアタッチメントの開発に非常に有利です。

5. 従来のI2Cデバイスとの「後方互換性」

I3Cマスター(マイコン側)は、従来のI2Cスレーブ(センサー側)と通信することが可能です。つまり、基板上のバスをI3Cにアップデートしても、過去のI2C資産(古いディスプレイモジュールやセンサー)を同じバス上に混在させてそのまま使い続けることができます。

【比較表】I2C・SPI・I3Cの違い

項目I2CSPII3C
通信線の数2本(SDA, SCL)4本以上(MOSI, MISO, SCLK, CS)2本(SDA, SCL)
通信速度100kbps〜3.4Mbps10Mbps〜(デバイスによる)最大12.5Mbps(標準モード)
割り込み専用線必要(INTピン)必要不要(IBIによる帯域内割り込み)
アドレス設定固定(ハードウェア依存)CS(チップセレクト)線で物理的に選択動的割り当て(DAA)
消費電力比較的高い(プルアップ抵抗による)比較的低い非常に低い(プッシュプル駆動併用)

I3Cの具体的な活用例・ユースケース

その省配線・高速・低消費電力という特性から、以下のような幅広い分野での導入が始まっています。

  • スマートフォン・ウェアラブルデバイススマートウォッチのように内部スペースやバッテリー容量が極限まで限られているデバイスにおいて、ジャイロ、加速度、心拍、環境センサーなどを2本の線だけで高速に束ね(センサーフュージョン)、基板サイズを縮小します。
  • AR / VR ヘッドセット頭の動きを遅延なくトラッキングするためには、IMU(慣性計測装置)から数百Hz〜数kHzの頻度でデータを読み取る必要があります。I3Cの高速通信と割り込み機能がこの低遅延な処理を支えます。
  • 自動車・車載システム自動運転やADAS(先進運転支援システム)の高度化に伴い、車内のセンサー数は激増しています。I3Cを導入することでケーブルの重量とコストを削減し、燃費向上と軽量化に貢献します。

ArduinoやRaspberry Piなど「電子工作」への影響は?

現在、BoschやSTMicroelectronicsなどの大手半導体メーカーがリリースする最新のIMU(加速度・ジャイロセンサー)などには、すでにI3Cインターフェースが搭載され始めています。

マイコンボード(マスター側)については、ハイエンドなARM Cortex系マイコン等からハードウェアI3Cコントローラーの実装が始まっています。ArduinoやRaspberry Piの標準I/OとしてI3Cがフルサポートされるにはもう少し時間がかかるかもしれませんが、I3Cセンサー自体はI2Cとの後方互換性があるため、当面は「I2Cモード」としてArduino等でそのまま使うことが可能です。

将来的にマイコンボード側のI3C対応が進めば、ライブラリを更新するだけで「アドレス衝突なし」「配線スッキリ」「超高速」というメリットを電子工作でもフルに享受できるようになるでしょう。

I3CとI2Cを混在させて使う場合の注意点

I3Cの最大の魅力の一つは「従来のI2Cデバイスとの後方互換性があり、同じバス(配線)に混在させることができる」という点です。しかし、ハードウェア設計や電子工作の実装において、単純に同じ線に繋ぐだけで完璧に動くわけではありません。

I3C(最大12.5MHzの高速・プッシュプル駆動)とI2C(低速・オープンドレイン駆動)という物理層の異なる規格を共存させるためには、いくつか厳密なハードウェア上の制限と注意点があります。

設計時に必ず考慮すべき5つの重要ポイントを詳しく解説します。

1. I2Cデバイス側の「50ns スパイクフィルター」が必須

これが最も重要な条件です。I2CデバイスをI3Cバスに繋ぐ場合、そのI2CデバイスのSDA/SCLピンに「50nsスパイクフィルター(デグリッチフィルター)」が内蔵されている必要があります。

  • 理由: I3Cは最大12.5MHzで非常に高速にSDA/SCL線を切り替えます。もしフィルターがないレガシーなI2Cデバイスがこの高速な信号を見ると、「ノイズ」や「自分宛ての不正なスタート/ストップコンディション」と誤認識し、バスをロックしたり誤動作を起こしてしまいます。50nsフィルターがあれば、I3Cの高速パルスを無視してくれます。
  • 注意: Fast-mode (400kHz) や Fast-mode Plus (1MHz) に対応した比較的新しいI2Cデバイスには標準で搭載されていますが、古いStandard-mode (100kHz) のデバイスには搭載されていない場合があります。フィルター非搭載のデバイスを繋ぐ場合、I3Cデバイスとの通信も含めてバス全体の速度をI2Cレベルまで落とす必要があり、I3Cのメリットが完全に消滅します。

2. 「クロックストレッチ」の禁止

I2Cには、スレーブ側(センサーなど)がデータ処理に時間がかかる場合、SCL線(クロック)を強制的にLOWに引っ張ってマスターを待たせる「クロックストレッチ」という機能があります。

  • 理由: I3Cの通信中、SCL線はマスター側がプッシュプル(Push-Pull)回路で強力にHIGH/LOWを駆動します。もしI2Cデバイスが勝手にSCLをLOWに引っ張ると、マスターの「HIGHを出力しようとする力」と衝突し、ショート状態(バスコンフリクト)を引き起こします。
  • 対策: I3Cバス上に混在させるI2Cデバイスは、クロックストレッチを行わない仕様の製品を選ぶ必要があります。

3. バスの静電容量(キャパシタンス)の厳しい制限

I3Cの高速通信(12.5Mbps)を実現するため、バス全体の静電容量(配線やデバイス内部の容量の合計)は「最大50pF」という非常に厳しい制限が設けられています。

  • 問題点: I2Cは最大400pFまで許容されていたため、I2Cデバイスのピン容量は1つあたり最大10pF程度あることが珍しくありません。これを複数個I3Cバスに繋ぐと、あっという間に50pFの制限を超えてしまい、I3C通信の波形が鈍って通信エラーを引き起こします。

4. プルアップ抵抗と回路設計の変更

I2CではSDA/SCLの両方に外部プルアップ抵抗を取り付けるのが常識でした。

  • I3Cの仕様: I3Cバスでは、SCL線はマスターがプッシュプル駆動するため、SCL線に外部プルアップ抵抗を追加してはいけません 。
  • SDA線に関しては、オープンドレイン動作のフェーズ(調停やACK応答)があるため特定条件でプルアップが必要ですが、設計基準がI2C単体バスよりもシビアになります。

5. 10ビットアドレスは非対応

I2Cには拡張アドレスとして「10ビットアドレス」対応のデバイスが存在しますが、I3Cバスに混在できるのは「7ビットアドレス」のI2Cデバイスのみです 。

また、マスター(マイコン側)のソフトウェア設定として、I3Cデバイスに動的アドレスを割り当てる際、バス上に存在するI2Cデバイスの静的アドレスと被らないように保護する設定(LVR: Legacy Virtual Registerの登録)を行う必要があります。

【結論】実際の基板設計におけるベストプラクティス

上記のように、単純に同じ配線にI3CとI2Cを繋ぐと「容量オーバー」や「ノイズ誤認識」のリスクが高まります。そのため、Texas Instruments(TI)などの半導体メーカーは、I2Cスイッチやパッシブマルチプレクサを使ってバスを物理的に分割(セグメント化)する設計を推奨しています。

  1. I3Cメインバス: マイコンとI3C専用センサーだけを直接繋ぐ(50pF以下の低容量を維持し、12.5Mbpsのフルスピードを確保)。
  2. I2Cスイッチ/マルチプレクサ: メインバスの途中にスイッチICを挟む。
  3. I2Cサブバス: スイッチの先にレガシーなI2Cデバイスを繋ぐ。

この構成にすることで、I3Cデバイスと高速通信している間はスイッチをOFFにしてI2C側の静電容量を切り離し、I2Cデバイスと通信する時だけスイッチをONにする、といった非常に安定したシステムを設計することができます。

関連リンク