throbber
PCF8584
`I2C-bus controller
`
`Product specification
`Supersedes data of 1997 Mar 19
`File under Integrated Circuits, IC12
`
`1997 Oct 21
`
`Lenovo
`Ex. 1009 - Page 1
`
`

`

`Product specification
`
`PCF8584
`
`SOFTWARE FLOWCHART EXAMPLES
`7
`Initialization
`7.1
`Implementation
`7.2
`I2C-BUS TIMING DIAGRAMS
`8
`LIMITING VALUES
`9
`HANDLING
`10
`DC CHARACTERISTICS
`11
`I2C-BUS TIMING SPECIFICATIONS
`12
`PARALLEL INTERFACE TIMING
`13
`APPLICATION INFORMATION
`14
`Application Notes
`14.1
`PACKAGE OUTLINES
`15
`SOLDERING
`16
`Introduction
`16.1
`DIP
`16.2
`Soldering by dipping or by wave
`16.2.1
`Repairing soldered joints
`16.2.2
`SO
`16.3
`Reflow soldering
`16.3.1
`Wave soldering
`16.3.2
`Repairing soldered joints
`16.3.3
`DEFINITIONS
`17
`LIFE SUPPORT APPLICATIONS
`18
`19 PURCHASE OF PHILIPS I2C COMPONENTS
`
`Philips Semiconductors
`
`I2C-bus controller
`
`CONTENTS
`
`1
`2
`3
`4
`5
`6
`6.1
`6.2
`6.3
`6.4
`6.5
`6.6
`6.7
`6.8
`6.8.1
`6.8.1.1
`6.8.1.2
`6.8.1.3
`6.8.1.4
`6.8.1.5
`6.8.1.6
`6.8.2
`6.8.2.1
`6.8.2.2
`6.8.2.3
`6.8.2.4
`6.8.2.5
`6.8.2.6
`6.8.2.7
`6.9
`6.10
`6.11
`6.11.1
`6.11.2
`6.12
`6.12.1
`6.12.2
`6.12.3
`
`FEATURES
`GENERAL DESCRIPTION
`ORDERING INFORMATION
`BLOCK DIAGRAM
`PINNING
`FUNCTIONAL DESCRIPTION
`General
`Interface Mode Control (IMC)
`Set-up registers S0', S2 and S3
`Own address register S0'
`Clock register S2
`Interrupt vector S3
`Data shift register/read buffer S0
`Control/status register S1
`Register S1 control section
`PIN (Pending Interrupt Not)
`ESO (Enable Serial Output)
`ES1 and ES2
`ENI
`STA and STO
`ACK
`Register S1 status section
`PIN bit
`STS
`BER
`LRB/AD0
`AAS
`LAB
`BB
`Multi-master operation
`Reset
`Comparison to the MAB8400 I2C-bus interface
`Deleted functions
`added functions
`Special function modes
`Strobe
`Long-distance mode
`Monitor mode
`
`1997 Oct 21
`
`2
`
`Lenovo
`Ex. 1009 - Page 2
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`FEATURES
`1
`— Parallel-bus to I2C-bus protocol converter and interface
`— Compatible with most parallel-bus
`microcontrollers/microprocessors including 8049, 8051,
`6800, 68000 and Z80
`— Both master and slave functions
`— Automatic detection and adaption to bus interface type
`— Programmable interrupt vector
`— Multi-master capability
`— I2C-bus monitor mode
`— Long-distance mode (4-wire)
`— Operating supply voltage 4.5 to 5.5 V
`— Operating temperature range: -40 to +85 (cid:144)C.
`
`3 ORDERING INFORMATION
`
`Product specification
`
`PCF8584
`
`2 GENERAL DESCRIPTION
`The PCF8584 is an integrated circuit designed in CMOS
`technology which serves as an interface between most
`standard parallel-bus microcontrollers/microprocessors
`and the serial I2C-bus. The PCF8584 provides both master
`and slave functions.
`Communication with the I2C-bus is carried out on a
`byte-wise basis using interrupt or polled handshake.
`It controls all the I2C-bus specific sequences, protocol,
`arbitration and timing. The PCF8584 allows parallel-bus
`systems to communicate bidirectionally with the I2C-bus.
`
`TYPE
`NUMBER
`PCF8584P
`PCF8584T
`
`PACKAGE
`DESCRIPTION
`plastic dual in-line package; 20 leads (300 mil)
`plastic small outline package; 20 leads; body width 7.5 mm
`
`NAME
`DIP20
`SO20
`
`VERSION
`SOT146-1
`SOT163-1
`
`1997 Oct 21
`
`3
`
`Lenovo
`Ex. 1009 - Page 3
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`4 BLOCK DIAGRAM
`
`Product specification
`
`PCF8584
`
`PARALLEL BUS
`
`DB7
`
`DB6
`
`DB5
`
`DB4
`
`DB3
`
`DB2
`
`DB1
`
`DB0
`
`15
`
`14
`
`13
`
`12
`
`11
`
`9
`
`8
`
`7
`
`V
`
`DD
`20
`
`V
`
`SS
`10
`
`read
`only
`
`write
`only
`
`SDA/
`SDA OUT
`
`(3)
`
`2
`
`DIGITAL
`FILTER
`
`MSB
`
`READ BUFFER
`
`DATA SHIFT REGISTER S0 AND READ BUFFER
`
`SHIFT REGISTER
`
`8
`
`COMPARATOR S0, S0'
`
`8
`
`OWN ADDRESS S0'
`
`8
`
`INTERRUPT VECTOR S3
`
`MSB
`
`(1)
`
`X
`
`(1)
`
`X
`
`LSB
`
`DATA CONTROL
`
`PCF8584
`
`3
`
`SCL/
`SCL IN
`
`(3)
`
`DIGITAL
`FILTER
`
`CLOCK REGISTER S2
`S24
`0
`0
`
`0
`
`SCL CONTROL
`
`CONTROL STATUS
`ES2
`ES1
`ES0
`
`PIN
`
`8
`
`default: 00H 80XX
` 0FH 68XXX
`
`S23
`S22
`S21
`CLOCK REGISTER S2
`8
`REGISTER S1
`STA
`ENI
`
`STO
`
`AAS
`
`LAB
`
`S20
`
`ACK
`
`BB
`
`write only
`
`read only
`
`CONTROL STATUS REGISTER S1
`AD0/
`LRB
`
`STS
`
`BER
`
`PIN
`
`0
`
`CLOCK PRESCALER
`SCL MULTIPLEXER
`BUS BUSY LOGIC
`ARBITRATION LOGIC
`
`17
`
`CS
`
`6
`
`A0
`
`19
`
`RESET/
`STROBE
`(O.C.)
`
`PARALLEL BUS CONTROL
`
`REGISTER ACCESS CONTROL
`BUS BUFFER CONTROL
`INTERRUPT CONTROL
`RESET/STROBE CONTROL
`
`18
`
`16
`
`5
`
`4
`
`WR (R/W)
`
`(2)
`
`RD (DTACK)
`
`(2)
`
`INT
`SCL OUT
`
`(3)
`
`IACK
`SDA IN
`
`(3)
`
`1
`
`CLK
`
`(1) X = don’t care.
`(2) Pin mnemonics between parenthesis indicate the 68000 mode pin designations.
`(3) These pin mnemonics represent the long-distance mode pin designations.
`
`Fig.1 Block diagram.
`
`1997 Oct 21
`
`4
`
`Lenovo
`Ex. 1009 - Page 4
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`Product specification
`
`PCF8584
`
`5 PINNING
`SYMBOL
`CLK
`SDA or
`SDA OUT
`SCL or SCL IN
`IACK or
`SDA IN
`
`INT or
`SCL OUT
`
`A0
`
`DB0
`DB1
`DB2
`VSS
`DB3
`DB4
`DB5
`DB6
`DB7
`RD (DTACK)
`
`CS
`WR (R/W)
`
`RESET/
`STROBE
`VDD
`
`PIN
`1
`2
`
`3
`4
`
`5
`
`6
`
`7
`8
`9
`10
`11
`12
`13
`14
`15
`16
`
`17
`18
`
`19
`
`20
`
`I/O
`I
`I/O
`
`I/O
`I
`
`O
`
`I
`
`DESCRIPTION
`clock input from microcontroller clock generator (internal pull-up)
`I2C-bus serial data input/output (open-drain). Serial data output in long-distance
`mode.
`I2C-serial clock input/output (open-drain). Serial clock input in long-distance mode.
`Interrupt acknowledge input (internal pull-up); when this signal is asserted the
`interrupt vector in register S3 will be available at the bus Port if the ENI flag is set.
`Serial data input in long-distance mode.
`Interrupt output (open-drain); this signal is enabled by the ENI flag in register S1.
`It is asserted when the PIN flag is reset. (PIN is reset after 1 byte is transmitted or
`received over the I2C-bus). Serial clock output in long-distance mode.
`Register select input (internal pull-up); this input selects between the control/status
`register and the other registers. Logic 1 selects register S1, logic 0 selects one of
`the other registers depending on bits loaded in ESO, ES1 and ES2 of register S1.
`bidirectional 8-bit bus Port 0
`I/O
`bidirectional 8-bit bus Port 1
`I/O
`bidirectional 8-bit bus Port 2
`I/O
`ground
`-
`bidirectional 8-bit bus Port 3
`I/O
`bidirectional 8-bit bus Port 4
`I/O
`bidirectional 8-bit bus Port 5
`I/O
`bidirectional 8-bit bus Port 6
`I/O
`bidirectional 8-bit bus Port 7
`I/O
`I/(O) RD is the read control input for MAB8049, MAB8051 or Z80-types. DTACK is the
`data transfer control output for 68000-types (open-drain).
`chip select input (internal pull-up)
`WR is the write control input for MAB8048, MAB8051, or Z80-types
`(internal pull-up). R/W control input for 68000-types.
`Reset input (open-drain); this input forces the I2C-bus controller into a predefined
`state; all flags are reset, except PIN, which is set. Also functions as strobe output.
`supply voltage
`
`I
`I
`
`I/O
`
`-
`
`1997 Oct 21
`
`5
`
`Lenovo
`Ex. 1009 - Page 5
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`Product specification
`
`PCF8584
`
`Table 1 Control signals utilized by the PCF8584 for
`microcontroller/microprocessor interfacing
`R/W
`WR
`R
`DTACK IACK
`no
`yes
`yes
`no
`no
`
`yes
`no
`
`no
`yes
`
`no
`yes
`
`yes
`no
`
`yes
`yes
`
`TYPE
`8048/
`8051
`68000
`Z80
`
`The structure of the PCF8584 is similar to that of the
`I2C-bus interface section of the Philips’
`MABXXXX/PCF84(C)XX-series of microcontrollers, but
`with a modified control structure. The PCF8584 has five
`internal register locations. Three of these (own address
`register S0', clock register S2 and interrupt vector S3) are
`used for initialization of the PCF8584. Normally they are
`only written once directly after resetting of the PCF8584.
`The remaining two registers function as double registers
`(data buffer/shift register S0, and control/status
`register S1) which are used during actual data
`transmission/reception. By using these double registers,
`which are separately write and read accessible, overhead
`for register access is reduced. Register S0 is a
`combination of a shift register and data buffer.
`Register S0 performs all serial-to-parallel interfacing with
`the I2C-bus.
`Register S1 contains I2C-bus status information required
`for bus access and/or monitoring.
`
`Interface Mode Control (IMC)
`6.2
`Selection of either an 80XX mode or 68000 mode
`interface is achieved by detection of the first WR-CS signal
`sequence. The concept takes advantage of the fact that
`the write control input is common for both types of
`interfaces. An 80XX-type interface is default. If a
`HIGH-to-LOW transition of WR (R/W) is detected while CS
`is HIGH, the 68000-type interface mode is selected and
`the DTACK output is enabled. Care must be taken that WR
`and CS are stable after reset.
`
`PCF8584
`
`20
`
`19
`
`18
`
`17
`
`16
`
`15
`
`14
`
`13
`
`12
`
`11
`
`VDD
`RESET / STROBE
`(1)
`
`WR (R/W)
`
`CS
`
`RD (DTACK)
`
`(1)
`
`DB7
`
`DB6
`
`DB5
`
`DB4
`
`DB3
`
`1 2 3 4 5 6 7 8 9 1
`
`0
`
`CLK
`
`SDA or SDA OUT
`
`SCL or SCL IN
`
`IACK or SDA IN
`
`INT or SCL OUT
`
`A0
`
`DB0
`
`DB1
`
`DB2
`
`VSS
`
`(1) Pin mnemonics between parenthesis indicate the 68000 mode
`pin designations.
`
`Fig.2 Pin configuration.
`
`FUNCTIONAL DESCRIPTION
`6
`General
`6.1
`The PCF8584 acts as an interface device between
`standard high-speed parallel buses and the serial I2C-bus.
`On the I2C-bus, it can act either as master or slave.
`Bidirectional data transfer between the I2C-bus and the
`parallel-bus microcontroller is carried out on a byte-wise
`basis, using either an interrupt or polled handshake.
`Interface to either 80XX-type (e.g. 8048, 8051, Z80) or
`68000-type buses is possible. Selection of bus type is
`automatically performed (see Section 6.2).
`
`1997 Oct 21
`
`6
`
`Lenovo
`Ex. 1009 - Page 6
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`Product specification
`
`PCF8584
`
`I2C-bus
`SCL
`
`(1.5 MHz)
`
`SIO DIVIDER
`(S21 and S20)
`
` DIVIDER
`(S24, S23, S22)
`/2, 3, 4, 5, 8
`
`EN
`
`D
`
`ENRD
`
`EN
`
`D
`
`FILTER
`t = 16CLK
`
`RESET
`STROBE
`
`CS
`
`A0
`
`WR/
`R/W
`
`RD/
`DTACK
`
`INT
`
`IACK
`
`CLK
`(50 : 50)
`
`mode select
`
`mode locked
`
`mode select
`
`(1)
`
`(2)
`
`R/W
`
`CS
`
`DTACK
`
`WR
`
`CS
`
`(1) Bus timing; 68000 mode write cycle.
`(2) Bus timing; 80XX mode.
`
`Fig.3 68000/80XX timing sequence utilized by the Interface Mode Control (IMC).
`
`1997 Oct 21
`
`7
`
`Lenovo
`Ex. 1009 - Page 7
`
`

`

`Product specification
`
`PCF8584
`
`Programming of S2 is accomplished via the parallel-bus
`when A0 = LOW, with the appropriate bit combinations set
`in control status register S1 (S1 is written when
`A0 = HIGH). Bit combinations for accessing all registers
`are given in Table 5.
`
`Table 3 Register S2 selection of clock frequency
`INTERNAL CLOCK FREQUENCY
`S23
`S22
`fclk (MHz)
`X(1)
`X(1)
`3
`0
`0
`4.43
`0
`1
`6
`1
`0
`8
`1
`1
`12
`
`S24
`0
`1
`1
`1
`1
`
`Note
`1. X = don’t care.
`
`Interrupt vector S3
`6.6
`The interrupt vector register provides an 8-bit
`user-programmable vector for vectored-interrupt
`microcontrollers. The vector is sent to the bus port
`(DB7 to DB0) when an interrupt acknowledge signal is
`asserted and the ENI (enable interrupt) flag is set. Default
`vector values are:
`— Vector is ‘00H’ in 80XX mode
`— Vector is ‘0FH’ in 68000 mode.
`On reset the PCF8584 is in the 80XX mode, thus the
`default interrupt vector is ‘00H’.
`
`Data shift register/read buffer S0
`6.7
`Register S0 acts as serial shift register and read buffer
`interfacing to the I2C-bus. All read and write operations
`to/from the I2C-bus are done via this register. S0 is a
`combination of a shift register and a data buffer; parallel
`data is always written to the shift register, and read from
`the data buffer. I2C-bus data is always shifted in or out of
`shift register S0.
`
`Philips Semiconductors
`
`I2C-bus controller
`
`Set-up registers S0', S2 and S3
`6.3
`Registers S0', S2 and S3 are used for initialization of the
`PCF8584 (see Fig.5 ‘Initialization sequence’ flowchart).
`
`Own address register S0'
`6.4
`When the PCF8584 is addressed as slave, this register
`must be loaded with the 7-bit I2C-bus address to which the
`PCF8584 is to respond. During initialization, the own
`address register S0' must be written to, regardless
`whether it is later used. The Addressed As Slave (AAS) bit
`in status register S1 is set when this address is received
`(the value in S0 is compared with the value in S0'). Note
`that the S0 and S0' registers are offset by one bit; hence,
`programming the own address register S0' with a value of
`55H will result in the value AAH being recognized as the
`PCF8584’s slave address (see Fig.1).
`Programming of S0' is accomplished via the parallel-bus
`when A0 is LOW, with the appropriate bit combinations set
`in control status register S1 (S1 is written when
`pin A0 = HIGH). Bit combinations for accessing all
`registers are given in Table 5. After reset, S0' has default
`address 00H (PCF8584 is thus initially in monitor mode,
`see Section 6.12.3).
`
`Clock register S2
`6.5
`Register S2 provides control over chip clock frequency
`and SCL clock frequency. S20 and S21 provide a selection
`of 4 different I2C-bus SCL frequencies which are shown in
`Table 2. Note that these SCL frequencies are only
`obtained when bits S24, S23 and S22 are programmed to
`the correct input clock frequency (fclk).
`
`Table 2 Register S2 selection of SCL frequency
`BIT
`
`S21
`0
`0
`1
`1
`
`S20
`0
`1
`0
`1
`
`APPROXIMATE SCL
`FREQUENCY fSCL (kHz)
`90
`45
`11
`1.5
`
`S22, S23 and S24 are used for control of the internal clock
`prescaler. Due to the possibility of varying microcontroller
`clock signals, the prescaler can be programmed to adapt
`to 5 different clock rates, thus providing a constant internal
`clock. This is required to provide a stable time base for the
`SCL generator and the digital filters associated with the
`I2C-bus signals SCL and SDA. Selection for adaption to
`external clock rates is shown in Table 3.
`
`1997 Oct 21
`
`8
`
`Lenovo
`Ex. 1009 - Page 8
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`Product specification
`
`PCF8584
`
`DB7
`
`DB6
`
`to/from microcontroller parallel bus
`DB5
`DB4
`DB3
`DB2
`DB1
`
`DB0
`
`Read Buffer
`Data Shift Register S0 and Read Buffer
`Shift register
`
`Read
`only
`
`Write
`only
`
`to/from
`I2C-Bus SDA line
`
`Fig.4 Data shift register/bus buffer S0.
`
`In receiver mode the data from the shift register is copied to the read buffer during the acknowledge phase. Further
`reception of data is inhibited (SCL held LOW) until the S0 read buffer is read (see Section 6.8.1.1).
`In the transmitter mode data is transmitted to the I2C-bus as soon as it is written to the S0 shift register if the serial I/O is
`enabled (ESO = 1).
`Remarks:
`1. A minimum of 6 clock cycles must elapse between consecutive parallel-bus accesses to the PCF8584 when the
`I2C-bus controller operates at 8 or 12 MHz. This may be reduced to 3 clock cycles for lower operating frequencies.
`2. To start a read operation immediately after a write, it is necessary to read the S0 read buffer in order to invoke
`reception of the first byte (‘dummy read’ of the address). Immediately after the acknowledgement, this first byte will
`be transferred from the shift register to the read buffer. The next read will then transfer the correct value of the first
`byte to the microcontroller bus (see Fig.7).
`
`Control/status register S1
`6.8
`Register S1 controls I2C-bus operation and provides I2C-bus status information. Register S1 is accessed by a HIGH
`signal on register select input A0. For more efficient communication between microcontroller/processor and the I2C-bus,
`register S1 has separate read and write functions for all bit positions (see Fig.3). The write-only section provides register
`access control and control over I2C-bus signals, while the read-only section provides I2C-bus status information.
`
`Table 4 Control/status register S1
`CONTROL/STATUS
`Control(1)
`Status(2)
`
`PIN
`PIN
`
`BITS
`
`ESO
`0(3)
`
`ES1
`STS
`
`ES2
`BER
`
`ENI
`AD0/LRB
`
`STA
`AAS
`
`STO
`LAB
`
`ACK
`BB
`
`MODE
`write only
`read only
`
`Notes
`1. For further information see Section 6.8.1.
`2. For further information see Section 6.8.2.
`3. Logic 1 if not-initialized.
`
`1997 Oct 21
`
`9
`
`Lenovo
`Ex. 1009 - Page 9
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`Product specification
`
`PCF8584
`
`REGISTER S1 CONTROL SECTION
`6.8.1
`The write-only section of S1 enables access to registers S0, S0', S1, S2 and S3, and controls I2C-bus operation; see
`Table 4.
`
`When the PIN bit is written with a logic 1, all status bits are reset to logic 0. This may serve as a software reset function
`(see Figs 5 to 9). PIN is the only bit in S1 which may be both read and written to. PIN is mostly used as a status bit for
`synchronizing serial communication, see Section 6.8.2.
`
`ESO enables or disables the serial I2C-bus I/O. When ESO is LOW, register access for initialization is possible. When
`ESO is HIGH, I2C-bus communication is enabled; communication with serial shift register S0 is enabled and the S1 bus
`status bits are made available for reading.
`
`Table 5 Register access control; ESO = 0 (serial interface off) and ESO = 1 (serial interface on)
`INTERNAL REGISTER ADDRESSING 2-WIRE MODE
`ES2
`IACK
`
`FUNCTION
`
`ES1
`A0
`ESO = 0; serial interface off (see note 1)
`1
`0
`0
`0
`0
`0
`0
`1
`ESO = 1; serial interface on
`1
`0
`1
`0
`0
`0
`0
`0
`X
`0
`
`X
`0
`1
`0
`
`X
`X
`0
`1
`X
`
`1(2)
`1(2)
`1(2)
`1(2)
`
`1
`1
`1
`1
`0
`
`R/W S1: control
`R/W S0': (own address)
`R/W S3: (interrupt vector)
`R/W S2: (clock register)
`
`W S1: control
`R S1; status
`R/W S0: (data)
`R/W S3: (interrupt vector)
`R S3: (interrupt vector ACK cycle))
`
`Notes
`1. With ESO = 0, bits ENI, STA, STO and ACK of S1 can be read for test purposes.
`2.
`‘X’ if ENI = 0.
`
`ES1 and ES2 control selection of other registers for initialization and control of normal operation. After these bits are
`programmed for access to the desired register (shown in Table 5), the register is selected by a logic LOW level on
`register select pin A0.
`
`This bit enables the external interrupt output INT, which is generated when the PIN bit is active (logic 0).
`This bit must be set to logic 0 before entering the long-distance mode, and remain at logic 0 during operation in
`long-distance mode.
`
`1997 Oct 21
`
`10
`
`Lenovo
`Ex. 1009 - Page 10
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`Product specification
`
`PCF8584
`
`These bits control the generation of the I2C-bus START condition and transmission of slave address and R/W bit,
`generation of repeated START condition, and generation of the STOP condition (see Table 7).
`
`Table 6 Register access control; ESO = 1 (serial interface on) and ES1 = 1; long-distance (4-wire) mode; note 1
`INTERNAL REGISTER ADDRESSING: LONG-DISTANCE (4-WIRE) MODE
`ES1
`ES2
`IACK
`FUNCTION
`1
`X
`1
`1
`X
`X
`1
`X
`X
`
`W S1: control
`R S1; status
`R/W S0; (data)
`
`A0
`1
`1
`0
`
`Note
`1. Trying to read from or write to registers other than S0 and S1 (setting ESO = 0) brings the PCF8584 out of the
`long-distance mode.
`
`Table 7 Instruction table for serial bus control
`PRESENT
`MODE
`SLV/REC
`
`STO
`
`0
`
`STA
`
`1
`
`FUNCTION
`
`START
`
`REPEAT
`START
`STOP READ;
`STOP WRITE
`DATA
`CHAINING
`NOP
`
`OPERATION
`
`transmit START + address, remain
`MST/TRM if R/W = 0;
`go to MST/REC if R/W = 1
`same as for SLV/REC
`
`transmit STOP go to SLV/REC mode; note 1
`
`send STOP, START and address after last
`master frame without STOP sent; note 2
`no operation; note 3
`
`1
`
`0
`
`1
`
`0
`
`0
`
`1
`
`1
`
`0
`
`MST/TRM
`
`MST/REC;
`MST/TRM
`MST
`
`ANY
`
`Notes
`1.
`In master receiver mode, the last byte must be terminated with ACK bit HIGH (‘negative acknowledge’).
`2.
`If both STA and STO are set HIGH simultaneously in master mode, a STOP condition followed by a START
`condition + address will be generated. This allows ‘chaining’ of transmissions without relinquishing bus control.
`3. All other STA and STO mode combinations not mentioned in Table 7 are NOPs.
`
`This bit must be set normally to a logic 1. This causes the I2C-bus controller to send an acknowledge automatically after
`each byte (this occurs during the 9th clock pulse). The bit must be reset (to logic 0) when the I2C-bus controller is
`operating in master/receiver mode and requires no further data to be sent from the slave transmitter. This causes a
`negative acknowledge on the I2C-bus, which halts further transmission from the slave device.
`
`REGISTER S1 STATUS SECTION
`6.8.2
`The read-only section of S1 enables access to I2C-bus status information; see Table 4.
`
`1997 Oct 21
`
`11
`
`Lenovo
`Ex. 1009 - Page 11
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`Product specification
`
`PCF8584
`
`‘Pending Interrupt Not’ (MSB of register S1) is a status flag
`which is used to synchronize serial communication and is
`set to logic 0 whenever the PCF8584 requires servicing.
`The PIN bit is normally read in polled applications to
`determine when an I2C-bus byte transmission/reception is
`completed. The PIN bit may also be written, see
`Section 6.8.1.
`Each time a serial data transmission is initiated (by setting
`the STA bit in the same register), the PIN bit will be set to
`logic 1 automatically (inactive). When acting as
`transmitter, PIN is also set to logic 1 (inactive) each time
`S0 is written. In receiver mode, the PIN bit is automatically
`set to logic 1 (inactive) each time the data register S0 is
`read.
`After transmission or reception of one byte on the I2C-bus
`(9 clock pulses, including acknowledge), the PIN bit will be
`automatically reset to logic 0 (active) indicating a complete
`byte transmission/reception. When the PIN bit is
`subsequently set to logic 1 (inactive), all status bits will be
`reset to logic 0. PIN is also set to zero on a BER (bus error)
`condition.
`In polled applications, the PIN bit is tested to determine
`when a serial transmission/reception has been completed.
`When the ENI bit (bit 4 of write-only section of register S1)
`is also set to logic 1 the hardware interrupt is enabled.
`In this case, the PIN flag also triggers an external interrupt
`(active LOW) via the INT output each time PIN is reset to
`logic 0 (active).
`When acting as slave transmitter or slave receiver, while
`PIN = 0, the PCF8584 will suspend I2C-bus transmission
`by holding the SCL line LOW until the PIN bit is set to
`logic 1 (inactive). This prevents further data from being
`transmitted or received until the current data byte in S0 has
`been read (when acting as slave receiver) or the next data
`byte is written to S0 (when acting as slave transmitter).
`PIN bit summary:
`— The PIN bit can be used in polled applications to test
`when a serial transmission has been completed. When
`the ENI bit is also set, the PIN flag sets the external
`interrupt via the INT output.
`— Setting the STA bit (start bit) will set PIN = 1 (inactive).
`— In transmitter mode, after successful transmission of
`one byte on the I2C-bus the PIN bit will be automatically
`reset to logic 0 (active) indicating a complete byte
`transmission.
`— In transmitter mode, PIN is set to logic 1 (inactive) each
`time register S0 is written.
`
`1997 Oct 21
`
`12
`
`— In receiver mode, PIN is set to logic 0 (active) on
`completion of each received byte. Subsequently, the
`SCL line will be held LOW until PIN is set to logic 1.
`— In receiver mode, when register S0 is read, PIN is set to
`logic 1 (inactive).
`— In slave receiver mode, an I2C-bus STOP condition will
`set PIN = 0 (active).
`— PIN = 0 if a bus error (BER) occurs.
`
`When in slave receiver mode, this flag is asserted when an
`externally generated STOP condition is detected (used
`only in slave receiver mode).
`
`Bus error; a misplaced START or STOP condition has
`been detected. Resets BB (to logic 1; inactive), sets
`PIN = 0 (active).
`
`‘Last Received Bit’ or ‘Address 0 (General Call) bit’. This
`status bit serves a dual function, and is valid only while
`PIN = 0:
`1. LRB holds the value of the last received bit over the
`I2C-bus while AAS = 0 (not addressed as slave).
`Normally this will be the value of the slave
`acknowledgement; thus checking for slave
`acknowledgement is done via testing of the LRB.
`2. AD0; when AAS = 1 (‘Addressed As Slave’ condition),
`the I2C-bus controller has been addressed as a slave.
`Under this condition, this bit becomes the ‘AD0’ bit and
`will be set to logic 1 if the slave address received was
`the ‘general call’ (00H) address, or logic 0 if it was the
`I2C-bus controller’s own slave address.
`
`‘Addressed As Slave’ bit. Valid only when PIN = 0. When
`acting as slave receiver, this flag is set when an incoming
`address over the I2C-bus matches the value in own
`address register S0' (shifted by one bit, see Section 6.4),
`or if the I2C-bus ‘General Call’ address (00H) has been
`received (‘General Call’ is indicated when AD0 status bit is
`also set to logic 1, see Section 6.8.2.4).
`
`‘Lost Arbitration’ Bit. This bit is set when, in multi-master
`operation, arbitration is lost to another master on the
`I2C-bus.
`
`Lenovo
`Ex. 1009 - Page 12
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`Product specification
`
`PCF8584
`
`‘Bus Busy’ bit. This is a read-only flag indicating when the
`I2C-bus is in use. A zero indicates that the bus is busy, and
`access is not possible. This bit is set/reset (logic 1/logic 0)
`by STOP/START conditions.
`
`Multi-master operation
`6.9
`To avoid conflict between data and repeated START and
`STOP operations, multi-master systems have some
`limitations:
`— When powering up multiple PCF8584s in multi-master
`systems, the possibility exists that one node may power
`up slightly after another node has already begun an
`I2C-bus transmission; the Bus Busy condition will thus
`not have been detected. To avoid this condition, a delay
`should be introduced in the initialization sequence of
`each PCF8584 equal to the longest I2C-bus
`transmission, see flowchart ‘PCF8584 initialization’
`(Fig.5).
`
`6.10 Reset
`A LOW level pulse on the RESET (CLK must run) input
`forces the I2C-bus controller into a well-defined state.
`All flags in S1 are reset to logic 0, except the PIN flag and
`the BB flag, which are set to logic 1. S0' and S3 are set
`to 00H.
`The RESET pin is also used for the STROBE output
`signal. Both functions are separated on-chip by a digital
`filter. The reset input signal has to be sufficiently long
`(minimum 30 clock cycles) to pass through the filter.
`The STROBE output signal is sufficiently short (8 clock
`cycles) to be blocked by the filter. For more detailed
`information on the strobe function see Section 6.12.
`
`6.11 Comparison to the MAB8400 I2C-bus interface
`The structure of the PCF8584 is similar to that of the
`MAB8400 series of microcontrollers, but with a modified
`control structure. Access to all I2C-bus control and status
`registers is done via the parallel-bus port in conjunction
`with register select input A0, and control bits ESO, ES1
`and ES2.
`
`6.11.1 DELETED FUNCTIONS
`The following functions are not available in the PCF8584:
`— Always selected (ALS flag)
`— Access to the bit counter (BC0 to BC2)
`— Full SCL frequency selection (2 bits instead of 5 bits)
`— The non-acknowledge mode (ACK flag)
`— Asymmetrical clock (ASC flag).
`
`6.11.2
`ADDED FUNCTIONS
`The following functions either replace the deleted
`functions or are completely new:
`— Chip clock prescaler
`— Assert acknowledge bit (ACK flag)
`— Register selection bits (ES1 and ES2 flags)
`— Additional status flags (BER, ‘bus error’)
`— Automatic interface control between 80XX and
`68000-type microcontrollers
`— Programmable interrupt vector
`— Strobe generator
`— Bus monitor function
`— Long-distance mode [non-I2C-bus mode (4-wire); only
`for communication between parallel-bus processors
`using the PCF8584 at each interface point].
`
`6.12 Special function modes
`6.12.1 STROBE
`When the I2C-bus controller receives its own address (or
`the ‘00H’ general call address) followed immediately by a
`STOP condition (i.e. no further data transmitted after the
`address), a strobe output signal is generated at the
`RESET/STROBE pin (pin 19). The STROBE signal
`consists of a monostable output pulse (active LOW),
`8 clock cycles long (see Fig.9). It is generated after the
`STOP condition is received, preceded by the correct slave
`address. This output can be used as a bus access
`controller for multi-master parallel-bus systems.
`
`1997 Oct 21
`
`13
`
`Lenovo
`Ex. 1009 - Page 13
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`LONG-DISTANCE MODE
`6.12.2
`The long-distance mode provides the possibility of
`longer-distance serial communication between parallel
`processors via two I2C-bus controllers. This mode is
`selected by setting ES1 to logic 1 while the serial interface
`is enabled (ESO = 1).
`In this mode the I2C-bus protocol is transmitted over
`4 unidirectional lines, SDA OUT, SCL IN, SDA IN and
`SCL IN (pins 2, 3, 4 and 5). These communication lines
`should be connected to line drivers/receivers
`(example: RS422) for long-distance applications.
`Hardware characteristics for long-distance transmission
`are then given by the chosen standard. Control of data
`transmission is the same as in normal I2C-bus mode. After
`reading or writing data to shift register S0, long-distance
`mode must be initialized by setting ESO and ES1 to
`logic 1. Because the interrupt output INT is not available in
`this operating mode, synchronization of data
`transmission/reception must be polled via the PIN bit.
`Remarks:
`Before entering the long-distance mode, ENI must be
`set to logic 0.
`When powering up an PCF8584-node in long-distance
`mode, the PCF8584 must be isolated from the 4-wire
`bus via 3-state line drivers/receivers until the PCF8584
`is properly initialized for long-distance mode. Failure to
`implement this precaution will result in system
`malfunction.
`
`6.12.3 MONITOR MODE
`When the 7-bit own address register S0' is loaded with all
`zeros, the I2C-bus controller acts as a passive I2C monitor.
`The main features of the monitor mode are:
`
`Product specification
`
`PCF8584
`
`— The controller is always selected.
`— The controller is always in the slave receiver mode.
`— The controller never generates an acknowledge.
`— The controller never generates an interrupt request.
`— A pending interrupt condition does not force SCL LOW.
`— BB is set to logic 0 after detection of a START condition,
`and reset to logic 1 after a STOP condition.
`— Received data is automatically transferred to the read
`buffer.
`— Bus traffic is monitored by the PIN bit, which is reset to
`logic 0 after the acknowledge bit of an incoming byte has
`been received, and is set to logic 1 as soon as the first
`bit of the next incoming byte is detected. Reading the
`data buffer S0 sets the PIN bit to logic 1. Data in the read
`buffer is valid from PIN = 0 and during the next 8 clock
`pulses (until next acknowledge).
`— AAS is set to logic 1 at every START condition, and
`reset at every 9th clock pulse.
`
`7 SOFTWARE FLOWCHART EXAMPLES
`7.1
`Initialization
`The flowchart of Fig.5 gives an example of a proper
`initialization sequence of the PCF8584.
`
`Implementation
`7.2
`The flowcharts (Figs 6 to 9) illustrate proper programming
`sequences for implementing master transmitter, master
`receive, and master transmitter, repeated start and master
`receiver modes in polled applications.
`
`1997 Oct 21
`
`14
`
`Lenovo
`Ex. 1009 - Page 14
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`Product specification
`
`PCF8584
`
`PCF8584 resets to
`slave receiver mode
`
`parallel bus interface
`determined by
`PCF8584 (80XX/68XXX)
`
`START
`
`reset minimum
`30 clock cycles
`
`send byte 80H
`
`send byte 55H
`
`send byte A0H
`
`send byte 1CH
`
`send byte C1H
`
`initialization of
`PCF8584 completed
`
`delay: wait a time
`equal to the longest I2C
`message to synchronize
`BB-bit. (multimaster
`systems only
`
`END
`
`A0 = HIGH enables data transfer to/from
`register S1
`
`power-on
`address line A0
`
`A0 = LOW Access to all other registers
`defined by the bit pattern in
`register S1
`
`A0 = HIGH
`
`A0 = LOW
`
`A0 = HIGH
`
`A0 = LOW
`
`A0 = HIGH
`
`Loads byte 80H into register S1'
`i.e. next byte will be loaded into register S0'
`(own address register); serial interface off.
`
`Loads byte 55H into register S0';
`effective own address becomes AAH.
`
`Loads byte A0H into register S1, i.e. next byte
`will be loaded into the clock control register S2.
`
`Loads byte 1CH into register S2;
`system clock is 12 MHz; SCL = 90 kHz.
`
`Loads byte C1H into register S1; register enable
`serial interface, set I2C-bus into idle mode;
`SDA and SCL are HIGH. The next write or read
`operation will be to/from data transfer register
`S0 if A0 = LOW.
`
`On power-on, if an PCF8584 node is powered-up
`slightly after another node has already begun an
`I2C-bus transmission, the bus busy condition will
`not have been detected. Thus, introducing this
`delay will insure that this condition will not occur.
`
`Fig.5 PCF8584 initialization sequence.
`
`1997 Oct 21
`
`15
`
`Lenovo
`Ex. 1009 - Page 15
`
`

`

`Philips Semiconductors
`
`I2C-bus controller
`
`Product specification
`
`PCF8584
`
`START
`
`read byte from S1 register
`
`A0 = HIGH
`
`yes
`
`is bus busy?
`(BB = 0?)
`
`PCF8584 remains in
`master transmitter
`mode if R/W bit of
`'slave address' = 0
`
`no
`send byte 'slave address'
`
`A0 = LOW
`
`Load 'slave address' into S0 register:
`'slave address' = value of slave address
`(7-bits + R/W = 0). After reset, default = '0'
`
`send C5H to control
`register S1
`
`A0 = HIGH
`
`Load C5H into S1. 'C5H' = PCF8584 generates
`the 'START' condition and clocks out the slave
`address and the clock pulse for slave acknowledgement.
`Next byte(s) sent to the S0 register will be immediately
`transferred over the I2C-bus.
`
`n = 0 (data byte counter);
`m = number of data bytes
`to be transferred
`
`read byte from S1 register
`
`Poll for transmission finished.
`
`A0 = HIGH
`
`no
`
`PIN bit = 0?
`
`yes
`slave
`acknowledged?
`(LRB = 0?)
`
`yes
`
`n = m
`
`no
`n = n + 1
`
`send byte 'data'
`
`transmission
`completed
`
`yes
`
`A0 = LOW
`
`Load 'data'
`into bus
`buffer register S0;
`data is transmitted.
`
`send byte C3H
`
`A0 = HIGH
`
`Load C3 into the

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket