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 I2C-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 (I2C-bus addresses and data) in Byte and
Buffered modes
Dataacknowledge/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 I2C-bus addresses. Table43 shows how this
is performed based on the differentcontrol 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 Dataacknowledge management
AA GC LB MODE Address Data received[1]
Master mode: the PCA9665 generates a START command and controls the I2C-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] bytes1) = ACK;
lastbyte = NACK
Slave mode: I2C-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
[2]
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;
lastbyte = NACK[2]
Slave mode: I2C-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;
lastbyte = NACK[2]