• 検索結果がありません。

I 2 C の動作モード

ドキュメント内 LPC111x UM Rev0015 Japanese (ページ 142-147)

(パワーマネージメントユニット)

10.9 I 2 C の動作モード

特定のアプリケーションで、I2Cブロックは、マスタ、スレーブ、またはその両方として 動作することが可能です。スレーブモードで、I2Cハードウェアは4つのスレーブアドレ スおよびゼネラルコールアドレスのうちのいずれか1つを探します。これらのアドレスの うちの1つが検出されると、割り込みが要求されます。プロセッサがバスマスタになろう とした場合、ハードウェアはバスが解放されるまで待ってから、マスタモードに切り替え ます。それにより、可能なスレーブ動作は割り込まれません。マスタモードでバスアービ トレーションロストが発生すると、I2C ブロックはすぐにスレーブモードに切り替わり、

同じシリアル転送の中で自身のスレーブアドレスを検出することができます。

Table 148. I2C Data buffer register (I2C0DATA_BUFFER - 0x4000 002C) bit description

Bit Symbol Description Reset value

7:0 Data このレジスタには、I2DATシフトレジスタの8 MSBの内容が入っ ています。

0

31:8 - 予約済み。予約ビットから読み取った値は未定義です。 0

Table 149. I2C Mask registers (I2C0MASK[0, 1, 2, 3] - 0x4000 00[30, 34, 38, 3C]) bit description

Bit Symbol Description Reset value

0 - 予約済み。ユーザーソフトウェアによって予約ビットに1を書 き込まないでください。このビットは、常に0として読み取ら れます。

0

7:1 MASK マスクビット。 0x00

31:8 - 予約済み。予約ビットから読み取った値は未定義です。 0

FT D RAF FT DR

AFT DRA

FT D FT D

RA FT D

RA FT D

RA FT DR

A

10.9.1 マスタトランスミッタモード

このモードでは、データがマスタからスレーブへと送信されます。マスタトランスミッタ モードに切り替える前に、I2CONSETレジスタをTable 150に示すように初期化する必要 があります。 I2ENを1 に設定して、I2C 機能をイネーブルにします。 AAビットが0の場 合、I2Cインターフェースは別のデバイスがバスのマスタであれば、どのアドレスでも肯 定応答しないので、スレーブモードに切り替わることができません。 STA、STO、および SIビットは0である必要があります。SIビットは、I2CONCLRレジスタ内のSICビットに 1を書き込むことによってクリアされます。 STAビットは、スレーブアドレスに書き込ん だ後、クリアする必要があります。

送信される最初のバイトには、受信デバイスのスレーブアドレス(7ビット)とデータ方 向ビットが含まれています。このモードではデータ方向ビット(R/W)は 0、すなわち書 き込みです。送信される最初のバイトには、スレーブアドレスと書き込みビットが含まれ ています。データは一度に8ビット送信されます。 1バイト送信すると、ACKビットを1 つ受信します。 START状態とSTOP状態が出力され、シリアル転送の開始と終了が示され ます。

I2Cインターフェースは、ソフトウェアがSTAビットを設定すると、マスタトランスミッ タモードに切り替わります。 I2Cロジックは、バスが解放されるとすぐにSTART状態を送 信します。 START状態が送信された後、SIビットが設定され、I2STATレジスタ内のステー タスコードが0x08になります。このステータスコードは、スレーブアドレスとI2DATレ ジスタへの書き込みビットをロードしてからSI ビットをクリアする、状態サービスルー チンへのベクタ化に使用されます。 SIは、I2CONCLRレジスタ内のSICビットに1を書き 込むことによってクリアされます。

スレーブアドレスとR/Wビットが送信済みで、ACKビットを受信すると、SIビットが再 度設定され、可能なステータスコードはマスタモードで 0x18、0x20、または 0x38、ス レーブモードがイネーブルであれば(AAを1に設定)0x68、0x78、または0xB0となり ます。これらのステータスコードそれぞれに対して取るべき適切なアクションを Table 154〜Table 159に示します。

Table 150. I2C0CONSET and I2C1CONSET used to configure Master mode

Bit 7 6 5 4 3 2 1 0

Symbol - I2EN STA STO SI AA -

-Value - 1 0 0 0 0 -

-S SLAVE ADDRESS RW=0 A DATA A DATA A/A P

n bytes data transmitted

FT D RAF FT DR

AFT DRA

FT D FT D

RA FT D

RA FT D

RA FT DR

A

10.9.2 マスタレシーバモード

マスタレシーバモードでは、データをスレーブトランスミッタから受信します。転送は、

マスタトランスミッタモードと同じ方法で開始されます。 START状態が送信されると、割 り込みサービスルーチンがスレーブアドレスとデータ方向ビットを I2C データレジスタ

