A very concise and clear explanation of the two protocols and differences between them. Good article summarizing the origins if the two protocols and their use within embedded systems. A required reading for anyone wanting to use these in their projects.
Both SPI and I2C offer good support for communication with low-speed devices, but SPI is better suited to applications in which devices transfer data streams, while I²C is better at multi master ‘register access’ application.
- SPI is faster; it can operate at a much higher frequency than I2C(100-400kHz is typical).
- I2C only requires 2 lines while SPI needs four lines (3 lines for bi-directional communication and an additional slave select for each device on the bus).
- I2C is more complex and though extendable; by having multiple masters and slaves.
- If you are using a microcontroller, preferable if it also has an I2C controller.
Here’s another article further elaborates giving specific examples in context of modern microprocessors.