I2C
CY8C24xxx Preliminary Data Sheet
280
Document No. 38-12011 Rev. *E
December 22, 2003
The nominal values, when using the internal 24 MHz oscilla-
tor, are shown in
Table 27-3
.
When clocking the input with a frequency other than 24 MHz
(e.g., clocking the PSOC chip with an external clock), the
baud rates and sampling rates will scale accordingly.
Whether the block will work in a Standard mode or Fast
mode system depends on the sample rate. The sample rate
must be sufficient to resolve bus events, such as Start and
Stop conditions. (See the I2C Specification, Version 2.1, by
Phillips Semiconductor, for minimum Start and Stop hold
times.)
Bit 1: Enable Master.
When this bit is set, the Master Sta-
tus and Control register is enabled (otherwise it is held in
reset) and I2C transfers can be initiated in Master mode.
When the Master is enabled and operating, the block will
clock the I2C bus at one of four baud rates, defined in the
Clock Rate register. When operating in Master mode, the
hardware is multi-master capable, implementing both clock
synchronization and arbitration. If the Slave Enable bit is not
set, the block will operate in Master Only mode. All external
Start conditions will be ignored (although the Bus Busy sta-
tus bit will still keep track of bus activity). Block enable will
be synchronized to the SYSCLK clock input (
see “Timing
Diagrams” on page 284
).
Bit 0: Enable Slave.
When the Slave is enabled, the block
generates an interrupt on any Start condition and an
address byte that it receives, which indicates the beginning
of an I2C transfer. When operating as a Slave, the block is
clocked from an external Master and therefore, will work at
any frequency up to the maximum defined by the currently
selected Clock Rate. The internal clock is only used in Slave
mode to ensure that there is adequate setup time from data
output to the next clock on the release of a Slave stall. When
the Enable Slave and Enable Master bits are both ‘0’, the
block is held in reset and all status is cleared. See
Figure 27-4
for a description of the interaction between the
Master/Slave Enable bits. Block enable will be synchronized
to the SYSCLK clock input (
see “Timing Diagrams” on
page 284
).
For additional information, reference the
I2C_CFG register
on page 127
.
Table 27-3. I2C Clock Rates
Clock Rate [1:0]
I2C Mode
SYSCLK Pre-scale
Factor
Samples per Bit
Internal Sampling
Freq./Period
(24 MHz)
1.5 MHz/667 ns
6 MHz/167 ns
1.5 MHz/667 ns
Master Baud Rate
(nominal)
Start/Stop Hold
Time
(8 clocks)
5.3 us
1.33 us
10.7 us
00b
01b
10b
11b
Standard
Fast
Standard
Reserved
/16
/4
/16
16
16
32
93.75 kHz
375 kHz
46.8 kHz
Table 27-4. Enable Master/Slave Block Operation
Enable
Master
No
Enable
Slave
No
Block Operation
Disabled:
The block is disconnected from the GPIO pins,
P1_5 and P1_7 (the pins may be used as general
purpose IO). When either the Master or Slave is
enabled, the GPIO pins are under control of the I2C
hardware and are unavailable.
All internal registers (except I2C_CFG) are held in
reset.
Slave Only Mode:
Any external Start condition will cause the block to
start receiving an address byte. Regardless of the
current state, any Start resets the interface and ini-
tiates a receive operation. Any Stop will cause the
block to revert to an idle state
The I2C_MSCR register is held in reset.
Master Only Mode:
In this mode, external Start conditions are ignored.
No Byte Complete interrupts on external traffic are
generated, but the Bus Busy status bit continues to
capture Start and Stop status and thus, may be
polled by the Master to determine if the bus is avail-
able.
Full multi-master capability is enabled, including
clock synchronization and arbitration.
The block will generate a clock based on the setting
in the Clock Rate register
Master/Slave Mode:
In this mode, both Master and Slave may be opera-
tional. The block may be addressed as a Slave, but
firmware may also initiate Master mode transfers.
In this configuration, when a Master loses arbitration
during an address byte, the hardware will revert to
Slave mode and the received byte will generate a
Slave address interrupt.
No
Yes
Yes
No
Yes
Yes