AN10148 PCA9564 – I2C-bus controller

INTEGRATED CIRCUITS
µController
µProcessor
DSP or ASIC
Control signals
SDA
PCA9564
SCL
8 bits
Abstract
Philips Semiconductors family of bus controllers is detailed in this application note. PCA9564
device operation, software and hardware methodology and typical applications are discussed.
AN10148
PCA9564 – I2C-bus controller
Jean-Marc Irazabal, PCA Technical Marketing Manager
Paul Boogaards, Sr. Field Application Engineer
Steve Blozis, PCA International Product Manager
Supersedes data of 2004 August 11
Philips
Semiconductors
1
2004 November 22
TABLE OF CONTENTS
OVERVIEW .......................................................................................................................................................................3
DESCRIPTION .....................................................................................................................................................................3
APPLICATIONS ...................................................................................................................................................................3
FEATURES .........................................................................................................................................................................4
DEVICE PINOUT .................................................................................................................................................................5
ORDERING INFORMATION..................................................................................................................................................7
DATA SHEETS AND IBIS MODELS .....................................................................................................................................7
PCF8584 TECHNICAL INFORMATION.......................................................................................................................7
PCA9564 TECHNICAL INFORMATION ......................................................................................................................7
BLOCK DIAGRAM...............................................................................................................................................................7
REGISTERS DEFINITIONS ....................................................................................................................................................8
READ AND WRITE STROBES ............................................................................................................................................12
POLLING SI BIT VERSUS USING INT PIN AS INTERRUPT ..................................................................................................12
RESET..............................................................................................................................................................................13
INTERFACING THE PCA9564 WITH CPU AND SLAVE DEVICES – HARDWARE .................................................................13
INTERFACING THE PCA9564 WITH CPU AND SLAVE DEVICES – SOFTWARE ...................................................................14
MASTER AND SLAVE MODES HANDLING ..........................................................................................................................15
FLOWCHARTS .............................................................................................................................................................16
Initialization Sequence ...............................................................................................................................................16
Master Transmitter Mode...........................................................................................................................................17
Master Receiver Mode................................................................................................................................................19
Slave Transmitter / Receiver mode .............................................................................................................................21
Time-out – SCL Stuck Low Error ...............................................................................................................................22
Bus Recovery – SDA Stuck Low Error .......................................................................................................................23
Bus error.....................................................................................................................................................................23
APPLICATIONS..............................................................................................................................................................24
TYPICAL APPLICATION USING THE 80C51 MICROCONTROLLER.......................................................................................24
INTERFACING THE PCA9564 TO SEND/RECEIVE I2C COMMANDS OVER LONG CABLES.....................................................24
PCA9564 EVALUATION BOARD ................................................................................................................................27
FREQUENTLY ASKED QUESTIONS .........................................................................................................................27
ADDITIONAL INFORMATION ...................................................................................................................................30
REVISION HISTORY ...................................................................................................................................................30
DISCLAIMERS ..................................................................................................................................................................31
2
OVERVIEW
Description
The PCF8584 and the PCA9564 are bus controller devices performing the following functions:
- Receive data in a parallel format from a microcontroller/microprocessor, convert them to a serial format conforming
to the I2C protocol and send them to I2C devices located on the bus
- Receive serial data from the I2C-bus, convert them to a parallel format and send them to the microcontroller /
microprocessor connected to the controllers
The PCF8584 is an integrated circuit designed in CMOS technology that 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 bi-directionally with the I2C-bus.
The PCA9564 is an integrated circuit designed in CMOS technology that serves as an interface between most standard
2
parallel-bus microcontrollers/microprocessors and the serial I C-bus allowing the 8-bit parallel bus system to
2
communicate bi-directionally with the I C-bus. The PCA9564 can operate as a master or a slave and can be a transmitter
2
or receiver. Communication with the I C-bus is carried out on a byte-wise basis using interrupt or polled handshake. The
2
PCA9564 controls all the I C-bus specific transactions with no external timing element required.
The PCA9564 is similar to the PCF8584 but operates at lower voltages and higher I²C frequencies. Other programming
enhancements requested by design engineers have also been incorporated although the PCA9564 does not support bus
monitor “snoop” mode, General Call Address or long distance mode, as does the PCF8584.
Characteristics
Voltage range
Maximum I2C freq.
Clock source
Parallel interface
Snoop Mode
Long Distance Mode
PCF8584 PCA9564 Comments PCA9564
4.5 V - 5.5 V 2.3 V - 3.6 V 5 V tolerant
90 kHz
360 kHz
External
Internal
TTL (3 to 12
MHz)
Slow
3 MHz
Yes
Yes
accuracy:
±15 %
Fast
50 MHz
No
No
Fast-mode I2C compatible
Less expensive and more flexible
Compatible with faster processors
While the PCF8584 supported most parallel-bus microcontrollers/microprocessors including the Intel 8049/8051,
Motorola 6800/68000 and the Zicor Z80, the PCA9564 has been designed to be very similar to the Philips standard
2
80C51 microcontroller I C hardware so existing code, for devices such as Philips 8xC552 can be utilized with a few
modifications. There is already code written on the Philips Microcontroller website which would greatly reduce the
software development for the PCA9564. For more information, please check the following URL:
http://www.semiconductors.philips.com/markets/mms/products/microcontrollers/support/software_download/8051/index
.html
Applications
These bus controller devices can be used for a wide variety of applications:
I2C-bus Mastering – Some microprocessors have none or an insufficient number of I2C ports and sometimes there must
be a way to add an I2C port to the microcontroller. The PCF8584 and PCA9564 use 8-bit I/Os and several control signals
from the processor to interface to the I2C-bus in a multiple master capable environment. Any processor can “bit bang”
the I2C-bus using 2 bits of GPIO, one for the data and one for the clock, if it is the only master on the bus and needs to
3
send only simple commands. The PCF8584 or PCA9564 is required when full multiple master compliance with the I2C
specification is required.
I2C-bus Slaving – The PCF8584 and PCA9564 can be used to interface any processor to the I2C-bus using 8-bit of
GPIO and some control signals.
I2C-bus Sniffing (PCF8584 only) – The PCF8584 provides an I2C-bus snoop mode that allows the microprocessor to
monitor communications on the bus without changing the structure.
I2C General Call Address (PCF8584 only) – The PCF8584 provides an I2C General Call Address mode that allows I2C
General Call Address detection (0x00) when bus controller addressed as a slave.
I2C Long Distance Mode (PCF8584 only) -The long-distance mode provides the possibility of longer-distance serial
communication between parallel processors via two I2C-bus controllers. 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 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.
Features
PCA9564 Features
•
Parallel-bus to I2C -bus protocol converter and interface
•
Both master and slave functions
•
Multi-master capability
• I2C and SMBus compatible
• 2.3 V to 3.6 V operating supply voltage
• 5.5 V tolerant I/Os
• -45 ºC to 85 ºC operating temperature range
• 0 kHz to 360 kHz (400 kHz in slave mode) clock frequency
• Glitch free operation at power-up and power-down, supports hot insertion
• Manufactured in high-volume CMOS process
• ESD protection exceeds 2000 V HBM per JESD22-A114, 200 V MM per JESD22-A115 and 1000 V CDM per
JESD22-C101
• JESDEC Standard JESD78 Latch-up testing exceeds 100mA.
• Offered in 20-pin DIP (N), SO (D), TSSOP (PW) and HVQFN (BS)
PCF8584 Features
• 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 adaptation to bus interface type
• Programmable interrupt vector
• Multi-master capability
• I2C-bus monitor mode
• I2C-bus All Call Mode
• Long-distance mode (4-wire)
• 4.5 V to 5.5 V operating supply voltage
• -40 °C to +85 °C operating temperature range
• 0 kHz to 90 kHz (100 kHz in slave mode) clock frequency
• Manufactured in high-volume CMOS process
• Offered in 20-pin DIP (P) and SO (T)
4
Device Pinout
PCA9564 Pinout
5
PCF8584 Pinout
6
Ordering Information
P acka ge C o n tain er P C F 8564
D IP
SO
TS S O P
HVQFN
Tub e
Tub e
T & R
Tub e
T & R
T & R
P C F 8584
P C F 8584D
P C F 8584D -T
N ot A vailable
N ot A vailable
N ot A vailable
P C A 9564
P C A 9564N
P C A 9564D
P C A 9564D -T
P C A 9564P W
P C A 9564P W -T
P C A 9564B S -T
Data Sheets and IBIS Models
Data sheet of the PCF8584 and PCA9564 and IBIS model of the PCA9564 can be downloaded from
http://www.standardproducts.philips.com/i2c
PCA9564 HSPICE model is available upon request via email at [email protected]
There are no IBIS and HSPICE models available for the PCF8584.
PCF8584 TECHNICAL INFORMATION
PCF8584 Technical information can be found in the following Philips Application Notes.
• AN425: Interfacing the PCF8584 I2C-bus controller to 80C51 family microcontrollers
http://www.semiconductors.philips.com/acrobat/applicationnotes/IC22_AN425.pdf
• AN95068: C Routines for the PCx8584
http://www.semiconductors.philips.com/acrobat/applicationnotes/AN95068.pdf
• AN96098: Interfacing 68000 family peripherals to the XA
http://www.semiconductors.philips.com/acrobat/applicationnotes/AN96098.pdf
• AN96040: Using the 8584 with non specified timings and other frequently asked questions
http://www.semiconductors.philips.com/acrobat/applicationnotes/AN96040.pdf
PCA9564 TECHNICAL INFORMATION
Block diagram
The block diagram of the PCA9564 is shown in Figure 1. Interfacing to the microcontroller, microprocessor or any
device able to communicate with the bus controller (“CPU” will be used from now to designate such a device) and to I2C
slave or master devices is done through the following pins:
•
•
•
•
CE : Active-LOW Chip Enable input signal allowing the PCA9564 to communicate with the CPU. This signal may
be held low when it is the only device on the CPU address/data bus.
D7 to D0: 8-bit bi-directional 3-statable data bus
A1, A0: Address input pins for internal register-selection
WR and RD : Active-LOW Strobe input signals allowing writing or reading the content of the register addressed
through A1 and A0 pins.
•
INT : Active-LOW Interrupt output indicating to the master that an event pertinent to the PCA9564 occurred on the
I2C-bus or that an action requested by the CPU has been performed by the PCA9564. Nature of the event or result of
the requested action is available by reading the Status register (I2CSTA)
•
RESET : Active-LOW Reset input pin clearing the PCA9564 internal registers and resetting the I2C state machine.
• SDA and SCL: Data and Clock lines of the I2C-bus
Five internal registers allow the PCA9564 to be configured and data to be sent or received.
An internal 9 MHz oscillator controls I2C-bus timings and generates the I2C clock when the PCA9564 is used as a master
(Standard-Mode and Fast-Mode I2C protocol)
7
DATA
D7
D6
D5
SDA
D3
D2
D0
D1
Bus Buffer
Filter
SD7
SDA Control
D4
SD6
SD5
SD4
SD3
SD2
SD1
TO6
TO5
TO4
TO3
TO2
A0
0
1
0
0
1
0
0
0
1
1
SD0
I2CDAT – Data Register – Read / Write
TE
A1
TO1
TO0
I2CTO – Timeout Register – Write Only
AA ENSIO STA STO SI
SCL
BIT7
BIT5
BIT6
BIT4
BIT3
BIT2
BIT1
0
Filter
I2CADR – Own Address – Read / Write
SCL Control
ST7
ST6
ST5
ST 4
ST 3
ST 2
ST 1
ST 0
I2CSTA – Status Register – Read Only
AA
ENSIO STA STO SI
ENSIO
STA
STO
SI
CR2
CR1
CR0
I2CCON – Control Register – Read / Write
CLOCK
SELECTOR
CR0
CR1
CONTROL BLOCK
INTERRUPT CONTROL
CR2
POWER
ON
RESET
OSCILLATOR
CE
WR
RD
INT
RESET
A1
A0
VDD
CONTROL SIGNALS
Figure 1. PCA9564 Block Diagram
Registers definitions
The five internal registers allow the PCA9564 to be configured and data to be sent or received. Definition of the registers
is shown in Table 1. The logic level of pins A1 and A0 determines access to a register. Read or Write operation is
determined by signals applied on pins RD and WR .
A1 A0
Register Name
Register Function
0
0
I2CSTA
Status Register
0
0
I2CTO
Time-out Register
0
1
I2CDAT
Data Register
1
0
I2CADR
Own Address Register
1
1
I2CCON
Control Register
Read / Write
Read Only
Write Only
Read / Write
Read / Write
Read / Write
Table 1. Registers definition
8
Default Value
0xF8
0xFF
0x00
0x00
0x00
•
I2CTO is the time-out register used to determine the maximum time that SCL is low before the I2C state machine is
reset.
Time-Out Period = I2CTO[6:0] x 113.7 µs
The MSB of I2CTO register contains the TE bit.
TE = 0
TE = 1
Time-out function disabled
Time-out function enabled
•
I2CADR contains the own address of the CPU connected to the PCA9564 when the device is used in slave mode.
Content of the register is irrelevant when the PCA9564 is functioning as a master.
The seven MSB’s determine the slave address that the PCA9564 will respond to. The LSB should be programmed
with a “0”.
- A “0” in the I2CADR register corresponds to a LOW level in the I2C-bus
- A “1” in the I2CADR register corresponds to a HIGH level in the I2C-bus
•
I2CDAT contains the byte to be transmitted on the I2C-bus or a byte that has been received from the I2C-bus.
In master mode, along with the data byte to be transmitted, it also includes the slave address that the master CPU
wants to send out on the I2C-bus: the seven MSB’s are the slave I2C address (SD[7:1] with SD7 as the MSB of the
address) while the LSB (SD[0]) is the Read/Write bit.
•
I2CCON is the Control Register where the CPU can read from and write to.
A Write to the I2CCON register via the parallel interface automatically clears the SI bit (bit 3), which causes the
Serial Interrupt line to be de-asserted and the next clock pulse on the SCL line to be generated. Since none of the
registers should be written to via the parallel interface once the Serial Interrupt line has been de-asserted, all the
other registers that need to be modified should be written to before the content of the I2CCON register is modified.
- Bit 7 is the AA bit: Assert Acknowledge Flag
AA = 1
AA = 0
An Acknowledge is sent (Low on SDA) during the Acknowledge clock pulse if:
- The “own slave address” has been received
- A data byte has been received in Master Receiver mode
- A data byte has been received in Addressed Slave Receiver mode
An Acknowledge is not sent (High on SDA) during the Acknowledge clock pulse if:
- The “own slave address” has been received
- A data byte has been received in Master Receiver mode
- A data byte has been received in Addressed Slave Receiver mode
Note:
1. AA bit can be used to temporarily remove the PCA9564 (and the connected CPU) by setting it to “0”.
No acknowledge will then be sent to the device accessing the PCA9564.
-
Bit 6 is the ENSIO bit: Enable Serial Input Output (I2C-bus)
ENSIO = 1
ENSIO = 0
Serial Input Output enabled – Internal oscillator enabled
Serial Input Output disabled (Hi-Z) – Internal oscillator disabled
Notes:
1. When ENSIO = 0, the PCA9564 is in a “not addressed” slave state and will not respond if its address is
sent by a master on the I2C-bus.
2. When ENSIO = 1, it takes 500 µs for the internal oscillator to stabilize.
3. ENSIO bit should not be used to temporarily remove the PCA9564 form the I2C-bus since the I2C-bus
status is lost when ENSIO = 0. The AA flag should be used instead as explained above.
-
Bit 5 is the STA bit: START command
STA = 1
STA = 0
START command requested – PCA9564 enters Master mode
START command not requested
9
Notes:
1. START command is generated when the I2C-bus is free.
2. If the I2C-bus is not free at the request moment, the PCA9564 waits until a STOP command is placed on the
bus and then generates a START command after the bus free time between a STOP and a START
condition (tBUF) has elapsed.
3. If STA is set and the PCA9564 is already in a master mode (and one or more bytes have been sent or
received), the device sends a repeated START command.
-
Bit 4 is the STO bit: STOP command
STO = 1
STO = 0
STOP command requested – Bus is free after the tBUF time has elapsed
STOP command not requested
Notes:
1. If both STA and STO are set when PCA9564 is in master mode, then a STOP command is generated on the
I2C-bus. PCA9564 then generates a START condition after the tBUF time has elapsed.
-
Bit 3 is the SI bit: Serial Interrupt Flag
SI = 1
SI = 0
Serial Interrupt requested when ENSIO bit is set to 1
The serial interface entered one of 24 of the 25 possible states
(see I2CSTA register definition below)
Serial transfer is suspended
Low period of SCL is stretched
Serial Interrupt not requested
No stretching of SCL
Notes:
1. SI bit must be reset by software (by writing a “0” on that bit)
2. SI bit should never be set to “1” by the user
3. SI bit is not set to 1 when the value in I2CSTA is equal to F8h
-
Bit 2 to Bit 0 are the CR2 to CR0 bits: Clock Rate bits
CR2
0
0
0
0
1
1
1
1
CR1
0
0
1
1
0
0
1
1
CR0
0
1
0
1
0
1
0
1
Serial Clock Frequency (kHz)
330
288
217
146
88 Note 1
59
44
36
Notes:
1. The clock frequency values are approximate and may vary with temperature, supply voltage, process, and
SCL output loading. If normal mode I2C parameters must be strictly followed (SCL < 100 kHz), it is
recommended not to use CR[2:0] = 100 (SCL = 88 kHz) since the clock frequency might be slightly higher
than 100 kHz (109 kHz under worst case temperature, voltage, and process conditions) and use CR[2:0] =
101 (SCL = 59 kHz) instead.
2. Clock frequency values in the table are only for master mode. When PCA9564 is used in slave mode, the
device automatically synchronizes with any clock in the I2C-bus up to 400 kHz.
•
I2CSTA contains the status code. It is a Read Only register and the 3 LSB are always “0”. 25 different codes are
possible and are shown in Table 2. Each code represents a different serial interface state. The first 24 states when
entered sets the SI bit in I2CCON Register to 1 and forces the INT pin to go low. The 25th state (0xF8) does not set
the SI bit to 1 and does not generate an Interrupt because no relevant information is available and no serial interrupt
is then required.
10
1
2
3
Status Code
(Hexadecimal)
00
08
10
4
18
5
20
6
28
7
30
8
38
Status
MT
- Bus error due to illegal START or STOP command
- A START command has been transmitted
- A repeated START command has been transmitted
- Address+W has been transmitted
- ACK has been received
- Address+W has been transmitted
- NACK has been received
- Data byte in I2CDAT has been transmitted
- ACK has been received
- Data byte in I2CDAT has been transmitted
- NACK has been received
- Arbitration lost in Address+W or Data byte
•
•
•
•
40
10
48
11
50
12
58
13
60
14
68
15
70
16
80
17
88
18
90
19
A0
20
A8
21
B0
22
B8
23
C0
24
C8
25
F8
- Previously addressed with Own Address
- Data byte has been received
- ACK has been returned
- Previously addressed with Own Address
- Data byte has been received
- NACK has been returned
- Bus error, SCL stuck low
- A STOP or Repeated START command has been
detected while still addressed in SR mode
- Own Address+R has been received
- ACK has been returned
- Arbitration lost in Address+RorW as master
- Own Address+R has been received
- ACK has been returned
- Data byte in I2CDAT has been transmitted
- ACK has been received
- Data byte in I2CDAT has been transmitted
- NACK has been received
- Last data byte in I2CDAT has been transmitted (AA=0)
- ACK has been received
- Reset or STOP command
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Table 2. Status Codes – I2CDAT Register
Note: MT = Master Transmitter, MR = Master Receiver, SR = Slave Receiver, ST = Slave Transmitter
11
•
•
- Arbitration lost in Address+R or Data byte
- Address+R has been transmitted
- ACK has been received
- Address+R has been transmitted
- NACK has been received
- Data byte has been received
- ACK has been returned
- Data has been received
- NACK has been returned
- Own Address+W has been received
- ACK has been returned
- Arbitration lost in Address+RorW as master
- Own Address+W has been received
- ACK has been returned
- Bus error, SDA stuck low
•
•
•
ST
•
- Arbitration lost in NACK bit
9
Mode
MR SR
•
•
Read and Write Strobes
Read and Write strobes are used to select the type of operation that needs to be performed on the selected register.
D[7:0]
Floating
A[1:0]
Floating
Data from CPU
Data available
Floating
Floating
Address
Address
Floating
Floating
WR
RD
ADDRESS LATCHED
ADDRESS LATCHED
CE
DATA
READ
DATA WRITE
Address is latched when RD is going
low.
Data from the PCA9564 becomes
available after 17 ns max. The CPU
can then read data from the PCA9564.
Address is latched when WR is going
low.
Data are written to the addressed register
on the rising edge. Data must be stable at
that time.
When RD is going high, data bus
floating after 17 ns max.
Figure 2. Read and Write Strobes
Polling SI bit versus using INT pin as Interrupt
Interfacing and control of the I2C-bus operation can be done by either:
• Polling the SI bit by reading I2CCON Register.
- When SI is at 0, no new state has been generated or detected by the PCA9564 and SCL clock line is not held
low by the PCA9564
- When SI is at logic 1, a new state has been generated or detected by the PCA9564. SCL clock line is held low
by the PCA9564 (Clock stretching) and action by the CPU is required. To leave the “clock stretched” state, SI
bit must be reset by the CPU (write a “0”).
• Using the INT pin as Interrupt function
-
When INT is High, no new state has been generated or detected by the PCA9564 and SCL clock line is not
held low by the PCA9564
-
When INT goes low, a new state has been generated or detected by the PCA9564. SCL clock line is held low
by the PCA9564 (Clock stretching) and action by the CPU is required. To clear the Interrupt, SI bit must be
reset by the CPU (write a “0”).
12
CPU command
Power Up
START
Power Up default state
I2CCON = 0x00
SI = 0, INT = 1
Initialization
See Figure 5. PCA9564 Initialization
PCA9564 initialized and ready to:
- Execute commands from the CPU
(START, STOP, Send/Receive Data)
- Recognize I2C traffic/command targeting it
Method 1:
CPU polls the SI bit (loop on I2CCON Register
Read until SI = 1)
Method 2:
CPU waits until /INT pin goes low
When SI = 1:
• The request from the CPU has been performed
by the PCA9564, or
• PCA9564 detected an a command targeting it
• The I2CSTA register contains new Status
• INT pin goes low
• SCL line is held low (clock stretching)
When INT goes low:
• The request from the CPU has been performed by
the PCA9564, or
• PCA9564 detected an a command targeting it
• I2CSTA register updated with the new Status
• SI bit is set to 1
• SCL line is held low (clock stretching)
Important note:
SI bit is not set to 1 and
INT pin does not go Low
when I2CSTA register is
loaded with F8H.
Read I2CSTA: SI = 1 and pin INT Low
Read I2CSTA
Write I2CCON Register
SI = 0
SI = 0 allows to clear the Interrupt condition
Note: a Write to I2CCON Register automatically clears SI bit
• SI = 0
• INT pin goes High
• SCL not stretched
Figure 3. SI bit and INT pin
Reset
An active low Reset allows to
- Clear all internal registers to their default values
- Reset the I2C-bus state machine
Reset pulse must be at least 100 ns long (Low state) to reset the device
Interfacing the PCA9564 with CPU and slave devices – Hardware
•
•
Power supply: The PCA9564 is a 3.3V device and all the I/O’s are 5 V tolerant. This allows the device to interface
with 5 V CPU and 5 V I2C devices.
Interfacing with the I2C devices:
SCL and SDA pins are open drain and must be connected to pull-up resistors. Pull-up resistors must be chosen to
satisfy:
- 3 mA drive capability with VOL at 0.4 V
- Rise time max at 1 µs for Standard-Mode I2C protocol and 0.3 µs for Standard-Mode I2C protocol, for a 400 pF
max capacitive load
13
•
Interfacing with the CPU:
-
Data bus (D7 to D0), Address pins (A1 and A0), Chip Enable, Read and Write control signals ( CE , RD and
WR ), Reset pin ( RESET ) are a function of the I/O architecture of the CPU used.
-
INT is open drain and requires a pull-up resistor if the CPU pin connected to it does not have any
Interfacing the PCA9564 with CPU and slave devices – Software
An evaluation board with some embedded code is available at
http://www.standardproducts.philips.com/support/boards/pca9564. Block diagram is shown in Figure 4.
The evaluation board includes:
- A Philips P89LV51RA2 microcontroller
- A Philips PCA9564 interfacing with the P89LV51RA2 microcontroller
The I2C-bus has the following devices:
- A Philips P89LPC932 microcontroller able to be either an I2C slave or an I2C master
- A Philips PCF85116 I2C 16 kbits EEPROM
- A Philips PCA9531 I2C 8-bit LED dimmer
- A Philips PCA9554 I2C 8-bit GPIO collecting program selection information through 8 pushbuttons
Two I2C connectors allow connection to daughter cards with other I2C master and/or slave devices
Code can be downloaded to the 2 microcontrollers through a RS232 connector (ISP programming).
Sample code will show:
- How to create some dimming/blinking patterns using the P89LV51RA2 + PCA9564 + PCA9531 + PCF85116
- The multi-master capability of the PCA9564 using the P89LV51RA2 and the P89LPC932 as 2 masters trying to take
control of the bus at the same time.
For more information on the evaluation board and the sample code, consult Application Note AN10149 and the fllowing
link:
http://www.standardproducts.philips.com/support/boards/pca9564
I2C Connector (To Daughter Cards)
DATA
I2 C
PCA9564
P89LV51Rx2
CONTROL
RS232
Connector
PCF85116
PCA9531
LEDs
P89LPC932
LEDs
SP3223
INT
PCA9554
Pushbuttons for program selection
Figure 4. PCA9564 evaluation block diagram
14
Master and Slave modes handling
Master or Slave mode is automatically handled by the PCA9564. When the bus is idle (SDA = SCL = 1, before a
START command or after a STOP command), the PCA9564 is in:
- Active slave-receiving mode when ENSIO = 1 and AA = 1
- Passive slave-receiving mode when ENSIO = 1 and AA = 0
- Disabled mode in the bus when ENSIO = 0
From an idle situation, there are 3 possible scenarios:
1. The device (for example, µcontroller) connected to the parallel port of the PCA9564 requests a START command
(STA = 1, ENSIO = 1). The PCA9564 is then automatically configured in master mode until the device
(µcontroller) requests a STOP command and the PCA9564 sends it (then causing the I2C-bus to be in an idle
condition) or if PCA9564 loses arbitration to another master (see scenario 3).
2. A master connected to the I2C-bus sends a START command, followed by the slave address of the PCA9564
(assuming the PCA9564 I2CADR register has been previously programmed with its slave address).
- If ENSIO = 1 and AA = 1, the PCA9564 is then automatically configured in active slave mode (receiver or
transmitter depending of the LSB of the I2C address byte) and will stay so until a STOP command is sent by the
master located in the I2C-bus (then causing the I2C-bus to be in an idle condition). Active slave mode means
that the PCA9564 acknowledges its I2C address and will either send or receive data (depending of the R/W bit
value) at the speed determined by the SCL signal.
- If ENSIO = 1 and AA = 0, the PCA9564 is then automatically configured in passive slave mode and will stay
so until a STOP command is sent by the master connected to the I2C-bus (then causing the I2C-bus to be in an
idle condition). Passive slave mode means that the PCA9564’s SIO (Serial I/O) can be temporarily released
(virtually disconnected) from the I2C-bus without completely disabling it, i.e. the internal oscillator is still
running and the SIO can be connected back to the bus at any time by setting the AA bit. When AA = 0, the
PCA9564 does not acknowledge its I2C address and will stay “quiet” until the master has sent a STOP
command.
- If ENSIO = 0, the PCA9564 is in disabled mode. The internal clock is disabled, the PCA9564 is virtually
disconnected from the I2C-bus and its state machine is not synchronized with what is happening on the I2C-bus.
3. In a multi-master configuration, both sides of the PCA9564 (parallel and I2C) try to take control of the bus, thus
causing the PCA9564 to start an arbitration procedure. The arbitration will end with one of the following:
- The PCA9564 enters master mode (it won the arbitration, same as scenario 1 above)
- The PCA9564 enters slave mode (it lost the arbitration and the other master addresses the PCA9564, same as
scenario 2 above)
- The PCA9564 enters master-in-waiting mode, where the PCA9564 is waiting for the other master (that won
arbitration) to complete its transaction so that it can once again try to gain control of the I2C-bus.
15
FLOWCHARTS
Initialization Sequence
START
Reset 100 ns
A0 = 0
A1 = 0
TIMEOUT REGISTER
I2CTO =0xFF
OWN ADDRESS
I2CADR = 0x64
ENABLE SERIAL IO
I2CCON = 0x44
A0 = 0
A1 = 1
Set own address for use as a slave
A0 = 1
A1 = 1
Clock Frequency set at 88 kHz
Wait for Oscillator Startup
Wait 500 µs
READ BACK REGISTERS
Optional verification – allows verification of the
previous programming
At power-up, if a PCA9564 node is powered-up slightly after
Delay: wait a time equal to the
longest I2C message
(Multimaster systems only)
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.
I2CCON = 0xC4
A0 = 1
A1 = 1
Slave receiver mode
AA = 1, ENSIO = 1, SI = 0
END
Figure 5. PCA9564 Initialization
16
Master Transmitter Mode
In this flow chart, I2C clock frequency is programmed to run at 88 kHz (I2CCON Register, bits CR [2:0] = 100)
`
START
Write I2CCON = 0xE4
A0 = 1
A1 = 1
Read I2CCON
A0 = 1
A1 = 1
Generate START command
AA = 1, ENSIO = 1, STA = 1
NO
SI = 1?
Poll from transmission finished
YES
Read I2CSTA
A0 = 0
A1 = 0
NO
I2CSTA = 0x08?
FAULT HANDLER
YES
Load Slave Address + R/W bit = 0
into I2CDAT
Reset SI and STA bits in I2CCON
Write I2CCON = 0xC4
Read I2CCON
A0 = 1
A1 = 0
A0 = 1
A1 = 1
Send Slave address + Write Command
AA = 1, ENSIO = 1
A0 = 1
A1 = 1
NO
SI = 1?
Poll from transmission finished
YES
Read I2CSTA
A0 = 0
A1 = 0
NO
I2CSTA = 0x18?
FAULT HANDLER
YES
N = number of bytes to be transferred
M = number of bytes transferred = 0
Load data into I2CDAT
A0 = 1
A1 = 0
Data to be sent is loaded I2CDAT register
Reset SI bit in I2CCON
Write I2CCON = 0xC4
A0 = 1
A1 = 1
Send Data
AA = 1, ENSIO = 1
Continued on next page – Figure 6b
Figure 6a. Master Transmitter Mode
17
Continued from previous page – Master Transmitter mode
A0 = 1
A1 = 1
Read I2CCON
NO
SI = 1?
Poll from transmission finished
YES
A0 = 0
A1 = 0
Read I2CSTA
NO
I2CSTA = 0x28?
FAULT HANDLER
YES
M=M+1
NO
N = M?
YES
Write I2CCON = 0xD4
A0 = 1
A1 = 1
Read I2CCON
A0 = 1
A1 = 1
Generate STOP command
AA = 1, ENSIO = 1, STO = 1
NO
STO = 0?
FAULT HANDLER
STO bit resets itself once the
STOP command is sent
YES
Slave receiver mode
AA =1, ENSIO = 1, SI = 0, Clock Frequency = 88 kHz
END
Figure 6b. Master transmitter Mode
18
Master Receiver Mode
In this flow chart, I2C clock frequency is programmed to run at 88 kHz (I2CCON Register, bits CR [2:0] = 100)
START
Write I2CCON = 0xE4
A0 = 1
A1 = 1
Read I2CCON
A0 = 1
A1 = 1
Generate START command
AA = 1, ENSIO = 1, STA = 1
NO
SI = 1?
Poll from transmission finished
YES
A0 = 0
A1 = 0
Read I2CSTA
NO
FAULT HANDLER
I2CSTA = 0x08?
YES
A0 = 1
A1 = 0
Load Slave Address + R/W bit = 1
into I2CDAT
Write I2CDAT
A0 = 1
A1 = 1
Reset SI and STA bits in I2CCON
Write I2CCON = 0xC4
Send Slave address + Read Command
AA = 1, ENSIO = 1
A0 = 1
A1 = 1
Read I2CCON
NO
SI = 1?
Poll from transmission finished
YES
A0 = 0
A1 = 0
Read I2CSTA
NO
FAULT HANDLER
I2CSTA= 0x40?
YES
N = number of bytes to be transferred
M = number of bytes transferred = 0
NO
N = 1?
YES
Reset SI bit and set AA bit in
I2CCON
Write I2CCON = 0xC4
Continued on next page – Figure 7b
Figure 7a. Master Receiver Mode
19
A0 = 1
A1 = 1
Read Data
AA = 1, ENSIO = 1
Continued from previous page – Master Receiver mode
Read I2CCON
A0 = 1
A1 = 1
NO
SI = 1?
Poll from transmission finished
YES
Read I2CSTA
A0 = 0
A1 = 0
NO
FAULT HANDLER
I2CSTA = 0x50?
YES
Read data from I2CDAT
A0 = 1
A1 = 0
Data read from the I2C bus can be
read from I2CDAT register
M=M+1
NO
M = N - 1?
YES
Reset SI and AA bits in I2CCON
Write I2CCON = 0x44
Read I2CCON
The last byte of the transmission is not
acknowledged
AA = 0, ENSIO = 1
Read Data
A0 = 1
A1 = 1
A0 = 1
A1 = 1
NO
SI = 1?
Poll from transmission finished
YES
Read I2CSTA
A0 = 0
A1 = 0
NO
I2CSTA = 0x58?
FAULT HANDLER
YES
Read Data from I2CDAT
A0 = 1
A1 = 0
Data read from the I2C bus can be
read from I2CDAT register
Write I2CCON = 0xD4
A0 = 1
A1 = 1
Generate STOP command
AA = 1, ENSIO = 1, STO = 1
Read I2CCON
A0 = 1
A1 = 1
NO
STO = 0?
FAULT HANDLER
STO bit resets itself once the
STOP command is sent
YES
END
Slave receiver mode
AA =1, ENSIO = 1, SI = 0, Clock Frequency = 88 kHz
Figure 7b. Master Receiver Mode
20
Slave Transmitter / Receiver mode
Assumption: PCA9564 is in Slave Receiver Mode
I2CCON = 0xC4 (AA = 1, ENSIO = 1, Clock Frequency = 88 kHz)
START
Own slave address already loaded in I2CADR (see Figure 5 – PCA9564 Initialization)
A0 = 1
A1 = 1
Read I2CCON
NO
SI = 1?
Poll from transmission finished
YES
Read I2CSTA
I2CSTA = 0xA8?
Slave Transmitter Mode
Slave Receiver Mode
YES
A0 = 1
A1 = 1
NO
NO
I2CSTA = 0x60?
A0 = 1
A1 = 1
FAULT HANDLER
A0 = 0
A1 = 0
Reset SI bit in I2CCON
Write I2CCON = 0xC4
Load I2CDAT with Data
Read Data or Command from the bus
AA = 1, ENSIO = 1
Reset SI bit and set AA bit in
I2CCON
I2CCON = 0xC4
Send Data on the bus
AA = 1, ENSIO = 1
Read I2CCON
NO
YES
A0 = 1
A1 = 0
A0 = 1
A1 = 1
A0 = 1
A1 = 1
Read I2CCON
SI = 1?
A0 = 0
A1 = 0
YES
NO
SI = 1?
Read I2CSTA
YES
FAULT HANDLER
NO
I2CSTA
= 0x80?
I2CSTA
= 0xA0?
YES
A0 = 1
A1 = 0
FAULT HANDLER
NO
NO
NO
I2CSTA
= 0xC0?
I2CSTA
= 0xB8?
YES
YES
Read Data from I2CDAT
Data read from the bus
can be read from
I2CDAT Register
A0 = 1
A1 = 1
Write I2CCON = 0xC4
END
Slave Receiver Mode
AA =1, ENSIO = 1, SI = 0, Clock Frequency = 88 kHz
Figure 8. Slave Receiver / Slave Transmitter Modes
21
A0 = 0
A1 = 0
Read I2CSTA
YES
Time-out – SCL Stuck Low Error
PCA9564 integrates a “SCL Low” sensing feature that generates a “SCL Stuck Low” error (90H) when activated (TE bit
in I2CTO Register = 1) and the clock line stays low longer than the TimeOut Value programmed on I2CTO register.
START
- Send LOW SCL
- Send Data on SDA if Write
- Send Low on SDA if STOP
Command
- Count SCLCount
- Count TimeOutCount
Command
START
Command?
Notes:
1.
Time-out feature enabled (TE=1)
2.
Time-out register loaded with TimeOutValue (7 bits)
3.
Valid for Master Mode
START, STOP, Send / Receive Data
ENSIO = 1, SI = 0
STA = 1 if START Command
STO = 1 if STOP Command
NO
CPU Command
YES
NO
NO
Bus idle?
SCLCount
> Half SCL
period?
YES
YES
Release SCL
YES
Bus idle and
STOP
detected?
YES
STOP
Command?
SCL = HIGH?
NO
NO
Count TimeOutCount
YES
- Release SDA
- Reset TimeOutCount
- Reset SCLCount
NO
Keep counting TimeOutCount
END
TimeOutCount >
TimeOutValue?
NO
NO
YES
- Reset TimeOutCount
- Send START
Command (Send
LOW SDA)
- I2CSTA = 0x08
- INT = Low
- SI = 1
Reset TimeOutCount
TimeOutCount >
TimeOutValue?
YES
- Count SCLCount
- Receive Data if Read Mode
- Receive ACK or NACK if
Write Mode and ACK Phase
- Send ACK or NACK if Read
Mode and ACK Phase
Timeout on SCL
detected
SCL is stuck low
- Reset TimeOutCount
- I2CSTA = 0x90
SCLCount
> SCL period?
- INT = Low
- Set SI bit at 1
- Release SDA and SCL
YES
NO
Read I2CSTA (08H)
Command fully
done?
Read I2CSTA (90H)
YES
Reset PCA9564
RESET = Low
Send Low SCL
Release SDA
Reset SCLCount
- Update I2CSTA
-
- INT = Low
- SI = 1
- Reset SCLCount
Read I2CSTA
Figure 9. Timeout Flowchart
22
NO
Bus Recovery – SDA Stuck Low Error
A built-in bus recovery feature allows the PCA9564 to initiate automatically a recovery attempt from a “SDA Stuck
Low” situation. If the attempt is unsuccessful, a “SDA Stuck Low” error (70H) is generated.
ENSIO = 1, SI = 0, STA = 1
START Command
SDA Stuck Low Detected
The 9 clock pulses will make the hanging
device’s state machine move to the next state
after each clock pulse while the PCA9564 SDA
released (not pulled down) will cause a NACK
when the state machine will move to the ACK
phase. The NACK will force the device to go
to idle mode
- Send 9 SCL Clock Pulses
- Keep PCA9564 SDA
released
If the bus recovery has been successful,
the bus is now idle (SDA = SCL = 1) and
a STOP command can be generated
Generate a STOP command
NO
SDA Stuck
LOW?
Generate START Command
YES
- I2CSTA = 0x70
Bus recovery has not been successful and
a “Bus Stuck Low” error needs to be
generated
- INT = Low
- Set SI bit at 1
- Release SDA and SCL
Read I2CSTA (70H)
Note:
1.
Valid for Master Mode
Reset PCA9564
CPU Command
RESET = Low
Figure 10. Bus recovery Flowchart
Bus error
A “Bus Error” error (00H) is generated by the PCA9564 every time an illegal command is generated.
Command
NO
Command = STOP
and sent right after
START?
Command = STOP or
START when sending or
receiving data (byte+ACK)?
YES
NO
Valid
Command
YES
- I2CSTA = 0x00
- INT = Low
- Set SI bit at 1
- Release SDA and SCL
Read I2CSTA (00H)
Note:
1.
Valid for Master and Slave Modes
Reset PCA9564
RESET = Low
Figure 11. Bus error Flowchart
23
CPU Command
APPLICATIONS
Typical Application using the 80C51 microcontroller
Figure 12 shows the PCA9564 in a typical application. Interfacing is simple to realize and requires minimal external
devices.
Figure 12. PCA9564 using the 80C51
Interfacing the PCA9564 to send/receive I2C commands over long cables
Figure 13 shows an application of PCA9564 used in conjunction with Philips P82B96 Bus buffers to send I2C commands
through long cables to slave ICs.
Figure 13. PCA9564 with P82B96 for long distance application
In such I2C systems, we introduce bus propagation delays into the SCL and SDA signals.
The existing I2C specifications do not expect bus delays because they were written for small systems inside one
enclosure. When we introduce delays we need to design to ensure the necessary bus timings will still be met. See
Figure 14 for one example of the necessary timing.
24
Figure 14. Illustrating the allowed delay time that needs to be considered
The following example shows how to calculate the longest allowed cable based on PCA9564 running at the maximum
speed of 400 kHz (nominal 330 kHz with the limits of tolerances applied). When even longer cables are needed the bus
speed must be reduced.
Two bus signal propagation delays are introduced:
1. Propagation delays caused by buffering with P82B96
2. Cable propagation delays.
Flat 4-core telephone cable makes a convenient cable for I2C signals. The logic signals should be separated by a ground
or supply wire so the signals across the cable might be chosen in the order Ground, SCL, 5V, SDA. The characteristic
impedance of the transmission lines will probably be in the 75-150 Ω range, and will not be equal due to their
asymmetry. The allowed pull-up resistors will be greater than the correct termination impedance, especially if the pullups are split, for symmetry, by putting half the pull-up at each end of the link. For 5V operation, the lowest resistance
allowed at each end of the cable is (5 V – 0.4 V) / 15 mA = 307 Ω and it is best to use the nearest convenient value,
316 Ω or 330 Ω. Plastic cable propagation delays are about 5 ns/m. We need to consider the “round trip” delays, meaning
the sum of SCL signal delays from master to slave then the SDA reply signal delays back to the master. So for each
meter of cable, the “round trip” signal delay will be 10 ns.
The delays associated with the P82B96 buffering include its internal logic propagation delays (about 300 ns from master
to slave, and 300 ns from slave back to master because the signals in each direction will travel through two devices) plus
“effective” propagation delays caused by bus rise and fall times if there is significant local bus capacitive loading at the
ends of the cables. Each device will cause about 200 ns delay for signals in one direction and less than 80 ns in the other
direction, the total is less than 300 ns.
Because the delays will be almost identical on the SCL and SDA lines, and PCA9564 supports “clock stretching”, about
half of the propagation delay introduced by P82B96 on the SCL wire does not need to be considered. When it delays the
rise of the SCL line at the master (PCA9564), the master will simply adjust its timings to take account of that delay.
The important delays are:
1. The effective delay of the falling edge of the SCL signal from the PCA9564 to the slave and
2. The effective delay of a rising edge of SDA information from a slave back to the PCA9564.
These are usually the longest delay times that effectively reduce the timing margins of I2C signals.
25
(A falling edge generated by a slave usually has a faster fall time than the corresponding (passive) bus rise time, so the
rise time case becomes the design limit. A delay of the rising edge of the SCL is an allowed “clock stretching”.)
Consider:
1. The SCL falling edge propagation to the slave. PCA9564 drives Sx low, the low at Sx propagates to Tx with less
than 80 ns delay. Tx has powerful sinking capability and will drive the cable past the logic low threshold in about
20 ns. The low propagates to the distant P82B96 after a cable delay of 5ns/meter. The received low at Rx propagates
to Sx on the slave I2C-bus with about 200 ns delay. Total delay = 80 ns + 20 ns + 200 ns + 5 ns/m = 300 ns +
5 ns/m.
2. When the slave receives the SCL low it responds with an ACK pulse or data on its SDA line. Most Philips slave
parts will respond in less than 600 ns (See AN255 Appendix 7). I/O expanders and LED drivers e.g. PCA9554 or
PCA9550 respond in less than 375 ns. We need to consider the worst case where a slave outputs a “1” and the SDA
line needs to rise from a low.
The slave SDA line at Sx rises to 0.65 V and that high level at Sx propagates through P82B96 in 80 ns to release its
Tx pin. The cable at Tx will rise with a time constant that depends on any local capacitance and the pull-up resistor
in parallel with the cable’s characteristic impedance. The maximum allowed rise time is 300 ns (measured between
30% and 70% of VCC) but to allow for buffer/cable delays it is necessary to design for much shorter times. It is
difficult (without simulations) to accurately predict the signals on improperly terminated transmission lines but in
practice it is easy to achieve the more practical cable rise time (i.e. its 0-50% rise time) in less than 50 ns by using
minimum pull-up resistors (30 mA total sink current).
The cable delays will not exceed 5 ns/m, but don’t be surprised if, due to reflection effects, the Rx pin crosses Vcc/2
at the far end before it reaches that level at the end that generates the signal!
The signal from the cable connected at Rx propagates to Sx (connected to PCA9564) with a delay less than 200 ns.
So the total propagation delay of the SDA signal = 80 ns + 50 ns + 5 ns/m. + 200 ns = 330 ns + 5 ns/m.
The slave response delay may be measured, or taken as less than 600 ns for most Philips parts.
The delay in the rise of Sx on the SCL connection at the PCA9564 is calculated as follows:
- PCA9564 releases Sx
- Sx rises to the high threshold at Sx = 0.65 V, this high at Sx propagates to Tx after a delay about 80 ns.
- Tx releases the cable and the cable input voltage rises to half rail in typically 30 ns.
- That high at Rx propagates back to release the SCL line at Sx after a delay about 200 ns.
So the total “clock stretch” = 80 ns + 30 ns + 200 ns = 310 ns.
The total (effective) delay introduced into the data signal returning from a slave is calculated as:
Propagation delay of SCL falling edge from PCA9564 to the slave – compensating local clock stretch effect at the
PCA9564 + slave response time + delay of an SDA rising edge of data sent from a slave to PCA9564.
Effective delay (ns) = (300 ns + 5 ns/m) – 310 ns + Slave response time + (330 ns + 5 ns/m) = slave response time plus
(320 ns + 10 ns/m)
The available response time for 400 kHz operation = minimum clock low period – data set-up time = 1300 ns – 100 ns =
1200 ns.
The safety margin available to be used for introduced delays (assuming a 600 ns slave response time) = 1200 ns – 600 ns
– 320 ns – 10 ns/m = 280 ns – 10 ns/m.
This would allow a maximum cable length of 28 m, for full 400 kHz operation.
Notice that no allowance is made until now for the rise/fall times of the buses connected at Sx at the master and slave.
When these are 3.3 V buses, that permit pull-up resistors of around 1 kΩ, practical rise and fall times with say 50 pF
loading can be kept to less than 80 ns total.
That means practical cable lengths up to at least 20 m, having 200 ns propagation delay, are possible when operated with
5 V logic and slaves with delays up to 600 ns. For greater noise immunity, it is also allowable to use 12 V logic levels on
the cable but with such fast switching and unshielded the possible radiated interference also should be considered.
In practice these calculations provide quite large safety margins. For example PCA9564 does not actually use the SDA
signal until about 180 ns after the SCL rising edge while our calculations, based on the general I2C requirements, have
allowed 100 ns set-up time. That provides some 280 ns of additional safety margin.
And when PCA9564 is operating at its normal master speed of 330 kHz there will be an additional clock low time of
276 ns, providing another very large factor of safety. At the nominal 330 kHz a typical cable could be over 70 meters
long.
26
PCA9564 EVALUATION BOARD
An evaluation board for the PCA9564 device has been designed and is available free of charge (while supplies last)
through your local Philips Sales office or by sending an email to: [email protected]
More information can be found at the PCA9564 Evaluation Board main web page:
http://www.standardproducts.philips.com/support/boards/pca9564
FREQUENTLY ASKED QUESTIONS
1.
Question: We are planning on using the PCA9564. Does this device support Hot Insertion (i.e., the SCL and SDA
pins receive a signal before power is up)?
Answer: The PCA9564 would be OK, in the sense that it should not do anything to the bus until the power-up
sequence is finished and the part is programmed to do so. There could be some drooping of the bus lines as the part
is added to the line and the SCL/SDA pin capacitance is charged.
2.
Question: What happens to the PCA9564 and the PCF8584 if they are inserted to an active I2C-bus? It seems to me
that they will not be well initialized and will not recognize that the bus is busy.
Answer: Both the PCF8584 and PCA9564 will be in an incorrect initialization state if they are inserted into a
system in the middle of an I2C transmission. Both devices need to see the Start condition to recognize that the bus is
busy. For that, it is a good design practice to introduce a delay at least equal to the longest I2C transmission at power
up before starting any operation. Introducing this delay will insure that the bus controller will detect correctly the
“bus busy” condition.
3.
Question: We have begun to work with the PCA9564 Parallel ↔ I2C converter in our application and we noticed
that there is no specific mention of the handling of the General Call Address in the specification. Is this device able
to process messages from the general call address as well as its specific node address (set by software)?
Answer: The PCA9564 has not been designed to respond to the General Call Address. When such a command is
generated in the bus, the PCA9564 will ignore it, will not acknowledge and no further action will be taken during
the sequence.
4.
Question: The PCA9564 does not seem to include a bus monitor mode. Is it only the PCF8584 that has this
capability?
Answer: Yes, the PCF8584 can monitor the bus, but the PCA9564 cannot. This feature was not included in the
PCA9564 to make the part less complex.
5.
Question: Prior to changing the design over to the PCA9564, we had planned to use the PCF8584. It was my
understanding the PCF8584 was not recommended for new designs. Is that the case?
Answer: The PCF8584 is recommended for new designs. It is usually always better to move to the newer devices
for new design since they would give the greatest life span, but since the PCA9564 doesn't have the snoop mode,
long distance mode, all call and can't work at 5 V AND the PCF8584 is currently being used in many different
segments in cumulative large volumes, the PCF8584 is not going to be obsolete for 5-10 years if then, so please feel
free to use it for your new design without worrying about EOL issues.
6.
Question: How do masters know who they are (how is their address assigned)?
Answer: Masters do not have addresses unless they can also be slaves. The system architect reviews all I2C slave
devices that will operate within the system and which I2C address each slave device will be assigned. The designer
then writes firmware in C or Assembly language that includes the specific 7-digit I2C address for that master/slave
device. The firmware is loaded into the microcontroller in three possible ways:
1) Mask programmable by manufacturer (e.g., Philips Semiconductors),
2) OTP on test bench by manufacturer or done locally
3) Sent to device and stored in flash (EEPROM like memory) by manufacturer or done locally.
When the microcontroller powers up, the firmware will assign the slave address to the device (127 different
addresses are possible). If the microcontroller does not have an I2C port, it can use a bus controller device like the
PCF8584 or PCA9564 to interface with the I2C-bus. The bus controllers are programmed by the microcontroller at
start up through the 8 parallel I/O pins with the slave address in the firmware. The bus controller's slave address is
stored in the “Own Address” register in the PCF8584 and the “I2CADR” register in the PCA9564.
27
7.
Question: What happens when the master connected to the PCA9564 initiates an I2C communication by requesting
a START condition and that the SDA line is LOW because an I2C device downstream is holding the line (stuck
situation)? Can the PCA9564 manage this situation or does it only report a “SDA Stuck Low” status?
Answer: The PCA9564 is capable of sending out 9 clock pulses and a STOP condition on the I2C-bus (when it has
been requested to send a START condition and the SDA line is LOW). It will then look at the SDA line again and
check if the line has gone HIGH after this particular sequence. If not, it will report an error condition. If the SDA
line has gone HIGH, it will go ahead and send a START condition on the I2C-bus. This was designed in specifically
for the situation in which a slave is holding the SDA line low because it is stuck in a READ operation and is sending
out a LOW (zero) to the master but does not receive any further clock cycles followed by a NACK to reset itself.
8.
Question: I want to know if Philips Semiconductors has an I2C-bus controller for high-speed mode – 3.4 MHz?
Answer: I don't know of any bus controller that handles 3.4 MHz. The bus controller is used to interface a
Microcontroller to the I2C-bus in a multiple master application since it supports all master modes. In simple systems
with only one master it would be possible to bit bang the I2C-bus using two I/O ports on the micro. This allows the
higher bus speeds assuming the slave is rated for the High-Speed mode.
9.
Question: Is there a low power standby mode in the PCA9564. If yes, how?
Answer: When the SDA/SCL lines are high, the bus is idle and the PCA9564 is in active standby mode, meaning
that the digital core does not consume any current and since the SDA/SCL lines are high, there is no current also in
the I/O's. However, the device is ready to send/receive data to/from the I2C-bus and the built-in oscillator is running.
There is a bit in the Control register (I2CCON Register, bit ENSIO) that enables/disables the Serial I/O (I2C-bus)
and thus disabling the internal oscillator.
- When this bit is at 0, SDA/SCL are in high-impedance state, all signals from the SDA/SCL lines will be ignored
and the device is in a "not addressed" slave state. Internal oscillator is also deactivated. This is the low power
standby mode of the PCA9564. All the block of the devices are disabled.
- When this bit is set to 1, the part becomes fully "awake" after 500 µs, which is the required time to have the
internal oscillator up and running. The device is then ready to send/receive data to/from the I2C-bus.
10. Question: The standby current of the PCA9564 is specified at 0.1 µA typical, 3 µA max. What test setting is it used
to achieve such a value?
Answer: As far as the measurement conditions for testing went, 3 different setups for IDD standby were tested. For
all the following conditions, the ENSIO bit of the control register I2CCON must be set to "0" (which is also the
default conditions at power up or external reset).
IDD standby(L1): All inputs low except for CE which is high, VDD = 3.6 V
IDD standby(L2): All inputs low except for RD which is high, VDD = 3.6 V
IDD standby(H): All inputs high except for NC that is internally pulled low when not connected. VDD = 3.6 V
Note: You cannot have CE and RD low at the same time or the outputs are enabled and any then additional
current will be a function of your parallel port loading.
11. Question: I would like to use the PCA9564 in my design but I noticed that its power supply can be 3.6 V max.
However, I need to interface the device with a 5 V microcontroller. Do I need a 5 V↔ 3.3 V interface between the
2 devices?
Answer: No. Even though the PCA9564 is a 3.3 V device, all the I/O’s (parallel port and control signals, serial bus)
are 5 V tolerant and do not require additional device to interface with 5 V systems.
12. Question: PCA9564 has a SCL clock frequency specified at 330 kHz. Fast-mode I2C protocol specifies a max
frequency at 400 kHz. Why this difference?
Answer: Maximum clock frequency has been designed to be 330 kHz typical in order to include its variation
depending on the power supply, the temperature and the process. Doing that ensures not to violate the “400 kHz max
I2C clock frequency” specified by the protocol when the PCA9564 is in Master mode.
When PCA9564 is in Slave mode, it accepts a clock frequency up to 400 kHz from the bus master.
13. Question: Does the PCA9564 have to switch the mode between slave transmitter and master transmitter mode or
can the PCA9564 do these in a signal-operating mode?
Answer: PCA9564 takes care of that itself. From an idle situation, the device is able to recognize if it has to act as a
master or slave.
- If from an idle situation, data are sent in the parallel port from the microcontroller (data will be a START
command first), then the PCA9564 will act as a master and later on, depending on what the master wants to do
28
-
(read or write), it will be a transmitter and/or receiver. Note that if the bus is not idle at that time (another master
is communicating with somebody else), the PCA9564 will tell the microcontroller that it can't take the control
of the bus so far.
If from an idle condition, a Start command is placed by somebody in the I2C-bus and that the address matches
the address that the PCA9564 has on it, it will then configure itself as a slave and again, depending on what the
master outside wants to do (read or write), the PCA9564 will be either a transmitter or and/or receiver.
14. Question: The manual states that only a Reset may set the PCA9564 into a working state 0xF8 but that would
require an additional port bit in my master device for resetting the PCA9564. I would suggest to use ENSIO bit for
that purpose. Is that possible?
Answer: ENSIO bit only disables the I2C port of the PCA9564 (it cannot send / cannot respond to anything from the
I2C-bus) but does not reset the state machine and does not put the PCA9564 on that specific state. It's actually quite
dangerous not to use the Reset pin of the PCA9564 because it can go to some states (see datasheet page 14 table 6)
where only a Reset allows the device to leave this mode (or a Power down/ Power up sequence).
15. Multi-part Question: Decoupling capacitors/noise
Question15-1: Do you have any recommendation for the bypass capacitor between VDD and VSS?
Answer 15-1: A 0.1 µF capacitor can be used and it needs to be located as close as possible from the VDD pin.
Question 15-2: Is there any limitation for noise on VDD line that we should be aware of? We are concerned about
“false operations" or "dispersion of clock frequency" that might be caused by noise.
Answer 15-2: We have not seen any limitation induced by noise on the PCA9564 (simulation, bench,
characterization). The device has good noise immunity. The internal clock is 9 MHz (+/- 10 %) and goes through
several dividers to be used by the digital core. Special cares have been taken for the clock tree. The I2C max
frequency is not high (400 kHz max) and at such value, not that much noise is generated.
Question 15-3: From a noise point of view, are there any PCB rules that have to be applied to the PCA9564 and the
different signals connected to it?
Answer 15-3: There are not special cares for that device. Only rules that apply to any other digital devices must be
followed:
- No digital signals should cross each other and no other high frequency clock should cross those signals (parallel
bus, control signals, SDA, SCL)
- The parallel bus signals should be separated from the other signals (those ones can run up to 50 MHz and are
susceptible to generate higher noise levels.
- "Quiet" signals (VDD, VSS) can be used to separate the control signals.
16. Question: I want to use the PCA9564 as master receiver. How do I handle the ACK/NACK phases? The PCA9564
has to ACK all the received bytes except the last one where it has to NACK so it can take control of the SDA line
and generate the STOP command.
Answer: This is controlled by the bit AA in the I2CCON Register. When you write AA = 1 in the I2CCON
Register, the PCA9564 will acknowledge the received byte (ACK). When you write AA = 0 in the I2CCON
Register, the PCA9564 will not acknowledge the received byte (NACK)
17. Question: Which pins of the PCA9564 device require pull-up resistors?
Answer: INT , SDA and SCL signals must have pull-up resistors. The data bus D[0:7], the address bus A[0:1],
CE , RD and WR signals may require pull-up resistors but it depends what you are interfacing it with. Most
microcontrollers have pull-ups in their I/O ports so pull-ups are not required. If the device controlling the PCA9564
does not have pull-ups then you will need to add them.
18. Question: We have connected the PCA9564 towards a FPGA circuit that acts as a control-unit for the PCA9564.
The FPGA sets its data bus pins in tri-state mode when reading from the data bus between the FPGA and the
PCA9564. To enable the PCA9564 to read from the data bus between the FPGA and the PCA9564, should the
CE pin be in a 0-state? What worries me is that the PCA9564 really has the ability to read from the bus when in
3-state mode.
Answer: CE needs to be active (Low) to read from the bus. When CE is High, the PCA9564 will ignore any RD or
WR signals on the bus.
29
ADDITIONAL INFORMATION
The latest datasheets for the Bus Controller family of products and other SMBus/I2C products can be found at the Philips
Semiconductors website:
http://www.semiconductors.philips.com/i2c
Software tools for most of Philips’ products can be found at:
http://www.semiconductors.philips.com/i2c/support
Additionnal technical support for Bus Controller devices can be provided by e-mailing the question to:
Email: [email protected]
REVISION HISTORY
Revision
_4
Date
20041122
_3
20040802
_2
20031013
_1
20031003
Description
Application note (9397 750 14357)
Modification:
• Page 12: Figure 2 modified to correct timing errors
Application note (9397 750 13934)
Modifications:
• Page 4: PCA9564 features: added DIP package
• Page 5: Modified Pin configuration and Pin information to include DIP package
• Page 15: Added “Master and Slave modes handling” paragraph
• Page 27: Added “PCA9564 Evaluation Board” paragraph
• Page 29: Added Question/Answer 14 to 18
Application note (9397 750 12166).
Modifications:
• Page 4: added “I2C General Call Address” paragraph
• Page 4: PCF8584 Features: added bullet “I2C-bus All Call Mode”
• Page 10: Clock bit rates for CR2-CR0 bits (table): modified Note 1.
Application note, initial version (9397 750 12149).
30
2
2
Purchase of Philips I C components conveys a license under the Philips I C
2
patent to use the components in the I C system provided the system
2
conforms to the I C specifications defined by Philips. This specification can
be ordered using the code 9398 393 40011.
Disclaimers
Application information – Applications that are described herein for any of these products are for illustrative purposes only. Philips
Semiconductors make no representation or warranty that such applications will be suitable for the specified use without further testing or
modification.
Life support – These products are not designed for use in life support appliances, devices or systems where malfunction of these
products can reasonably be expected to result in personal injury. Philips Semiconductors customers using or selling these products for
use in such applications do so at their own risk and agree to fully indemnify Philips Semiconductors for any damages resulting from such
application.
Right to make changes – Philips Semiconductors reserves the right to make changes, without notice, in the products, including circuits,
standard cells, and/or software, described or contained herein in order to improve design and/or performance. Philips Semiconductors
assumes no responsibility or liability for the use of any of these products, conveys no license or title under any patent, copyright, or mask
work right to these products, and makes no representations or warranties that these products are free from patent, copyright, or mask
work right infringement, unless otherwise specified.
©Koninklijke Philips Electronics N.V. 2004
All rights reserved. Printed in U.S.A
Contact information
For additional information please visit
http://www.semiconductors.philips.com
Date of release: 11-04
Document order number:
9397 750 14357
Fax: +31 40 27 24825
For sales offices addresses send e-mail to:
[email protected]
31