Datasheet
PCAL6416A All information provided in this document is subject to legal disclaimers. © NXP Semiconductors N.V. 2014. All rights reserved.
Product data sheet Rev. 6 — 9 October 2014 20 of 61
NXP Semiconductors
PCAL6416A
Low-voltage translating 16-bit I
2
C-bus/SMBus I/O expander
8.2 Read commands
To read data from the PCAL6416A, the bus master must first send the PCAL6416A
address with the least significant bit set to a logic 0 (see Figure 9
for device address).
The command byte is sent after the address and determines which register is to be
accessed.
After a restart, the device address is sent again, but this time the least significant bit is set
to a logic 1. Data from the register defined by the command byte is sent by the
PCAL6416A (see Figure 14
and Figure 17). Data is clocked into the register on the rising
edge of the ACK clock pulse. After the first byte is read, additional bytes may be read, but
the data now reflects the information in the other register in the pair. For example, if
Input Port 1 is read, the next byte read is Input Port 0.There is no limit on the number of
data bytes received in one read transmission, but on the final byte received the bus
master must not acknowledge the data.
After a subsequent restart, the command byte contains the value of the next register to be
read in the pair. For example, if Input Port 1 was read last before the restart, the register
that is read after the restart is the Input Port 0.
Fig 14. Read from device registers
10000
AD
DR
0
AS0
START condition R/W
acknowledge
from slave
002aah046
A
acknowledge
from slave
SDA
A P
acknowledge
from master
data from lower or
upper byte of register
DATA (first byte)
slave address
STOP
condition
S
(repeated)
START condition
(cont.)
(cont.)
10000
AD
DR
1 A0
R/W
acknowledge
from slave
slave address
at this moment master-transmitter becomes master-receiver
and slave-receiver becomes slave-transmitter
NA
no acknowledge
from master
data from upper or
lower byte of register
DATA (last byte)
MSB LSB MSB LSB
1/0 0 0 1/0 1/0 1/0 1/00
command byte
