57
ATmega103(L)
0945G–09/01
Serial Peripheral
Interface – SPI
The Serial Peripheral Interface (SPI) allows high-speed synchronous data transfer
between the ATmega103(L) and peripheral devices or between several AVR devices.
The ATmega103(L) SPI features include the following:
•
Full-duplex, 3-wire Synchronous Data Transfer
•
Master or Slave Operation
•
LSB First or MSB First Data Transfer
•
Four Programmable Bit Rates
•
End-of-Transmission Interrupt Flag
•
Write Collision Flag Protection
•
Wake-up from Idle Mode (Slave Mode only)
Figure 37.
SPI Block Diagram
The interconnection between master and slave CPUs with SPI is shown in Figure 38.
The PB1 (SCK) pin is the clock output in the master mode and is the clock input in the
slave mode. Writing to the SPI Data Register of the master CPU starts the SPI clock
generator, and the data written shifts out of the PB2 (MOSI) pin and into the PB2 (MOSI)
pin of the slave CPU. After shifting one byte, the SPI clock generator stops, setting the
end-of-transmission flag (SPIF). If the SPI interrupt enable bit (SPIE) in the SPCR regis-
ter is set, an interrupt is requested. The Slave Select input, PB0(SS), is set low to select
an individual slave SPI device. The two shift registers in the master and the slave can be
considered as one distributed 16-bit circular shift register. This is shown in Figure 38.
When data is shifted from the master to the slave, data is also shifted in the opposite
direction, simultaneously. This means that during one shift cycle, data in the master and
the slave are interchanged.