I²C

I²Cの最新ニュースをまとめて検索!

I2Cバスでの接続の例

I²Cフィリップス社で開発されたシリアルバスである。 低速な周辺機器をマザーボードへ接続したり、組み込みシステム携帯電話などで使われている。 Inter-Integrated Circuit の略で、 I-squared-C(あい・すくえあど・しー)が正式な発音とされている。 ただし、プレーンテキスト上では上付き文字が使えないため、I2Cと表記されることも多く、あい・つー・しーと発音される。

目次

[編集] 設計

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

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

[編集] 改訂

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

最初の標準化は1992年に行なわれ、400kbit/s のファーストモード (fast mode) と、 1008ノードまでの 10bit アドレッシングモードが追加された。 1998年のバージョン 2.0 では、3.4Mbit/s の高速モード (high-speed mode) と、低消費電力を目的とした低電圧・低電流条件が追加された。 2001年のバージョン 2.1 は 2.0 からの小修正で、これが現在の最新バージョンである。

最新の仕様書は、フィリップスが設立したNXP社のサイトにて配布されている。

また、2004年8月に特許が失効しており、現在はロイヤリティフリーである。

[編集] 応用

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

  • DRAMのバスタイミングの設定記憶(Serial Presence Detect:SPD)
  • ユーザの設定を記憶しているシリアル不揮発性メモリ(24C01/24C02/24C04など)へのアクセス。
  • 低速な D/Aコンバータへのアクセス。
  • 低速な A/Dコンバータへのアクセス。
  • モニターのコントラスト、色調、色バランスの変更。
  • インテリジェント・スピーカの音量変更。
  • 携帯電話などの LED 表示の制御。
  • リアルタイムクロックの読み出し。
  • CPU の温度やファンの回転速度など、ハードウェアの監視や診断用センサーの読み取り。(パーソナルコンピュータにおけるACPI制御下のSMBusなど)
  • システムの電源オン・オフ制御。
  • 2次電池の充放電状態コントローラの通信インタフェース。(スマートバッテリシステム)

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

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

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

[編集] OSでのサポート

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

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

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

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

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

[編集] 派生技術

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

[編集] 関連項目

[編集] 外部リンク

最終更新 2009年8月14日 (金) 14:16 (日時は個人設定で未設定ならばUTC)。
【I²C】変更履歴

ご利用上の注意

もっと調べる!