Microchip Technology ARD00385 Data Sheet

Page of 570
 2009-2011 Microchip Technology Inc.
DS39957D-page 303
PIC18F87K90 FAMILY
21.0
MASTER SYNCHRONOUS 
SERIAL PORT (MSSP) 
MODULE
21.1
Master SSP (MSSP) Module 
Overview
The Master Synchronous Serial Port (MSSP) module is
a serial interface, useful for communicating with other
peripheral or microcontroller devices. These peripheral
devices may be serial EEPROMs, shift registers,
display drivers, A/D Converters, etc. The MSSP
module can operate in one of two modes:
• Serial Peripheral Interface (SPI)
• Inter-Integrated Circuit (I
2
C™)
- Full Master mode
- Slave mode (with general address call)
The I
2
C interface supports the following modes in
hardware:
• Master  mode
• Multi-Master mode
• Slave mode with 5-bit and 7-bit address masking 
(with address masking for both 10-bit and 7-bit 
addressing)
All members of the PIC18F87K90 family have two
MSSP modules, designated as MSSP1 and MSSP2.
Each module operates independently of the other.  
21.2
Control Registers
Each MSSP module has three associated control regis-
ters. These include a status register (SSPxSTAT) and
two control registers (SSPxCON1 and SSPxCON2). The
use of these registers and their individual configuration
bits differ significantly depending on whether the MSSP
module is operated in SPI or I
2
C mode.
Additional details are provided under the individual
sections.
21.3
SPI Mode
The SPI mode allows 8 bits of data to be synchronously
transmitted and received simultaneously. All four
modes of SPI are supported. To accomplish
communication, typically three pins are used:
• Serial Data Out (SDOx) – RC5/SDO1/SEG12 or 
RD4/SEG4/SDO2
• Serial Data In (SDIx) – RC4/SDI1/SDA1/SEG16 
or RD5/SEG5/SDI2/SDA2
• Serial Clock (SCKx) – RC3/SCK1/SCL1/SEG17 
or RD6/SEG6/SCK2/SCL2
Additionally, a fourth pin may be used when in a Slave
mode of operation:
• Slave Select (SSx) – RF7/AN5/SS1/SEG25 or 
RD7/SEG7/SS2
 shows the block diagram of the MSSP
module when operating in SPI mode. 
FIGURE 21-1:
MSSPx BLOCK DIAGRAM 
(SPI MODE)    
Note:
Throughout this section, generic refer-
ences to an MSSP module in any of its
operating modes may be interpreted as
being equally applicable to MSSP1 or
MSSP2. Register names and module I/O
signals use the generic designator ‘x’ to
indicate the use of a numeral to distinguish
a particular module when required. Control
bit names are not individuated.
Note:
In devices with more than one MSSP
module, it is very important to pay close
attention to SSPxCON register names.
SSP1CON1 and SSP1CON2 control
different operational aspects of the same
module, while SSP1CON1 and
SSP2CON1 control the same features for
two different modules. 
(          )
Read
Write
Internal
Data Bus
SSPxSR reg
SSPM<3:0>
bit 0
Shift
Clock
SSx Control
Enable
Edge
Select
Clock Select
TMR2 Output
T
OSC
Prescaler
4, 16, 64
2
Edge
Select
2
4
Data to TXx/RXx in SSPxSR
TRIS bit
2
SMP:CKE
SDOx
SSPxBUF reg
SDIx
SSx
SCKx
Note:
Only port I/O names are used in this diagram for
the sake of brevity. Refer to the text for a full list of
multiplexed functions.