I2Cバスでの接続の例

I2C(アイ・スクエアド・シー、アイ・アイ・シー)はフィリップス社で開発されたシリアルバスである。低速な周辺機器をマザーボードへ接続したり、組み込みシステム携帯電話などで使われている。

Inter-Integrated Circuit の略で、I-squared-C(アイ・スクエアド・シー)が正式な読みとされている。ただし、一般的な文字コード環境のプレーンテキスト上では上付き文字が使えないため、I2CあるいはIICと表記されることも多く、これをもって「アイ・ツー・シー」と発声されたりカタカナ表記される[1]ことがある。

設計

I2C で使われているのは、抵抗プルアップされた双方向のオープンコレクタ信号線が2本だけである。2本の信号線は、シリアルデータ (SDA) とシリアルクロック (SCL) からなる。電圧は最高で +5V までで、よく使われるのは +3.3V だが、他の電圧でも構わない。

I2C の参照設計では、7bitアドレス空間のうち 16 の予約アドレスを除いた最大 112 個のノードが、同じバス上で通信できる。もっとも一般的な I2C バスのモードは、100kbit/s の標準モード (standard mode) と 10kbit/s の低速モード (low-speed mode) だが、クロック周波数はゼロまで下げても構わない。ノード数の拡大と高速動作が可能な 400kbit/s のファーストモード (Fast mode) や 3.4Mbit/s の高速モード (High Speed mode) の追加と、10bit アドレス空間などの機能拡張が行なわれている。

特定のI2Cバス上に存在できるノードの数は、アドレス空間とバスの静電容量によって制限され、実際の通信距離は数メートルに制限される。比較的高いインピーダンスと低い雑音耐性は共通の接地電位を必要とし、実用的にはPC基板や小さな基板同士の通信に制限される[2]

改訂

元々の I2C システムは、フィリップスの各種チップを使った電子機器制御用のシンプルな内部バスシステムとして1980年代初期に開発されたものである。

最新の仕様書は、フィリップスが設立したNXPセミコンダクターズ社のサイトにて配布されている。また、2004年8月に特許が失効しており、現在はロイヤリティフリーである。

応用

I2C が適しているのは、シンプルで製造コストを抑えることが速度よりも重要とされるような周辺機器である。I2C バスの代表的な用途としては、次の通り。

わずか2本の汎用I/Oピンとソフトウェアだけで、マイクロコントローラからデバイス・チップのネットワークを制御できることが、I2C の最大の利点である。

I2C バスでは、システムが動作中であっても周辺機器の取り付け・取り外しが可能なので、ホットスワップが必要とされる用途には特に向いている。

I2C のようなバスが広まったのは、パッケージのサイズとピン数が、生産コストや集積回路設計に大きな影響を与えていることにコンピュータ技術者が気付いたからである。パッケージが小さければ軽量化・低消費電力化が可能で、これは携帯電話やポータブル・コンピューティングでは特に重要なことである。

OSでのサポート

Linux では、I2C は特定のデバイス(ADM1026やLM92など)用に特定のカーネルモジュールで扱われている。Linux 2.6ではカーネルコンフィグレーションの"Hardware Monitoring support"でサポートするシステムハードウェアモニタを選択できる。I2Cドライバのソースコードは drivers/hwmon 配下にある。I2Cドライバは大きく分けて core と algorithm, adapter の3種類のモジュールに分割されている。I2C クライアントの書き方の詳細は、カーネル関連のドキュメントや /usr/include/linux/i2c.h ヘッダファイルにある。OpenBSD には最近、いくつかの共通マスター・コントローラとセンサのサポートで I2C フレームワークが加えられた。

シンクレア QDOS とミネルヴァ( QDOS の再実装) QL オペレーティング・システムでは、TF サービスから提供されている拡張セットで I2C がサポートされている。

AmigaOS では、 Wilhelm Noeker の i2c.library 共有ライブラリで I2C アクセスできる。

eCos は、いくつかのハードウェア・アーキテクチャで I2C に対応している。

EPIA-M マザーボードは、Mini-ITX で I2C に対応している。

派生技術

I2C が元になっているものには、 ACCESS.bus 、 VESADisplay Data Channel (DDC) インターフェイス、 SMBus 、 IPMI などがある。これらの実装では、電圧やクロック周波数に違いがあり、また割り込み信号があることもある。

関連項目

参考文献

[脚注の使い方]
  1. ^ 「2線シリアル・インターフェースI2C詳解」『トランジスタ技術』、CQ出版、2014年10月、15頁。 
  2. ^ かふぇルネ I2Cの伝送可能距離” (2016年9月12日). 2019年3月22日閲覧。
  3. ^ I2C-bus specification and user manual”. NXPセミコンダクターズ (2021年10月1日). 2023年1月7日閲覧。

外部リンク