
ISD91200 Series Technical Reference Manual
Release Date: Sep 16, 2019
- 162 -
Revision 2.4
DATA.7
DATA.6
DATA.5
DATA.4
DATA.3
DATA.2
DATA.1
DATA.0
I2C Data Register:
shifting direction
Figure 5-22 I2C Data Shift Direction
5.6.4.3
Control Register (I2C_CTL)
The CPU can read from and write to this 8-bit field of I2C_CTL[7:0]. Two bits are affected by hardware:
the SI bit is set when the I2C hardware requests a serial interrupt, and the STO bit is cleared when a
STOP condition is present on the bus. The STO bit is also cleared when I2CEN = "0".
INTEN
Enable Interrupt.
I2CEN
Set to enable I2C serial function block. When I2CEN=1 the I2C serial function is enabled.
STA
I2C START Control Bit. Setting STA to logic 1 enters master mode, the I2C hardware
sends a START or repeat START condition to bus when the bus is free.
STO
I2C STOP Control Bit. In master mode, setting STO transmits a STOP condition to the bus.
The I2C hardware will check the bus condition and if a STOP condition is detected this flag
will be cleared by hardware. In a slave mode, setting STO resets I2C hardware to the
defined “not addressed” slave mode. This means it is NO LONGER in the slave receiver
mode to receive data from the master transmit device.
SI
I2C Interrupt Flag. When a new SIO state is present in the I2C_STATUS register, the SI
flag is set by hardware, and if bit INTEN (I2C_CTL[7]) is set, the I2C interrupt is requested.
SI must be cleared by software. Clear SI is by writing one to this bit.
AA
Assert Acknowledge Control Bit. When AA=1 prior to address or data received, an
acknowledged (low level to SDA) will be returned during the acknowledge clock pulse on
the SCL line when:
1.) A slave is acknowledging the address sent from master,
2.) A receiver device is acknowledging the data sent by a transmitter.
When AA=0 prior to address or data received, a Not acknowledged (high level to SDA) will
be returned during the acknowledge clock pulse on the SCL line.
5.6.4.4
Status Register (I2C_STATUS)
I2C_STATUS[7:0] is an 8-bit read-only register. The three least significant bits are always 0. The bit
field I2C_STATUS[7:3] contains the status code. There are 26 possible status codes. When
I2C_STATUS[7:0] contains F8H, no serial interrupt is requested. All other I2C_STATUS[7:3] values
correspond to defined SIO states. When each of these states is entered, a status interrupt is requested
(SI = 1). A valid status code is present in I2C_STATUS[7:3] one machine cycle after SI is set by
hardware and is still present one machine cycle after SI has been reset by software.
In addition, state 00H stands for a Bus Error. A Bus Error occurs when a START or STOP condition is
present at an illegal position in the format frame. Examples of illegal positions are during the serial
transfer of an address byte, a data byte or an acknowledge bit. To recover I2C from bus error, STO
should be set and SI should be clear to enter not addressed slave mode. Then clear STO to release
bus and to wait new communication. I2C bus cannot recognize stop condition during this action when
bus error occurs.
5.6.4.5
I2C Clock Baud Rate Bits (I2C_CLKDIV)
The data baud rate of I2C is determined by I2C_CLKDIV[7:0] register when SIO is in a master mode. It
is not important when SIO is in a slave mode. In the slave modes, SIO will automatically synchronize