| Table | |||
|
|
|
|
|
Code | I2C State |
| Microprocessor Response | Next I2C Action |
18h | Addr + W transmitted, |
|
| |
| ACK received |
| Write byte to DATA, clear IFLG | Transmit data byte, receive |
|
|
| OR | ACK |
|
|
|
| |
|
|
| Set STA, clear IFLG | Transmit repeated START |
|
|
| OR |
|
|
|
| Set STP, clear IFLG | Transmit STOP |
|
|
| OR |
|
|
|
| Set STA & STP, clear IFLG | Transmit STOP, then START |
|
|
|
| |
|
|
| Write extended address byte to | Transmit extended address byte |
|
|
| DATA, clear IFLG |
|
20h | Addr + W transmitted, |
| Same as code 18h | Same as code 18h |
| ACK not received |
|
|
|
38h | Arbitration lost |
| Clear IFLG | Return to idle |
|
|
| OR |
|
|
|
| Set STA, clearIFLG | Transmit START when bus is free |
68h | Arbitration lost, |
| Clear IFLG, AAK=0 | Receive data byte, transmit not ACK |
| SLA + W received, |
|
|
|
| ACK transmitted |
| OR |
|
|
|
| Clear IFLG, AAK=1 | Receive data byte, transmit ACK |
78h | Arbitration lost, |
| Same as code 68h | Same as code 68h |
| general call addr |
|
|
|
| received, ACK |
|
|
|
| transmitted |
|
|
|
B0h | Arbitration lost, SLA + R |
| Write byte to DATA, clear IFLG, | Transmit last byte, receive ACK |
| received, ACK |
| AAK=0 |
|
| transmitted |
| OR |
|
|
|
|
| |
|
|
| Write byte to DATA, clear IFLG, | Transmit data byte, receive ACK |
|
|
| AAK=1 |
|
14