第6章

2 本の信号線に次々とIC をつないでいける

I２C インターフェースの使いかた
芹井 滋喜
Shigeki Serry

I2C（Inter Integrated Circuit）は，フィリップスが提唱しているシリアル・インターフェースで，

I2C バスはオープン・ドレインで信号線を接続するようになっており，バス上に複数のマスタ・デバイス

Microwire デバイスと同じような用途でよく利用されが接続できます（ただし，同時にアクティブになれるます．Microwire が 3 線（CS を含めると 4 線）必要なのに対し，I2C は 2 線式のため配線を少なくすることがマスタ・デバイスは一つだけ）．
Microwire デバイスと同様，8 ピンのシリアルできます．
通信速度は，スタンダードで 0 〜 100 kbps，ファスEEPROM タイプのデバイスがよく利用されます．I2C
デバイスは，1 M ビット（128 K バイト）といった大容

トで 0 〜 400 kbps，ハイ・スピードで 0 〜 3.4 Mbps となっています．

量のものも販売されており，設定情報の記憶用途のほか，CPU のプログラム ROM の代用といった用途にも

表 1 は，I2C デバイスの信号名と機能です．I2C はバ使われています．

ス接続可能です．バスの静電容量が 400 pF 以内であれば，一つのバス上にいくつでもデバイスを接続する

I2C のアクセス・タイミングことができます．
Microwire や SPI と異なり，デバイスを選択するた

図 1 は，I 2 C デバイスの代表的なデバイスであるめのチップ・セレクト信号はありません．I2C デバイ
スのターゲットの選択は，I2C の送信コマンドのデバ
イス・アドレス（メモリのアドレスとは別のデバイスを指定するためのアドレス）で行われます．

信号名

機 能

SCL

クロックSDA

データ入出力表1
I2C の信号の機能

tF
tLOW

tH I GH

AT24C02（アトメル）のピン配置です．
A0

18VCC

A127WP

A236

図1SCL I2C インターフェースのシリア

GND

45SDA ル EEPROM AT24C02 のピン配置

tR
tLOW

SCL

tSU.STA

tHD.STA

tHD.DATtSU.DATtSU.STO

SDA I NtAA

tDH

tBUF

SDA OUT

図 2 I2C インターフェースのシリアル EEPROM AT24C02 の基本アクセス・タイミング

Keywords
I 2C，Inter Integrated Circuit，シリアル EEPROM，バス接続，AT24C02，PIC16F648A，ATtiny2313，H8/3694F，R8C/15，
μPD78F9222，GPIO，スタート・コンディション，ストップ・コンディション，IIC2，1-Wire，PIC16F648A，DS2431，マルチドロップ，シングル・マスタ，マルチスレーブ，ROM ファンクション，メモリ・ファンクション，スクラッチ・パッド，リセット・パルス，プレゼンス・パルス

160

2006 年 6 月号

特集＊マイコン・シリアル通信ハンドブック
AT24C02 は，2 K ビットのシリアル EEPROM です．
SPI タイプのシリアル EEPROM と同様に 8 ビット・選択するアドレスです．
I2C のシリアル EEPROM には A0 から A2 までのアアクセスとなるため，2 K ビットの場合，256 × 8 ビットでアドレスは 8 ビットとなります．

ドレス・ピンがありますが，ここで設定したアドレスがデバイスのアドレスとなります．

図 2 は，AT24C02 の基本アクセス・タイミングで

例えば，A0 と A1 がL

で A2 がHならば，す．Microwire デバイスや SPI デバイスと異なり，
I2C デバイスにはチップ・セレクトがありません．ここのデバイスをアクセスする場合は，デバイス・アドレスの Bit3 〜 Bit1 は 100b でなければなりません．そのため，通信の開始と終了を識別するために，スタート・コンディションとストップ・コンディションと言して，最下位ビットの Bit0 がリードかライトの操作を示すビットとなります．ライト・サイクルの場合はわれる二つの特殊な状態を使って，通信の開始と終了

このビットがを識別しています．
図 3 は，I2C デバイスのスタート・コンディション

はとストップ・コンディションを示しています．
通常のアクセスと異なり，スタート・コンディショ● ライト・サイクルの詳細
I 2C の通信は，SPI と同様に 8 ビット単位で行われンでは，SCL がHますが，I2C の場合はコマンドを受け取ったターゲッから L に変化させ，ストップ・コンディションでは SCL が H の状態のときに SDA を L から H

トのデバイスが ACK を返すことになっています．
ACK は，ホストが送り出す 9 ビット目のクロックに変化させます．に同期して，ターゲット・デバイスが SDA ラインをL にすることで識別できるようになっています．

Hの状態のときに SDA を10となり，リード・サイクルの場合となります．

I2C のライト・サイクル

したがって，ホスト・デバイスは，8 ビットのデバ
イス・アドレスを送った後 SDA ラインを入力状態に● I2C デバイスはライト・サイクルが基本

して，ACK を受信するために次のクロックを発行しMicrowire デバイスや SPI デバイスと異なり，I 2Cデバイスではライト・サイクルが基本となります．図 4

ACK を受け取らなければなりません．したがって，全体としては，デバイス・アドレスを送り終えるためは，AT24C02 のバイト・ライトのフォーマットです．
I2C デバイスは，まずスタート・コンディションをに，9 クロックが必要となります．
デバイス・アドレスが正常に送信できたら，それに発行し通信の開始を宣言します．

続けて 8 ビットのアドレスを送信します．これは，デ次に，8 ビットのデバイス・アドレスを発行します
が，このデバイス・アドレスは表 2 のようにビット・ータを書き込む先のメモリ・アドレスとなります．デバイス・アドレスと同様にアドレスの 8 ビットを送信アサインが決められています．
デバイス・アドレスの上位 4 ビットは，デバイスの後，ACK 読み出しのクロックを発行し，ターゲット・デバイスの ACK を確認します．

タイプを表すビットで，メモリ・デバイスの場合はライト・サイクルの場合は，さらに書き込みデータ1010b となります．また，Bit3 〜 Bit1 は，チップをのビットが続きます．8 ビットのデータを送信後，ACK を確認します．
最後に，通信完了を示すために，ストップ・コンディションを発行して通信を終了します．

SDASCL

表 2 デバイス・アドレス
スタート

ストップ

図 3 スタート・コンディションとストップ・コンディションス
タートデバイス・アドレス

書
き込
みB7

B6

B5

B4B3

B2

B1

B0

10

10

A2

A1

A0

R/W

ワード・アドレスデータス
トップ

SDAライン
M
SB

L R A
S / C
BW KM
SB

L A
S C
B K

ACK

図 4 AT24C02 のバイト・ライトのフォーマット

2006 年 6 月号

161