160 2006年6月号
I2Cバスはオープン・ドレインで信号線を接続する
ようになっており,バス上に複数のマスタ・デバイス
が接続できます(ただし,同時にアクティブになれる
マスタ・デバイスは一つだけ).
Microwire デバイスと同様,8ピンのシリアル
EEPROMタイプのデバイスがよく利用されます.I2C
デバイスは,1 Mビット(128 Kバイト)といった大容
量のものも販売されており,設定情報の記憶用途のほ
か,CPUのプログラムROMの代用といった用途にも
使われています.
図 1は,I2Cデバイスの代表的なデバイスである
AT24C02(アトメル)のピン配置です.
I2Cのアクセス・タイミング
I2C(Inter Integrated Circuit)は,フィリップスが
提唱しているシリアル・インターフェースで,
Microwireデバイスと同じような用途でよく利用され
ます.Microwireが3線(CSを含めると4線)必要なの
に対し,I2Cは2線式のため配線を少なくすることが
できます.
通信速度は,スタンダードで0~100 kbps,ファス
トで0~400 kbps,ハイ・スピードで0~3.4 Mbpsと
なっています.
表1は,I2Cデバイスの信号名と機能です.I2Cはバ
ス接続可能です.バスの静電容量が400 pF以内であ
れば,一つのバス上にいくつでもデバイスを接続する
ことができます.
MicrowireやSPIと異なり,デバイスを選択するた
めのチップ・セレクト信号はありません.I2Cデバイ
スのターゲットの選択は,I2Cの送信コマンドのデバ
イス・アドレス(メモリのアドレスとは別のデバイス
を指定するためのアドレス)で行われます.
第6章 2本の信号線に次々とICをつないでいける
I2Cインターフェースの使いかた
芹井 滋喜Shigeki Serry
KeywordsI2C,Inter Integrated Circuit,シリアルEEPROM,バス接続,AT24C02,PIC16F648A,ATtiny2313,H8/3694F,R8C/15,μPD78F9222,GPIO,スタート・コンディション,ストップ・コンディション,IIC2,1-Wire,PIC16F648A,DS2431,マルチドロップ,シングル・マスタ,マルチスレーブ,ROMファンクション,メモリ・ファンクション,スクラッチ・パッド,リセット・パルス,プレゼンス・パルス
信号名 機 能
SCL クロック
SDA データ入出力
表1
I2Cの信号の機能
SCL
SDAGND
A1
A0
WP
A2
5
7
8
6
4
2
1
3
VCC
図1
I2Cインターフェースのシリア
ルEEPROM AT24C02のピン
配置
tH IGHtF tR
tLOW
tAA tDH
tLOW
tBUF
tSU.STOtSU.STA tSU.DATtHD.DATtHD.STA
SDA IN
SDA OUT
SCL
図2 I2CインターフェースのシリアルEEPROM AT24C02の基本アクセス・タイミング
選択するアドレスです.
I2CのシリアルEEPROMにはA0からA2までのア
ドレス・ピンがありますが,ここで設定したアドレス
がデバイスのアドレスとなります.
例えば,A0とA1が“L”でA2が“H”ならば,
このデバイスをアクセスする場合は,デバイス・アド
レスのBit3~Bit1は100bでなければなりません.そ
して,最下位ビットのBit0がリードかライトの操作
を示すビットとなります.ライト・サイクルの場合は
このビットが‘0’となり,リード・サイクルの場合
は‘1’となります.
● ライト・サイクルの詳細
I2Cの通信は,SPIと同様に8ビット単位で行われ
ますが,I2Cの場合はコマンドを受け取ったターゲッ
トのデバイスがACKを返すことになっています.
ACKは,ホストが送り出す9ビット目のクロック
に同期して,ターゲット・デバイスがSDAラインを
“L”にすることで識別できるようになっています.
したがって,ホスト・デバイスは,8ビットのデバ
イス・アドレスを送った後SDAラインを入力状態に
して,ACKを受信するために次のクロックを発行し
ACKを受け取らなければなりません.したがって,
全体としては,デバイス・アドレスを送り終えるため
に,9クロックが必要となります.
デバイス・アドレスが正常に送信できたら,それに
続けて8ビットのアドレスを送信します.これは,デ
ータを書き込む先のメモリ・アドレスとなります.デ
バイス・アドレスと同様にアドレスの8ビットを送信
後,ACK読み出しのクロックを発行し,ターゲッ
ト・デバイスのACKを確認します.
ライト・サイクルの場合は,さらに書き込みデータ
のビットが続きます.8ビットのデータを送信後,
ACKを確認します.
最後に,通信完了を示すために,ストップ・コンデ
ィションを発行して通信を終了します.
AT24C02は,2 KビットのシリアルEEPROMです.
SPIタイプのシリアルEEPROMと同様に8ビット・
アクセスとなるため,2 Kビットの場合,256×8ビ
ットでアドレスは8ビットとなります.
図2は,AT24C02の基本アクセス・タイミングで
す.Microwire デバイスや SPI デバイスと異なり,
I2Cデバイスにはチップ・セレクトがありません.こ
のため,通信の開始と終了を識別するために,スター
ト・コンディションとストップ・コンディションと言
われる二つの特殊な状態を使って,通信の開始と終了
を識別しています.
図3は,I2Cデバイスのスタート・コンディション
とストップ・コンディションを示しています.
通常のアクセスと異なり,スタート・コンディショ
ンでは,SCLが“H”の状態のときにSDAを“H”
から“L”に変化させ,ストップ・コンディションで
はSCLが“H”の状態のときにSDAを“L”から“H”
に変化させます.
● I2Cデバイスはライト・サイクルが基本
MicrowireデバイスやSPIデバイスと異なり,I2C
デバイスではライト・サイクルが基本となります.図4
は,AT24C02のバイト・ライトのフォーマットです.
I2Cデバイスは,まずスタート・コンディションを
発行し通信の開始を宣言します.
次に,8ビットのデバイス・アドレスを発行します
が,このデバイス・アドレスは表2のようにビット・
アサインが決められています.
デバイス・アドレスの上位4ビットは,デバイスの
タイプを表すビットで,メモリ・デバイスの場合は
1010bとなります.また,Bit3~Bit1は,チップを
I2Cのライト・サイクル
1612006年6月号
特集*マイコン・シリアル通信ハンドブック
SDAライン�
スタート�
書き込み�
ストップ�
MSB
MSB
LSB
LSB
ACK
ACK
ACK
デバイス・�アドレス� ワード・アドレス�
�データ�
R/W
図4 AT24C02のバイト・ライトのフォーマット
SDA
SCL
スタート� ストップ�
図3 スタート・コンディションとストップ・コンディションB7 B6 B5 B4 B3 B2 B1 B0
1 0 1 0 A2 A1 A0 R/W
表2 デバイス・アドレス