
NUC970 Technical Reference Manual
Publication Release Date: Dec. 15, 2015
- 520 -
Revision V1.30
NUC97
0
T
E
CHNIC
A
L
RE
F
E
RE
N
CE
MA
NUA
L
START condition
STOP condition
SCL
SDA
Figure 5.18-4 START and STOP conditions
Slave Address Transfer
5.18.5.4
The first byte of data transferred by the master immediately after the START signal is the slave
address (SLA). This is a 7-bits calling address followed by a Read/Write (R/W) bit. The R/W bit
signals of the slave indicate the data transfer direction. No two slaves in the system can have the
same address. Only the slave with an address that matches the one transmitted by the master will
respond by returning an acknowledge bit by pulling the SDA low at the 9th SCL clock cycle.
The core treats a Slave Address Transfer as any other write action. Store the slave device’s
address in the Transmit Register (TxR) and set the WRITE bit. The core will then transfer the
slave address on the bus.
MSB
LSB
R/W
A0
A1
A2
A3
A4
A5
A6
slave address
The first byte after the START procedure
Data Transfer
5.18.5.5
When a slave receives a correct address with an R/W bit, the data will follow R/W bit specified to
transfer. Each transferred byte is followed by an acknowledge bit on the 9th SCL clock cycle. If
the slave signals a Not Acknowledge (NACK), the master can generate a STOP signal to abort
the data transfer or generate a Repeated START signal and start a new transfer cycle.
If the master, as the receiving device, does Not Acknowledge (NACK) the slave, the slave
releases the SDA line for the master to generate a STOP or Repeated START signal.
To write data to a slave, store the data to be transmitted in the Transmit Register (TxR) and set
the WRITE bit. To read data from a slave, set the READ bit. During a transfer the core set the
I2C_TIP flag, indicating that a Transfer is In Progress. When the transfer is done the I2C_TIP flag
is cleared, the IF flag set if enabled, then an interrupt generated. The Receive Register (RxR)
contains valid data after the IF flag has been set. The software may issue a new write or read
command when the I2C_TIP flag is cleared.