I2C+vs.+SPI

Mikrocontroller kommunizieren auf vielfältige Weise mit der realen Welt: - "diskret": 5V oder 0V - Digitale Signale bestimmer Frequenz (FM) - Digitale Signale eines bestimmten Puls-Breiten Verhältnisses (PWM) - Höhere asynchrone Protokolle ("Serielle 8-Bit") - Höhere synchrone Protokolle, die immer eine "Taktleitung" benötigen (man kann das aber auch kombinieren..)

Im letzteren Fall kann/muss man sich oft zwischen I2C und SPI entscheiden, es gibt auch einen kleinen "1-Wire"-Markt.


 * Kriterium || I2C || SPI ||
 * Leitungen || 3 SDA, SCL, GND || 4 (MISO, MOSI, CLK, GND) + N*CS ||
 * Geschwindigkeit || <400kHz || >1 MHz ||
 * Protokollkomplexität || mittel || gering ||
 * Chippreise || höher || niedriger ||

Der wesentliche Unterschied besteht darin, dass bei I2C die "Buslogik" über zwei Leitungen abgewickelt wird, während bei SPI Verbindungen die verbundenen Geräte zwar auch an einem (3-Draht) Bus hängen, aber die Selektion des aktiven Teilnehmers durch zusätzliche Leitungen ("CS") realisiert werden muss. Bei einem einzigen Teilnehmer gibt es praktisch keinen Unterschied.