Una pequeña cantidad de lógica asíncrona permitirá que un esclavo I2C, sin importar qué tan lenta se ejecute su lógica síncrona, comparta un bus con dispositivos que se ejecutan mucho más rápido. Dicho dispositivo tendrá que acelerar la velocidad de otros dispositivos para la primera palabra de cualquier transacción (mientras verifica si se está abordando) pero el protocolo aún funcionaría. Si una transacción está destinada a otra persona, el dispositivo lento podría interrumpirse después del byte de la dirección, permitiendo que los dispositivos más rápidos se comuniquen a toda velocidad entre ellos ...
Un poco más de lógica asíncrona permitiría a un esclavo I2C recibir un byte de datos sin retrasar el maestro hasta que se requiera el ack / nak. Un poco más de lógica aún permitiría al esclavo ignorar (sin hacer que el bus espere a que la CPU genere un NAK) cualquier transacción cuyo primer byte o dos bytes no coincida con un patrón en particular. Obviamente, cualquier comunicación destinada al dispositivo lento tendrá que transmitirse a una velocidad que pueda manejar, pero puede ser conveniente permitir que los dispositivos más rápidos utilicen el bus a toda velocidad sin que se introduzca ningún retraso por parte de un dispositivo que no esté interesado. En la comunicación de todos modos.
Desafortunadamente, al menos algunas implementaciones de I2C, como las del PSOC, se ahogarán si los datos de I2C se intercambian demasiado rápido en relación con la velocidad de reloj de la CPU (un problema al ejecutar un PSOC a velocidad reducida para ahorrar energía). No estoy seguro sobre el PIC.