
PIC16F87X
DS30292A-page 74
1999 Microchip Technology Inc.
FIGURE 9-7:
I
2
C WAVEFORMS FOR TRANSMISSION (7-BIT ADDRESS)
9.2.2
GENERAL CALL ADDRESS SUPPORT
The addressing procedure for the I
2
C bus is such that
the first byte after the START condition usually deter-
mines which device will be the slave addressed by the
master. The exception is the general call address,
which can address all devices. When this address is
used, all devices should, in theory, respond with an
acknowledge.
The general call address is one of eight addresses
reserved for specific purposes by the I
2
C protocol. It
consists of all 0’s with R/W = 0
The general call address is recognized when the Gen-
eral Call Enable bit (GCEN) is enabled (SSPCON2<7>
is set). Following a start-bit detect, 8-bits are shifted
into SSPSR and the address is compared against
SSPADD. It is also compared to the general call
address and fixed in hardware.
If the general call address matches, the SSPSR is
transferred to the SSPBUF, the BF flag is set (eighth
bit), and on the falling edge of the ninth bit (ACK bit), the
SSPIF flag is set.
When the interrupt is serviced, the source for the inter-
rupt can be checked by reading the contents of the
SSPBUF to determine if the address was device spe-
cific or a general call address.
In 10-bit mode, the SSPADD is required to be updated
for the second half of the address to match, and the UA
bit is set (SSPSTAT<1>). If the general call address is
sampled when GCEN is set while the slave is config-
ured in 10-bit address mode, then the second half of
the address is not necessary, the UA bit will not be set,
and the slave will begin receiving data after the
acknowledge (
Figure 9-8
).
FIGURE 9-8:
SLAVE MODE GENERAL CALL ADDRESS SEQUENCE (7 OR 10-BIT MODE)
SDA
SCL
SSPIF
BF (SSPSTAT<0>)
CKP (SSPCON<4>)
A7
A6
A5
A4
A3
A2
A1
ACK
D7
D6
D5
D4
D3
D2
D1
D0
Not ACK
Transmitting Data
R/W = 1
Receiving Address
1
Data in
sampled
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
P
cleared in software
SSPBUF is written in software
From SSP interrupt
service routine
Set bit after writing to SSPBUF
(the SSPBUF must be written-to
before the CKP bit can be set)
S
SCL held low
rewhile CPU
R/W = 0
SDA
SCL
S
SSPIF
BF
(SSPSTAT<0>)
SSPOV
(SSPCON<6>)
Cleared in software
SSPBUF is read
R/W = 0
ACK
General Call Address
Address is compared to General Call Address
after ACK, set interrupt flag
GCEN
(SSPCON2<7>)
Receiving data
ACK
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
D7
D6
D5
D4
D3
D2
D1
D0
’0’
’1’