
MC97F6108A User’s manual
16. Inter Integrated Circuit (I2C)
175
16.7.2
I2C interrupt service
I2C Interrupt service will use for next management action and data load/read from I2C block after I2C
H/W block operation (as I2C Master/ Slave device). Because I2C block acts I2C data receiving/writing
as a byte unit, I2C block make I2C interrupt for next action of I2C block. While the interrupt happen, I2C
block serve the state of I2C bus condition and operation result to I2CSR register. Interrupt service look
both registers of I2CMR and I2CSR and do next steps (Save a data from I2CDR, load a data to I2CDR,
make STOP condition or Re-start so on).
I2C Interrupt occur at after the following cases
1.
As I2C Master Device
—
Sending a byte on I2CDR register after setting Start bit. ( GCALL interrupt )
—
Sending a byte on I2CDR register after write to I2CSR. ( TEND interrupt )
—
Receiving a byte on I2CDR after write to I2CSR ( TEND interrupt )
—
Occurring an arbitration loss ( MLOST interrupt )
—
Detecting Stop condition ( STOP interrupt )
2.
As I2C Slave device
—
Getting start condition and same device address from a Master (SSEL interrupt)
—
Sending a byte on I2CDR register after write to I2CSR. ( TEND interrupt )
—
Receiving a byte on I2CDR after write to I2CSR ( TEND interrupt )
—
Detecting Stop condition ( STOP interrupt )
Depended on above results I2C service provide services to read/write data from/to I2CDR, generate
STOP condition, make next I2C Block action by writing a data to I2CSR register.
Bus arbitration of I2C block processes from I2C bus start condition to last data of I2C data frame. If
getting an arbitration loss (MLOST interrupt), I2C interrupt service make I2C block Reset for bus free.