Pca9665 – NXP Semiconductors PCA9665 User Manual
Page 53
PCA9665_2
© NXP B.V. 2006. All rights reserved.
Product data sheet
Rev. 02 — 7 December 2006
53 of 91
NXP Semiconductors
PCA9665
Fm+ parallel bus to I
2
C-bus controller
Remark: Request to send or receive a number of bytes equal to 0 or higher than 68
(BC[6:0] = 000 0000 or BC[6:0] > 100 0100) will cause no data to be transferred and an
interrupt to be generated after writing to the I2CCON register. I2CSTA status register is
loaded with FCh that indicates that an invalid value was requested to be loaded in
I2CCOUNT.
8.7 Acknowledge management (I
2
C-bus addresses and data) in Byte and
Buffered modes
Data acknowledge/not acknowledge management can be controlled on a byte basis (Byte
mode) or on a sequence basis (Buffered mode). The PCA9665 can be programmed to
respond (ACK) or not (NACK) to two different I
2
C-bus addresses.
shows how this
is performed based on the different control bits (AA, GC, LB and MODE) and the different
modes.
[1]
Assumption is that Data Received follows the address (as defined in column “Address”); valid for slave
mode only.
[2]
Unless the master sends a STOP command before.
Table 43.
Own slave address, General Call address, and Data acknowledge management
AA
GC
LB
MODE
Address
Data received
Master mode: the PCA9665 generates a START command and controls the I
2
C-bus
0
X
X
0
not applicable
data (each byte) = NACK
1
X
X
0
not applicable
data (each byte) = ACK
X
X
0
1
not applicable
all the bytes (BC[6:0] bytes) = ACK
X
X
1
1
not applicable
all the bytes except the last one
(BC[6:0] bytes
−
1) = ACK;
last byte = NACK
Slave mode: I
2
C-bus message starting with the PCA9665’s Own Slave address
0
X
X
0
Own address = NACK
data (each byte) = NACK
1
X
X
0
Own address = ACK
data (each byte) = ACK
0
X
0
1
Own address = NACK
all the bytes (
≤
BC[6:0] bytes) = ACK
0
X
1
1
Own address = NACK
all the bytes except the last one
(BC[6:0] bytes - 1) = ACK; last
byte = NACK
1
X
0
1
Own address = ACK
all the bytes (
≤
BC[6:0] bytes) = ACK
1
X
1
1
Own address = ACK
all the bytes except the last one
(BC[6:0] bytes - 1) = ACK;
last byte = NACK
Slave mode: I
2
C-bus message starting with the General Call address
X
0
X
0
GC address = NACK
data (each byte) = NACK
0
1
X
0
GC address = ACK
data (each byte) = NACK
1
1
X
0
GC address = ACK
data (each byte) = ACK
X
0
X
1
GC address = NACK
data (each byte) = NACK
X
1
0
1
GC address = ACK
all the bytes (
≤
BC[6:0] bytes) = ACK
X
1
1
1
GC address = ACK
all the bytes except the last one
(BC[6:0] bytes - 1) = ACK;
last byte = NACK