ST90158 - SERIAL PERIPHERAL INTERFACE (SPI)
SERIAL PERIPHERAL INTERFACE (Cont’d)
2
Table 26. Typical I C-bus Sequences
Phase
Software
Hardware
Notes
SPICR.CPOL, CPHA = 0, 0
SPICR.SPEN = 0
SPICR.BMS = 1
SCK pin set as AF output
SDI pin set as input
Set SDO port bit to 1
Set polarity and phase
SPI disable
START/STOP interrupt
Enable
SCK, SDO in HI-Z
SCL, SDA = 1, 1
INITIALIZE
SDO pin set as output
Open Drain
Set SDO port bit to 0
SDA = 0, SCL = 1
interrupt request
START condition
receiver START detection
START
SPICR.SPEN = 1
SDO pin as Alternate Func- Start transmission
tion output load data into
SPIDR
SCL = 0
Managed by interrupt rou-
tine load FFh when receiv-
ing end of transmission
detection
TRANSMISSION
Interrupt request at end of
byte transmission
SPICR.SPEN = 0
Poll SDA line
Set SDA line
SCK, SDO in HI-Z
SCL, SDA = 1
SPI disable
only if transmitting
only if receiving
only if transmitting
ACKNOWLEDGE
STOP
SPICR.SPEN = 1
SCL = 0
SDO pin set as output
Open Drain
SPICR.SPEN = 0
Set SDO port bit to 1
SDA = 1
interrupt request
STOP condition
Figure 69. SPI Data and Clock Timing (for I2C protocol)
th
1st BYTE
n
BYTE
SDA
AcK
AcK
SCL
1
2
8
9
1
2
8
9
CLOCK PULSE
CLOCK PULSE
FOR ACKNOWLEDGEMENT
DRIVEN BY SW
FOR ACKNOWLEDGEMENT
DRIVEN BY SOFTWARE
START
STOP
CONDITION
CONDITION
VR000188
n
138/199
9