Figure 3-4. i – Cirrus Logic CS4953xx User Manual

Page 37

Advertising
background image

3-5

Copyright 2010 Cirrus Logic, Inc.

DS732UM10

I2C Port
CS4953xx Hardware User’s Manual

The number of bytes that can be transmitted per transfer is unrestricted. Data is transferred with the most-
significant bit (MSB) first. The first byte is an address byte that is always sent by the master after a Start or

repeated Start condition. This byte must be a 7-bit I

2

C slave address + R/W bit. The 7-bit I

2

C address for

the CS4953xx is 1000000b (0x80). The R/W bit is used to notify the slave if the current transaction is for
the master to write data to the slave (R/W = 0) or read data from the slave (R/W = 1).

After the master has sent the address byte, the master releases the SCP1_SDA line. If the slave received
the address byte, it will drive the SCP1_SDA line low to acknowledge (ACK) to the master that the byte
was received. The SCP1_SDA line must remain stable and low during the high period of the next clock
pulse. When a slave does not acknowledge the slave address, the data line must be left high by the slave
(NACK).

Figure 3-4. I

2

C Address with ACK and NACK

For write operations, the R/W bit must be set to zero (R/W = 0, Address = 0x80). After the 8-bit data byte
has been clocked, the master will release the SCP1_SDA line. If the slave received the byte correctly, it
will drive the SCP1_SDA line low for the next bit clock to acknowledge (ACK) that the data was received.
If the data was not received correctly, the slave can communicate this by leaving the SCP1_SDA line high
(NACK).

For read operations, the R/W bit must be set to one (R/W = 1, Address = 0x81), then the master will read
a data byte from the slave. After the 8-bit data byte has been clocked, the master will release the
SCP1_SDA line. If the master received the byte correctly, it will drive the SCP1_SDA line low for the next
bit clock to acknowledge (ACK) that the data was received. If the data was not received correctly, the
master can communicate this by leaving the SCP1_SDA line high (NACK). The protocol on the last byte,
however, is different. When the master receives the last byte, it signals the end of the data to the slave by
allowing SCP1_SDA to float high (NACK).

Start

SCP1_CLK

SCP1_SDA

A[6]

A[5]

A[4]

A[3]

A[2]

A[1]

A[0]

R/W

ACK

M

S

Start

SCP1_CLK

SCP1_SDA

A[6]

A[5]

A[4]

A[3]

A[2]

A[1]

A[0]

R/W

NACK

M

S

M = Master Drives SDA
S = Slave Drives SDA

Advertising