Estoy de acuerdo con la publicación de @ Olin. Al mismo tiempo, hay otro punto de vista en el que I 2 C o SPI para implementar en software y cuál en hardware.
I 2 El bus C tiene una velocidad máxima más baja que SPI. El bus I 2 típico tiene una velocidad de datos máxima de 400 kbps **. SPI típico puede funcionar fácilmente a 4 Mbps. Algunas aplicaciones requieren transferencia de alta velocidad sobre SPI. Por ejemplo: tarjetas SD, comunicaciones por radio. Un SPI golpeado un poco sería demasiado lento. Como resultado, el SPI tendría que implementarse con el hardware MSSP, y el I 2 C más lento se implementaría en el software.
A veces la velocidad no es importante. Por ejemplo, un esclavo del bus genera datos lentamente, por lo que la velocidad del bus no es el factor limitante.
** Hay versiones de alta velocidad de I2C, pero son muy comunes en el momento de escribir.