Slave Read Sequence
During a read sequence, an SMBus master reads data from a slave device. The slave in this transfer will be a receiver during the ad-
dress byte, and a transmitter during all data bytes. When slave events are enabled (INH = 0), the interface enters Slave Receiver Mode
(to receive the slave address) when a START followed by a slave address and direction bit (READ in this case) is received. If hardware
ACK generation is disabled, upon entering Slave Receiver Mode, an interrupt is generated and the ACKRQ bit is set. The software
must respond to the received slave address with an ACK, or ignore the received slave address with a NACK. If hardware ACK genera-
tion is enabled, the hardware will apply the ACK for a slave address which matches the criteria set up by SMB0ADR and SMB0ADM.
The interrupt will occur after the ACK cycle.
If the received slave address is ignored (by software or hardware), slave interrupts will be inhibited until the next START is detected. If
the received slave address is acknowledged, zero or more data bytes are transmitted. If the received slave address is acknowledged,
data should be written to SMB0DAT to be transmitted. The interface enters slave transmitter mode, and transmits one or more bytes of
data. After each byte is transmitted, the master sends an acknowledge bit; if the acknowledge bit is an ACK, SMB0DAT should be writ-
ten with the next data byte. If the acknowledge bit is a NACK, SMB0DAT should not be written to before SI is cleared (an error condition
may be generated if SMB0DAT is written following a received NACK while in slave transmitter mode). The interface exits slave trans-
mitter mode after receiving a STOP. The interface will switch to slave receiver mode if SMB0DAT is not written following a Slave Trans-
mitter interrupt.
Figure 20.11 Typical Slave Read Sequence on page 239
shows a typical slave read sequence as it appears on the
bus. The corresponding firmware state diagram (combined with the slave read sequence) is shown in
. Two transmitted data bytes are shown, though any number of bytes may be transmitted. Notice that
all of the “data byte transferred” interrupts occur after the ACK cycle in this mode, regardless of whether hardware ACK generation is
enabled.
a
P
R
SLA
S
Data Byte
Data Byte
A
N
A
S = START
P = STOP
N = NACK
R = READ
SLA = Slave Address
Received by SMBus
Interface
Transmitted by
SMBus Interface
Interrupts with Hardware ACK Disabled (EHACK = 0)
Interrupts with Hardware ACK Enabled (EHACK = 1)
a
b
c
d
b
c
d
Figure 20.11. Typical Slave Read Sequence
EFM8SB2 Reference Manual
System Management Bus / I2C (SMB0)
silabs.com
| Smart. Connected. Energy-friendly.
Rev. 0.1 | 239