English
Language : 

PIC18F23K22 Datasheet, PDF (212/492 Pages) Microchip Technology – 28/40/44-Pin, Low-Power, High-Performance Microcontrollers with nanoWatt XLP Technology
PIC18(L)F2X/4XK22
Any serial port function that is not desired may be
overridden by programming the corresponding data
direction (TRIS) register to the opposite value.
The MSSPx consists of a transmit/receive shift register
(SSPxSR) and a buffer register (SSPxBUF). The
SSPxSR shifts the data in and out of the device, MSb
first. The SSPxBUF holds the data that was written to
the SSPxSR until the received data is ready. Once the
8 bits of data have been received, that byte is moved to
the SSPxBUF register. Then, the Buffer Full Detect bit,
BF of the SSPxSTAT register, and the interrupt flag bit,
SSPxIF, are set. This double-buffering of the received
data (SSPxBUF) allows the next byte to start reception
before reading the data that was just received. Any
write to the SSPxBUF register during transmission/
reception of data will be ignored and the write collision
detect bit, WCOL of the SSPxCON1 register, will be
set. User software must clear the WCOL bit to allow the
following write(s) to the SSPxBUF register to complete
successfully.
When the application software is expecting to receive
valid data, the SSPxBUF should be read before the
next byte of data to transfer is written to the SSPxBUF.
The Buffer Full bit, BF of the SSPxSTAT register,
indicates when SSPxBUF has been loaded with the
received data (transmission is complete). When the
SSPxBUF is read, the BF bit is cleared. This data may
be irrelevant if the SPI is only a transmitter. Generally,
the MSSPx interrupt is used to determine when the
transmission/reception has completed. If the interrupt
method is not going to be used, then software polling
can be done to ensure that a write collision does not
occur.
FIGURE 15-5:
SPI MASTER/SLAVE CONNECTION
SPI Master SSPxM<3:0> = 00xx
= 1010 SDOx
Serial Input Buffer
(BUF)
SPI Slave SSPxM<3:0> = 010x
SDIx
Serial Input Buffer
(SSPxBUF)
Shift Register
(SSPxSR)
SDIx
MSb
LSb
SCKx
Serial Clock
SDOx
Shift Register
(SSPxSR)
MSb
LSb
SCKx
Slave Select
General I/O
SSx
Processor 1
(optional)
Processor 2
DS41412B-page 212
Preliminary
 2010 Microchip Technology Inc.