
1995 Microchip Technology Inc.
DS30390B-page 87
PIC16C7X
11.3
SSP I
2
C Operation
Applicable Devices
70 71 71A 72 73 73A 74 74A
The SSP module in I
2
C mode fully implements all slave
functions, and provides interrupts on start and stop bits
in hardware to facilitate software implementations of
the master functions. The SSP module implements the
standard and fast mode specifications as well as 7-bit
and 10-bit addressing. Two pins are used for data
transfer. These are the RC3/SCK/SCL pin, which is the
clock (SCL), and the RC4/SDI/SDA pin, which is the
data (SDA). The user must configure these pins as
inputs or outputs through the TRISC<4:3> bits. The
SSP module functions are enabled by setting SSP
Enable bit SSPEN (SSPCON<5>).
FIGURE 11-17: SSP BLOCK DIAGRAM
(I
2
C MODE)
The SSP module has five registers for I
2
C operation.
These are the:
SSP Control Register (SSPCON)
SSP Status Register (SSPSTAT)
Serial Receive/Transmit Buffer (SSPBUF)
SSP Shift Register (SSPSR) - Not directly acces-
sible
SSP Address Register (SSPADD)
Read
Write
SSPSR reg
Match detect
SSPADD reg
Start and
Stop bit detect
SSPBUF reg
Internal
data bus
Addr Match
Set, Reset
S, P bits
(SSPSTAT reg)
RC3/SCK/SCL
RC4/
SDI/
SDA
shift
clock
MSb
LSb
The SSPCON register allows control of the I
2
C opera-
tion. Four mode selection bits (SSPCON<3:0>) allow
one of the following I
2
C modes to be selected:
I
2
C Slave mode (7-bit address)
I
2
C Slave mode (10-bit address)
I
2
C Slave mode (7-bit address), with start and
stop bit interrupts enabled
I
2
C Slave mode (10-bit address), with start and
stop bit interrupts enabled
I
2
C start and stop bit interrupts enabled, slave is
idle
Selection of any I
2
C mode, with the SSPEN bit set,
forces the SCL and SDA pins to be open drain, pro-
vided these pins are programmed to inputs by setting
the appropriate TRISC bits.
The SSPSTAT register gives the status of the data
transfer. This information includes detection of a
START or STOP bit, specifies if the received byte was
data or address if the next byte is the completion of 10-
bit address, and if this will be a read or write data trans-
fer. The SSPSTAT register is read only.
The SSPBUF is the register to which transfer data is
written to or read from. The SSPSR register shifts the
data in or out of the device. In receive operations, the
SSPBUF and SSPSR create a doubled buffered
receiver. This allows reception of the next byte to begin
before reading the last byte of received data. When the
complete byte is received, it is transferred to the SSP-
BUF register and flag bit SSPIF is set. If another com-
plete byte is received before the SSPBUF register is
read, a receiver overflow has occurred and bit SSPOV
(SSPCON<6>) is set.
The SSPADD register holds the slave address. In 10-bit
mode, the user needs to write the high byte of the
address (
1111 0 A9 A8 0
). Following the high byte
address match, the low byte of the address needs to be
loaded (A7:A0).