
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