Datasheet

SAM9G20
DS60001516A-page 388 2017 Microchip Technology Inc.
29.6 Functional Description
29.6.1 Modes of Operation
The SPI operates in Master Mode or in Slave Mode.
Operation in Master Mode is programmed by writing at 1 the MSTR bit in the Mode Register. The pins NPCS0 to NPCS3 are all configured
as outputs, the SPCK pin is driven, the MISO line is wired on the receiver input and the MOSI line driven as an output by the transmitter.
If the MSTR bit is written at 0, the SPI operates in Slave Mode. The MISO line is driven by the transmitter output, the MOSI line is wired
on the receiver input, the SPCK pin is driven by the transmitter to synchronize the receiver. The NPCS0 pin becomes an input, and is used
as a Slave Select signal (NSS). The pins NPCS1 to NPCS3 are not driven and can be used for other purposes.
The data transfers are identically programmable for both modes of operations. The baud rate generator is activated only in Master Mode.
29.6.2 Data Transfer
Four combinations of polarity and phase are available for data transfers. The clock polarity is programmed with the CPOL bit in the Chip
Select Register. The clock phase is programmed with the NCPHA bit. These two parameters determine the edges of the clock signal on
which data is driven and sampled. Each of the two parameters has two possible states, resulting in four possible combinations that are
incompatible with one another. Thus, a master/slave pair must use the same parameter pair values to communicate. If multiple slaves are
used and fixed in different configurations, the master must reconfigure itself each time it needs to communicate with a different slave.
Table 29-2 shows the four modes and corresponding parameter settings.
Figure 29-3 and Figure 29-4 show examples of data transfers.
Figure 29-3: SPI Transfer Format (NCPHA = 1, 8 bits per transfer)
Table 29-2: SPI Bus Protocol Mode
SPI Mode CPOL NCPHA
001
100
211
310
6
*
SPCK
(CPOL = 0)
SPCK
(CPOL = 1)
MOSI
(from master)
MISO
(from slave)
NSS
(to slave)
SPCK cycle (for reference)
MSB
MSB
LSB
LSB
6
6
5
5
4
4
3
3
2
2
1
1
* Not defined, but normally MSB of previous character received.
123 45 786