Eine kleine Menge asynchroner Logik ermöglicht es einem I2C-Slave, unabhängig davon, wie langsam seine synchrone Logik ausgeführt wird, einen Bus mit Geräten zu teilen, die viel schneller laufen. Ein solches Gerät muss die Geschwindigkeit anderer Geräte für das erste Wort einer Transaktion drosseln (während es prüft, ob es adressiert wird), aber das Protokoll würde weiterhin funktionieren. Wenn eine Transaktion für eine andere Person bestimmt ist, kann das langsame Gerät nach dem Adressbyte ausfallen und die schnelleren Geräte untereinander mit voller Geschwindigkeit kommunizieren lassen.
Eine etwas asynchrone Logik würde es einem I2C-Slave ermöglichen Empfangen Sie ein Datenbyte, ohne den Master zu verzögern, bis das ack / nak erforderlich war. Ein wenig mehr Logik würde es dem Slave noch ermöglichen, Transaktionen zu ignorieren (ohne dass der Bus darauf wartet, dass die CPU einen NAK generiert), deren erstes oder zwei Bytes nicht mit einem bestimmten Muster übereinstimmen. Natürlich muss jede Kommunikation, die für das langsame Gerät bestimmt ist, mit einer Geschwindigkeit übertragen werden, die es verarbeiten kann, aber es kann wünschenswert sein, schnelleren Geräten zu ermöglichen, den Bus mit voller Geschwindigkeit zu nutzen, ohne dass eine Verzögerung von einem Gerät eingeführt wird, das nicht interessiert ist ohnehin in der Kommunikation.
Leider werden zumindest einige I2C-Implementierungen, wie die im PSOC, ersticken, wenn I2C-Daten im Verhältnis zur CPU-Taktrate zu schnell ausgetauscht werden (ein Problem, wenn ein PSOC mit reduzierter Geschwindigkeit ausgeführt wird Geschwindigkeit, um Energie zu sparen). Ich bin mir über den PIC nicht sicher.