(パワーマネージメントユニット)
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