I²C
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) だが、クロック周波数はゼロまで下げても構わない。 ノード数の拡大と高速動作が可能な 400kbit/s のファーストモード (Fast mode) や 3.4Mbit/s の高速モード (High Speed mode) の追加と、10bit アドレス空間などの機能拡張が行なわれている。
改訂 [編集]
元々の I²C システムは、フィリップスの各種チップを使った電子機器制御用のシンプルな内部バスシステムとして1980年代初期に開発されたものである。
1992年のバージョン 1.0 で最初の標準化が行なわれ、400kbit/s のファーストモード (fast mode) と、1008ノードまでの 10bit アドレッシングモードが追加された。
1998年のバージョン 2.0 では、3.4Mbit/s の高速モード (high-speed mode) と、低消費電力を目的とした低電圧・低電流条件が追加された。
2001年のバージョン 2.1 は 2.0 からの小修正である。
2007年のバージョン 3.0 は First mode plus (Fm+) を追加、通信速度を従来の First mode (Fm) 0~400kbit/s から 0~1000Kb/s に向上させるための条件を規格化。
2012年のバージョン 4.0 は Ultra first mode (UFm) を追加、通信速度を 0~5000Kb/s に高速化させるため物理層をオープンコレクタ出力からCMOS出力に変更。予約アドレスから不要な CBUS address / Hs-mode master code が reserved に変更され general call address / START byte / 10-bit slave addressing のみ対応。
最新の仕様書は、フィリップスが設立した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 、 VESA の Display Data Channel (DDC) インターフェイス、 SMBus 、 IPMI などがある。 これらの実装では、電圧やクロック周波数に違いがあり、また割り込み信号があることもある。
関連項目 [編集]
外部リンク [編集]
- MCC I2C Bus Technical Overview
- Philips I2C specifications
- Philips Semiconductors (2000年1月). “I2Cバス仕様書(日本語版) (PDF)”. 2013年3月27日閲覧。 表紙に「バージョン2.1」とあるが、内容はバージョン2.0がベースと思われる
- Detailed introduction, Primer
- Introduction to I2C
- I2C Bus / Access Bus
- Using the I2C Bus with Linux
- OpenBSD iic(4) manual page
- Linux package lm-sensors support I2C bus among others.
- massmind i2c page Source code, samples and technical information for using i2c with PC, PIC and SX microcontrollers.
- I2C bus
- Serial buses information page
- I2C Bus Technical Overview and Frequently Asked Questions
- The I2C Faq Version 2.0
- The Bus Buffer Resource. For 2-wire buses such as I2C, SMBus, PMBus, IPMB & IPMI
- SMBus (System Management Bus)
- SBS-IF Smart Battery System Implementers Forum
|
||||||||||||||||||||||||||