1997 Oct 21 17
Philips Semiconductors Product specification
I
2
C-bus controller
PCF8584
Fig.7 PCF8584 master receiver mode.
(1) The first read of the S0 register is a ‘dummy read’ of the slave address which should be discarded. The first read of the S0 register simultaneously
reads the current value of S0 and then transfers the first valid data byte from the I
2
C-bus to S0.
handbook, full pagewidth
A0 = LOW
Load 'Slave Address' into S0 register:
'Slave Address' = 7 bits + R/W = 1.
Is the I
2
C-bus busy?
PCF8584 generates 'START' condition,
sends out slave address + RD to I
2
C-bus and
generates 9th clock pulse for slave ACK.
Set-up software counters.
Set ACK bit S1 to 0 in
preparation for negative
acknowledgement.
PCF8584 generates
'STOP' condition.
PCF8584 goes into
slave receiver mode.
This command transfers
the final data byte from
the data buffer to accumulator.
Because the STOP condition
was previously executed, no
I
2
C-bus activity takes place.
This command simultaneously
receives the final data byte
from the I
2
C-bus and loads
it into register S0.
Neg. ACK is also sent.
is bus busy?
(BB = 0?)
START
END
send byte 'slave address' to S0
A0 = HIGH
read byte from S1 status register
A0 = HIGH
send byte C5H to S1 control register
A0 = HIGH
read byte from S1 status register
A0 = LOW
read data byte from S0 register
(1)
n = n + 1
n = 0 (data byte counter)
m = number of data bytes
to be read
yes
no
A0 = HIGH
send byte 40H to control register S1
A0 = LOW
read data byte from S0 register
(1)
A0 = HIGH
read byte from S1 status register
A0 = HIGH
send byte C3H to S1
A0 = LOW
read final data byte from S0 register
PIN = 0?
no
yes
slave ACK?
(LRB = 0?)
n = m − 1?
yes
no no
(an error
has occured)
PIN = 0?
yes
MGL009