ISD94100 Series Technical Reference Manual
Sep 9, 2019
Page
631
of 928
Rev1.09
IS
D
9
410
0
S
ER
IE
S
T
E
C
HN
ICA
L
RE
F
E
RE
NCE
M
AN
U
AL
6.13.5.2.3
Slave Mode
After reset by default the ISD94100 device I
2
C is not addressed and will not acknowledge the
address on I
2
C bus. Once the I2C address registers I2C_ADDRn (n=0~3) are written, and (STA,
STO, SI, AA) = (0, 0, 1, 1), the ISD94100 I2C will acknowledge the matching address presented on
I2C bus. Figure 6.13-15 shows all the possible control flow in I2C slave mode.
If bus arbitration is lost in Master mode, I
2
C port switches to Slave mode immediately and can detect
its own slave address in the same serial transfer. If the detected address is SLA+W (Master want
to write data to Slave) after arbitration lost, the status code is 0x68. If the detected address is SLA+R
(Master want to read data from Slave) after arbitration lost, the status code is 0xB0.
Note:
During I
2
C communication, the SCL clock will be released when writing ‘1’ to clear SI flag in
slave mode.
S
(STA,STO,SI,AA)=(1,0,1,1)
...
...
Switch to not addressed mode
Own SLA will be recognized
Send START when bus free
S
(STA,STO,SI,AA)=(1,0,1,0)
...
...
Switch to not addressed mode
Own SLA will not be recognized
Send START when bus free
...
(STA,STO,SI,AA)=(0,0,1,0)
Switch to not addressed mode
Own SLA will not be recognized
Become I
2
C
Master
Become I
2
C
Master
Bus
Free
S
I2C_DAT
(SLA+R)
ACK
(STA,STO,SI,AA)=(0,0,1,1)
STATUS=0xA8
I2C_DAT
(Data)
ACK
I2C_DAT=Data
(STA,STO,SI,AA)=(0,0,1,1)
...
I2C_DAT
(Data)
I2C_DAT=Data
(STA,STO,SI,AA)=(0,0,1,0)
STATUS=0xB8
Switch to not addressed mode
Own SLA will be recognized
ACK
I2C_DAT
(Data)
I2C_DAT=Data
(STA,STO,SI,AA)=(0,0,1,0)
NAK
STATUS=0xC8
STATUS=0xC0
(Arbitration Lost)
STATUS=0xB0
I2C_DAT
(SLA+W)
ACK
STATUS=0x60
I2C_DAT
(Data)
ACK
NAK
(STA,STO,SI,AA)=(0,0,1,1)
I2C_DAT
(Data)
(STA,STO,SI,AA)=(0,0,1,0)
STATUS=0x80
STATUS=0x88
Arbitration Lost
Master to Slave
Slave to Master
STATUS=0xA0
(Arbitration Lost)
STATUS=0x68
P
Sr
Sr
P
STATUS=0xA0
Sr
...
(STA,STO,SI,AA)=(0,0,1,1)
Switch to not addressed mode
Own SLA will be recognized
Become I
2
C
Slave
STATUS=0xA0
STATUS=0xA0
Sr
I2C_DAT=Data
(STA,STO,SI,AA)=(0,0,1,X)
I2C_DAT=Data
(STA,STO,SI,AA)=(0,0,1,X)
...
(STA,STO,SI,AA)=(0,0,1,1)
...
Sr
(STA,STO,SI,AA)=(0,0,1,1)
(STA,STO,SI,AA)=(0,0,1,X)
(STA,STO,SI,AA)=(0,0,1,X)
I2C_DAT
(SLA+W)
I2C_DAT
(SLA+R)
ACK
ACK
Figure 6.13-15 Slave Mode Control Flow
If I
2
C is still receiving data in addressed Slave mode but got a STOP or Repeat START, the status