I2C

I2C（アイ・スクエアド・シー、アイ・アイ・シー）はフィリップス社で開発されたシリアルバスである。低速な周辺機器をマザーボードへ接続したり、組み込みシステム、携帯電話などで使われている。
"Inter-Integrated Circuit" の略で、"I-squared-C"（アイ・スクエアド・シー）が正式な読みとされている。ただし、一般的な文字コード環境のプレーンテキスト上では上付き文字が使えないため、I2CあるいはIICと表記されることも多く、これをもって「アイ・ツー・シー」と発声されたりカタカナ表記されることがある。
設計.
I2C で使われているのは、抵抗でプルアップされた双方向のオープンコレクタ信号線が2本だけである。2本の信号線は、シリアルデータ (SDA) とシリアルクロック (SCL) からなる。電圧は最高で +5V までで、よく使われるのは +3.3V だが、他の電圧でも構わない。
I2C の参照設計では、7bit のアドレス空間のうち 16 の予約アドレスを除いた最大 112 個のノードが、同じバス上で通信できる。もっとも一般的な I2C バスのモードは、100kbit/s の標準モード () と 10kbit/s の低速モード () だが、クロック周波数はゼロまで下げても構わない。ノード数の拡大と高速動作が可能な 400kbit/s のファーストモード () や 3.4Mbit/s の高速モード () の追加と、10bit アドレス空間などの機能拡張が行なわれている。
特定のI2Cバス上に存在できるノードの数は、アドレス空間とバスの静電容量によって制限され、実際の通信距離は数メートルに制限される。比較的高いインピーダンスと低い雑音耐性は共通の接地電位を必要とし、実用的にはPC基板や小さな基板同士の通信に制限される。
改訂.
元々の I2C システムは、フィリップスの各種チップを使った電子機器制御用のシンプルな内部バスシステムとして1980年代初期に開発されたものである。
最新の仕様書は、フィリップスが設立したNXPセミコンダクターズ社のサイトにて配布されている。また、2004年8月に特許が失効しており、現在はロイヤリティフリーである。
応用.
I2C が適しているのは、シンプルで製造コストを抑えることが速度よりも重要とされるような周辺機器である。I2C バスの代表的な用途としては、次の通り。
わずか2本の汎用I/Oピンとソフトウェアだけで、マイクロコントローラからデバイス・チップのネットワークを制御できることが、I2C の最大の利点である。
I2C バスでは、システムが動作中であっても周辺機器の取り付け・取り外しが可能なので、ホットスワップが必要とされる用途には特に向いている。
I2C のようなバスが広まったのは、パッケージのサイズとピン数が、生産コストや集積回路設計に大きな影響を与えていることにコンピュータ技術者が気付いたからである。パッケージが小さければ軽量化・低消費電力化が可能で、これは携帯電話やポータブル・コンピューティングでは特に重要なことである。
OSでのサポート.
Linux では、I2C は特定のデバイス（ADM1026やLM92など）用に特定のカーネルモジュールで扱われている。Linux 2.6ではカーネルコンフィグレーションのでサポートするシステムハードウェアモニタを選択できる。I2Cドライバのソースコードは drivers/hwmon 配下にある。I2Cドライバは大きく分けて core と algorithm, adapter の3種類のモジュールに分割されている。I2C クライアントの書き方の詳細は、カーネル関連のドキュメントや codice_1 ヘッダファイルにある。OpenBSD には最近、いくつかの共通マスター・コントローラとセンサのサポートで I2C フレームワークが加えられた。
シンクレア QDOS とミネルヴァ（ QDOS の再実装） QL オペレーティング・システムでは、TF サービスから提供されている拡張セットで I2C がサポートされている。
AmigaOS では、 Wilhelm Noeker の "i2c.library" 共有ライブラリで I2C アクセスできる。
eCos は、いくつかのハードウェア・アーキテクチャで I2C に対応している。
EPIA-M マザーボードは、Mini-ITX で I2C に対応している。
派生技術.
I2C が元になっているものには、 ACCESS.bus 、 VESA の Display Data Channel (DDC) インターフェイス、 SMBus 、 IPMI などがある。これらの実装では、電圧やクロック周波数に違いがあり、また割り込み信号があることもある。