SPI is a full-duplex synchronous serial protocol built around 4 lines: SCLK (clock, driven by the controller), MOSI/MISO (data out/in), and CS (chip select). Unlike I2C, devices are not addressed over the bus itself -- the controller picks which single device it's talking to by pulling that device's own CS line low, so a bus with several devices needs one CS line per device. Because the clock is a real dedicated line rather than shared/negotiated like I2C's, SPI is generally much faster, but it also has no built-in acknowledgment or error checking -- it's up to you to know your data got there.