(パワーマネージメントユニット)
10.11 I 2 C の動作モードの詳細
10.11.3 スレーブレシーバモード
スレーブレシーバモードでは、多数のデータバイトをマスタトランスミッタから受信しま
す(Figure 28を参照)。スレーブレシーバモードを開始するには、以下のようにI2ADRと
I2CONをロードする必要があります。
Fig 27. Format and states in the Master Receiver mode
A
to Master transmit mode, entry
= MT MR
to corresponding states in Slave
mode A
R SLA S
R SLA S
W
A A OR A
A P
other Master continues
other Master continues
A other Master continues 48H
40H 58H
10H
68H 78H B0H
38H 38H
arbitration lost in Slave address or Acknowledge bit 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 transmitter
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
DATA A
DATA
50H
A DATA
P
08H
FT D RAF FT DR
AFT DRA
FT D FT D
RA FT D
RA FT D
RA FT DR
A 上位7ビットは、マスタによってアドレス指定されたときにI2Cブロックが応答する先の アドレスです。 LSB(GC)を設定している場合、I2C ブロックはゼネラルコールアドレス
(0x00)に応答します。それ以外の場合、ゼネラルコールアドレスは無視されます。
I2Cバスの速度設定は、スレーブモードのI2Cブロックには影響を与えません。 I2ENをロ ジック1に設定して、I2Cブロックをイネーブルにします。 AAビットを設定して、I2Cブ ロックが自身のスレーブアドレスまたはゼネラルコールアドレスに肯定応答できるよう にする必要があります。 STA、STO、SIはリセットする必要があります。
I2ADRとI2CONが初期化済みの場合、I2Cブロックがスレーブレシーバモードで動作する ために、I2C ブロックは自身のスレーブアドレスとその後に続くデータ方向ビット「0」
(W)によってアドレス指定されるまで待機します。自身のスレーブアドレスとWビット を受信すると、シリアル割り込みフラグ(SI)が設定され、有効なステータスコードを
I2STATから読み取ることができます。このステータスコードは、状態サービスルーチンへ
のベクタ化に使用されます。これらのステータスコードそれぞれに対して取るべき適切 なアクションの詳細をTable 158に示します。 I2Cブロックがマスタモードの間にアービト レーションを失った場合にも、スレーブレシーバモードに切り替わることがあります(ス テータス0x68および0x78を参照)。
転送中にAAビットがリセットされた場合、I2Cブロックは次に受信したデータバイトの 後でNOT ACK(ロジック1)をSDAに返します。 AAのリセット中、I2Cブロックは自身 のスレーブアドレスやゼネラルコールアドレスには応答しません。ただし、I2C バスの監 視は継続しており、アドレス認識はAA を設定することによっていつでも再開できます。
これは、AAビットを使用して、I2Cブロックを一時的にI2Cバスから隔離できることを意 味します。
Table 156. I2C0ADR and I2C1ADR usage in Slave Receiver mode
Bit 7 6 5 4 3 2 1 0
Symbol own slave 7-bit address GC
Table 157. I2C0CONSET and I2C1CONSET used to initialize Slave Receiver mode
Bit 7 6 5 4 3 2 1 0
Symbol - I2EN STA STO SI AA -
-Value - 1 0 0 0 1 -
-Table 158. Slave Receiver 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
0x60 自身のSLA+Wを受信
済み。ACKを返送済み。
No I2DAT action or X 0 0 0 データバイトを受信し、NOT ACKを返す。
No I2DAT action X 0 0 1 データバイトを受信し、ACKを返す。
0x68 マ ス タ の と き に No I2DAT action or X 0 0 0 データバイトを受信し、NOT ACKを返す。
FT D RAF FT DR
AFT DRA
FT D FT D
RA FT D
RA FT D
RA FT DR
A 0x70 ゼネラルコールアド
レス(0x00)を受信済 み。ACKを返送済み。
No I2DAT action or X 0 0 0 データバイトを受信し、NOT ACKを返す。
No I2DAT action X 0 0 1 データバイトを受信し、ACKを返す。
0x78 マ ス タ の と き に SLA+R/W でアービト レーションを失った。
ゼネラルコールアド レスを受信済み、ACK を返送済み。
No I2DAT action or X 0 0 0 データバイトを受信し、NOT ACKを返す。
No I2DAT action X 0 0 1 データバイトを受信し、ACKを返す。
0x80 以前は自身のSLVアド レスでアドレス指定 されていた。DATA を 受信済み。ACKを返送 済み。
Read data byte or X 0 0 0 データバイトを受信し、NOT ACKを返す。
Read data byte X 0 0 1 データバイトを受信し、ACKを返す。
0x88 以前は自身のSLAでア ドレス指定されてい た。DATA バイトを受 信済み。NOT ACKを返 送済み。
Read data byte or 0 0 0 0 アドレス指定されていない SLV モードに 切り替わる。自身のSLAまたはゼネラル コールアドレスを認識しない。
Read data byte or 0 0 0 1 アドレス指定されていない SLV モードに 切り替わる。自身の SLA を認識する。
I2ADR[0] =ロジック1 の場合、ゼネラル コールアドレスを認識する。
Read data byte or 1 0 0 0 アドレス指定されていない SLV モードに 切り替わる。自身のSLAまたはゼネラル コールアドレスを認識しない。バスが解 放されたときにSTART状態を送信する。
Read data byte 1 0 0 1 アドレス指定されていない SLV モードに
切り替わる。自身の SLA を認識する。
I2ADR[0] =ロジック1 の場合、ゼネラル コールアドレスを認識する。バスが解放 されたときにSTART状態を送信する。
0x90 以前はゼネラルコー ルでアドレス指定さ れていた。DATA バイ トを受信済み。ACKを 返送済み。
Read data byte or X 0 0 0 データバイトを受信し、NOT ACKを返す。
Read data byte X 0 0 1 データバイトを受信し、ACKを返す。
Table 158. Slave Receiver 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
FT D RAF FT DR
AFT DRA
FT D FT D
RA FT D
RA FT D
RA FT DR
A 0x98 以前はゼネラルコー
ルでアドレス指定さ れていた。DATA バイ ト を 受 信 済 み。NOT ACKを返送済み。
Read data byte or 0 0 0 0 アドレス指定されていない SLV モードに 切り替わる。自身のSLAまたはゼネラル コールアドレスを認識しない。
Read data byte or 0 0 0 1 アドレス指定されていない SLV モードに 切り替わる。自身の SLA を認識する。
I2ADR[0] =ロジック1 の場合、ゼネラル コールアドレスを認識する。
Read data byte or 1 0 0 0 アドレス指定されていない SLV モードに 切り替わる。自身のSLAまたはゼネラル コールアドレスを認識しない。バスが解 放されたときにSTART状態を送信する。
Read data byte 1 0 0 1 アドレス指定されていない SLV モードに
切り替わる。自身の SLA を認識する。
I2ADR[0] =ロジック1 の場合、ゼネラル コールアドレスを認識する。バスが解放 されたときにSTART状態を送信する。
0xA0 まだ SLV/REC または
SLV/TRXとしてアドレ ス指定されている間 に、STOP 状態または Repeated START 状態 を受信した。
No STDAT action or
0 0 0 0 アドレス指定されていない SLV モードに 切り替わる。自身のSLAまたはゼネラル コールアドレスを認識しない。
No STDAT action or
0 0 0 1 アドレス指定されていない SLV モードに 切り替わる。自身の SLA を認識する。
I2ADR[0] =ロジック1 の場合、ゼネラル コールアドレスを認識する。
No STDAT action or
1 0 0 0 アドレス指定されていない SLV モードに 切り替わる。自身のSLAまたはゼネラル コールアドレスを認識しない。バスが解 放されたときにSTART状態を送信する。
No STDAT action 1 0 0 1 アドレス指定されていない SLV モードに
切り替わる。自身の SLA を認識する。
I2ADR[0] =ロジック1 の場合、ゼネラル コールアドレスを認識する。バスが解放 されたときにSTART状態を送信する。
Table 158. Slave Receiver 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
FT D RAF FT DR
AFT DRA
FT D FT D
RA FT D
RA FT D
RA FT DR
A
Fig 28. Format and states in the Slave Receiver mode
A
A P OR S
A W SLA
S
P OR S A
A
68H
60H 80H
88H
reception of the General Call address and one or more Data bytes
arbitration lost as Master and addressed as Slave
last data byte received is Not acknowledged
arbitration lost as Master and addressed as Slave by General Call
reception of the own Slave address and one or more Data bytes all are acknowledged
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
DATA A
DATA
80H A0H
last data byte is Not acknowledged
A P OR S
A
70h 90h
DATA A
DATA
90h A0H
GENERAL CALL
A
98h
P OR S
A
78h
DATA
FT D RAF FT DR
AFT DRA
FT D FT D
RA FT D
RA FT D
RA FT DR
A