(I2DAT)にロードしてから、SIビットをクリアする必要があります。この場合、データ方

向ビット(R/W)は1、すなわち読み取りです。

スレーブアドレスとデータ方向ビットが送信済みで、ACK ビットを受信すると、SI ビッ トが設定され、ステータスレジスタがステータスコードを表示します。マスタモードで可 能なステータスコードは、0x40、0x48、または 0x38 です。スレーブモードで可能なス テータスコードは、0x68、0x78、または0xB0です。詳細については、Table 155を参照し てください。

Repeated START状態の後、I2Cはマスタトランスミッタモードに切り替わることがありま す。

10.9.3 スレーブレシーバモード

スレーブレシーバモードでは、データバイトをマスタトランスミッタから受信します。ス レーブレシーバモードを初期化するには、いずれかのスレーブアドレスレジスタ

(I2ADR0-3)を書き込み、I2C制御設定レジスタ(I2CONSET)をTable 151 に示すように 書き込みます。

Fig 19. Format of Master Receiver mode

Fig 20. A Master Receiver switches to Master Transmitter after sending Repeated START

DATA

A = Acknowledge (SDA low) A = Not acknowledge (SDA high) S = START condition

P = STOP condition

S SLAVE ADDRESS RW=1 A DATA P

n bytes data received

from Master to Slave from Slave to Master

A A

A = Acknowledge (SDA low) A = Not acknowledge (SDA high) S = START condition

P = STOP condition SLA = Slave Address

Sr = Repeated START condition DATA

n bytes data transmitted

From master to slave From slave to master

A DATA A A

SLA R Sr W P

S A A SLA DATA

FT D RAF FT DR

AFT DRA

FT D FT D

RA FT D

RA FT D

RA FT DR

A I2ENを1に設定して、I2C機能をイネーブルにします。自身のスレーブアドレスまたはゼ ネラルコールアドレスに肯定応答するには、AA ビットを 1 に設定する必要があります。

STA、STO、およびSIビットは0に設定されます。

I2ADRおよびI2CONSETが初期化された後、I2Cインターフェースは、後にデータ方向ビッ トが続く自身のアドレスまたは一般アドレスによってアドレス指定されるまで待機しま す。方向ビットが0(W)の場合は、スレーブレシーバモードに切り替わります。方向ビッ トが 1(R)の場合は、スレーブトランスミッタモードに切り替わります。アドレスと方 向ビットが受信済みで、SI ビットが設定されると、有効なステータスコードをステータ スレジスタ(I2STAT)から読み取ることができます。ステータスコードとアクションにつ

いては、Table 158を参照してください。

10.9.4 スレーブトランスミッタモード

最初のバイトは、スレーブレシーバモードの場合と同様に受信して処理されます。ただし このモードでは、方向ビットが読み取り動作を示す1になります。シリアルデータはSDA を介して送信され、シリアルクロックはSCLを介して入力されます。 START状態とSTOP 状態は、シリアル転送の開始と終了として認識されます。特定のアプリケーションでは、

I2Cがマスタおよびスレーブとして動作することがあります。スレーブモードのとき、I2C ハードウェアは自身のスレーブアドレスおよびゼネラルコールアドレスを探します。こ れらのアドレスのうちの1つが検出されると、割り込みが要求されます。マイクロコント ローラがバスマスタになろうとした場合、ハードウェアはバスが解放されるまで待ってか らマスタモードに切り替わります。それにより、可能なスレーブアクションは割り込まれ ません。マスタモードでバスアービトレーションロストが発生すると、I2Cインターフェー Table 151. I2C0CONSET and I2C1CONSET used to configure Slave mode

Bit 7 6 5 4 3 2 1 0

Symbol - I2EN STA STO SI AA -

-Value - 1 0 0 0 1 -

-Fig 21. Format of Slave Receiver mode

A

A = Acknowledge (SDA low) A = Not acknowledge (SDA high) S = START condition

P = STOP condition

Sr = Repeated START condition

A A/A

n bytes data received

from Master to Slave from Slave to Master

S SLAVE ADDRESS RW=0 DATA DATA P/Sr

FT D RAF FT DR

AFT DRA

FT D FT D

RA FT D

RA FT D

RA FT DR

A

Fig 22. Format of Slave Transmitter mode

DATA

A = Acknowledge (SDA low) A = Not acknowledge (SDA high) S = START condition

P = STOP condition

A DATA

n bytes data transmitted

from Master to Slave from Slave to Master

S SLAVE ADDRESS RW=1 A A P

FT D RAF FT DR

AFT DRA

FT D FT D

RA FT D

RA FT D

RA FT DR

A

ドキュメント内 LPC111x UM Rev0015 Japanese (ページ 142-147)