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

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

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

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

10.11 I 2 C の動作モードの詳細

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

マスタトランスミッタモードでは、多数のデータバイトがスレーブレシーバに送信されま

す(Figure 26を参照)。マスタトランスミッタモードに切り替える前に、I2CONを以下の

ように初期化する必要があります。

I2Cの速度は、I2SCLLおよびI2SCLHレジスタでも設定する必要があります。 I2ENをロジッ ク1に設定して、I2Cブロックをイネーブルにします。 AAビットがリセットされると、I2C ブロックは、別のデバイスがバスのマスタになった場合、自身のスレーブアドレスまたは ゼネラルコールアドレスに肯定応答しません。つまり、AA がリセットされると、I2C イ ンターフェースはスレーブモードに切り替わることができません。 STA、STO、SIはリセッ トする必要があります。

マスタトランスミッタモードには、STAビットを設定することによって切り替えることが できます。 I2CロジックはI2Cバスをテストし、バスが解放されるとすぐにSTART 状態を 生成します。 START状態が送信されると、シリアル割り込みフラグ(SI)が設定され、ス テータスレジスタ(I2STAT)内のステータスコードが 0x08 になります。割り込みサービ スルーチンはこのステータスコードを使用して、スレーブアドレスおよびデータ方向ビッ

ト(SLA+W)とともにI2DAT をロードする、適切な状態サービスルーチンに切り替わり

ます。このときI2CON内のSIビットをリセットしなければ、シリアル転送は続行できま

せん。

スレーブアドレスと方向ビットが送信済みで、ACK ビットを受信すると、シリアル割り 込みフラグ(SI)が再度設定され、I2STAT 内で複数のステータスコードが可能になりま す。マスタモードでは0x18、0x20、または0x38、スレーブモードがイネーブルであれば

(AA = ロジック1)、0x68、0x78、または0xB0です。これらのステータスコードそれぞれ に対して取るべき適切なアクションの詳細をTable 154に示します。 Repeated START状態

(状態0x10)の後、 I2Cブロックは、I2DATをSLA+Rとともにロードすることにより、マ スタレシーバモードに切り替えることができます。

Table 153. I2CONSET used to initialize Master Transmitter mode

Bit 7 6 5 4 3 2 1 0

Symbol - I2EN STA STO SI AA -

-Value - 1 0 0 0 x -

-FT D RAF FT DR

AFT DRA

FT D FT D

RA FT D

RA FT D

RA FT DR

A Table 154. Master Transmitter mode

Status Code (I2CSTAT)

Status of the I2C-bus and hardware

Application software response Next action taken by I2C hardware To/From I2DAT To I2CON

STA STO SI AA

0x08 START 状態を送信済

み。

Load SLA+W; clear STA

X 0 0 X SLA+Wを送信する。ACKビットを受信す

る。

0x10 Repeated START 状態 を送信済み。

Load SLA+W or X 0 0 X 同上。

Load SLA+R; Clear STA

X 0 0 X SLA+W を送信する。I2C ブロックが

MST/RECモードに切り替わる。

0x18 SLA+W を送信済み。

ACKを受信済み。

Load data byte or 0 0 0 X データバイトを送信する。ACK ビットを 受信する。

No I2DAT action or 1 0 0 X Repeated STARTを送信する。

No I2DAT action or 0 1 0 X STOP 状態を送信する。STO フラグをリ セットする。

No I2DAT action 1 1 0 X 後にSTART状態が続くSTOP状態を送信 する。STOフラグをリセットする。

0x20 SLA+W を送信済み。

NOT ACKを受信済み。

Load data byte or 0 0 0 X データバイトを送信する。ACK ビットを 受信する。

No I2DAT action or 1 0 0 X Repeated STARTを送信する。

No I2DAT action or 0 1 0 X STOP 状態を送信する。STO フラグをリ セットする。

No I2DAT action 1 1 0 X 後にSTART状態が続くSTOP状態を送信 する。STOフラグをリセットする。

0x28 I2DAT 内のデータバイ

トを送信済み。ACKを 受信済み。

Load data byte or 0 0 0 X データバイトを送信する。ACK ビットを 受信する。

No I2DAT action or 1 0 0 X Repeated STARTを送信する。

No I2DAT action or 0 1 0 X STOP 状態を送信する。STO フラグをリ セットする。

No I2DAT action 1 1 0 X 後にSTART状態が続くSTOP状態を送信 する。STOフラグをリセットする。

0x30 I2DAT 内のデータバイ

ト を 送 信 済 み。NOT ACKを受信済み。

Load data byte or 0 0 0 X データバイトを送信する。ACK ビットを 受信する。

No I2DAT action or 1 0 0 X Repeated STARTを送信する。

No I2DAT action or 0 1 0 X STOP 状態を送信する。STO フラグをリ セットする。

No I2DAT action 1 1 0 X 後にSTART状態が続くSTOP状態を送信 する。STOフラグをリセットする。

0x38 SLA+R/W またはデー

タバイトでアービト レーションを失った。

No I2DAT action or 0 0 0 X I2Cバスを解放する。アドレス指定されて いないスレーブに切り替わる。

No I2DAT action 1 0 0 X バスが解放されたときにSTART 状態を送

信する。

FT D RAF FT DR

AFT DRA

FT D FT D

RA FT D

RA FT D

RA FT DR

A

Fig 26. Format and states in the Master Transmitter mode

DATA

A

R W SLA S

DATA A

SLA W

to Master receive

mode, entry

= MR MT

to corresponding states in Slave mode

A OR A A OR A

A

other Master continues

other Master continues

A other Master continues 20H

08H 18H 28H

30H 10H

68H 78H B0H

38H 38H

arbitration lost in Slave address or Data byte Not Acknowledge received after a Data byte Not Acknowledge received after the Slave address next transfer started with a Repeated Start condition

arbitration lost and addressed as Slave successful transmission to a Slave Receiver

from Master to Slave

from Slave to Master

any number of data bytes and their associated Acknowledge bits

n this number (contained in I2STA) corresponds to a defined state of the I2C bus

A P

P

S 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 (ページ 152-155)