English
Language : 

PIC18F2455_09 Datasheet, PDF (204/438 Pages) Microchip Technology – 28/40/44-Pin,High-Performance,Enhanced Flash,USB Microcontrollers with nanoWatt Technology
PIC18F2455/2550/4455/4550
19.3.5 MASTER MODE
The master can initiate the data transfer at any time
because it controls the SCK. The master determines
when the slave (Processor 2, Figure 19-2) is to
broadcast data by the software protocol.
In Master mode, the data is transmitted/received as
soon as the SSPBUF register is written to. If the SPI is
only going to receive, the SDO output could be dis-
abled (programmed as an input). The SSPSR register
will continue to shift in the signal present on the SDI pin
at the programmed clock rate. As each byte is
received, it will be loaded into the SSPBUF register as
if a normal received byte (interrupts and status bits
appropriately set). This could be useful in receiver
applications as a “Line Activity Monitor” mode.
The clock polarity is selected by appropriately
programming the CKP bit (SSPCON1<4>). This, then,
would give waveforms for SPI communication as
shown in Figure 19-3, Figure 19-5 and Figure 19-6,
where the MSB is transmitted first. In Master mode, the
SPI clock rate (bit rate) is user-programmable to be one
of the following:
• FOSC/4 (or TCY)
• FOSC/16 (or 4 • TCY)
• FOSC/64 (or 16 • TCY)
• Timer2 output/2
This allows a maximum data rate (at 48 MHz) of
12.00 Mbps.
When used in Timer2 Output/2 mode, the bit rate can
be configured using the PR2 Period register and the
Timer2 prescaler. However, writing to SSPBUF does
not clear the current TMR2 value in hardware. Depend-
ing upon the current value of TMR2 when the user firm-
ware writes to SSPBUF, this can result in an
unpredictable MSb bit width, unless the procedure of
Example 19-2 is used.
Figure 19-3 shows the waveforms for Master mode.
When the CKE bit is set, the SDO data is valid before
there is a clock edge on SCK. The change of the input
sample is shown based on the state of the SMP bit. The
time when the SSPBUF is loaded with the received
data is shown.
EXAMPLE 19-2: LOADING SSPBUF WITH THE TIMER2/2 CLOCK MODE
TransmitSPI:
BCF
PIR1, SSPIF
MOVF
MOVWF
BCF
CLRF
MOVF
MOVWF
BSF
SSPBUF, W
RXDATA
T2CON, TMR2ON
TMR2
TXDATA, W
SSPBUF
T2CON, TMR2ON
;Make sure interrupt flag is clear (may have been set from previous
transmission)
;Perform read, even if the data in SSPBUF is not important
;Save previously received byte in user RAM, if the data is meaningful
;Turn off timer when loading SSPBUF
;Set timer to a known state
;WREG = Contents of TXDATA (user data to send)
;Load data to send into transmit buffer
;Start timer to begin transmission
WaitComplete:
BTFSS PIR1, SSPIF
BRA
WaitComplete
;Loop until data has finished transmitting
;Interrupt flag set when transmit is complete
DS39632E-page 202
© 2009 Microchip Technology Inc.