Transcript
Page 1: 第6章 2本の信号線に次々と I2Cインターフェースの …toragi.cqpub.co.jp/Portals/0/backnumber/2006/06/p160-161.pdf選択するアドレスです. I2CのシリアルEEPROMにはA0からA2までのア

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の基本アクセス・タイミング

Page 2: 第6章 2本の信号線に次々と I2Cインターフェースの …toragi.cqpub.co.jp/Portals/0/backnumber/2006/06/p160-161.pdf選択するアドレスです. I2CのシリアルEEPROMにはA0からA2までのア

選択するアドレスです.

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 デバイス・アドレス


Recommended