El diseño del bus I2C es tal que:
- cuando ocurre un flanco descendente en SCL, eso puede hacer que un dispositivo esclavo afirme SDA inmediatamente, sin ningún retraso mínimo particular;
- El orden relativo de los bordes ascendentes y descendentes es de importancia crítica.
Debido a la diferencia en la fuerza del conductor y la capacitancia de la línea, sería teóricamente posible que un dispositivo responda a un borde de caída algo lento en SCL al conducir SDA tan rápido que otro dispositivo vería caer SDA primero.
Podría haber sido posible definir múltiples umbrales lógicos en SCL, y especificar que para que un borde descendente en SCL se considere que viene después de un borde en SDA, aún debe estar por encima de 2/3 VDD cuando se detecta el borde en SDA, pero un dispositivo no puede afirmar SDA en respuesta a un flanco descendente en SCL hasta que haya caído por debajo de 1/3 VDD, pero la especificación no está escrita en dichos términos.
En cambio, los dispositivos que ven bordes descendentes casi simultáneos en SDA y SCL generalmente considerarán que el borde en SCL sucedió primero a menos que esté precedido sustancialmente por el borde en SDA. Algunas implementaciones de I2C manejan esto sincronizando SCL y SDA con algún reloj externo y requiriendo que se observe un límite descendente de SDA dos períodos antes que el de SCL para que se considere que es lo primero. Si la velocidad de las operaciones en SCL y SDA es demasiado rápida en relación con el reloj de sincronización, los dispositivos pueden percibir secuencias arbitrarias de señales altas y bajas en SCL y SDA; Si una de esas secuencias parece que se dirige al dispositivo lento, puede reaccionar en consecuencia, aplastando cualquier otra comunicación que pueda estar ocurriendo.
No hay una razón particular por la que los dispositivos en un bus I2C deban depender de la sincronización con un reloj del sistema (sería mejor detectar dos umbrales discretos en SCL), pero el hecho es que algunos dispositivos funcionan de esa manera. Tenga en cuenta que incluso si un dispositivo que se limitaba a velocidades lentas internamente quisiera coexistir con un bus rápido, probablemente tendría que emplear, como mínimo, un reloj que se alargara cada vez que ocurriera algo que pudiera interesarle.
Esto provocaría que algunas comunicaciones se produjeran más lentamente de lo que podrían, pero la degradación de la velocidad probablemente no sería tan mala como se requiere con el diseño sincronizado con el reloj (la cantidad real por la cual el dispositivo lento estira los relojes probablemente no lo haría). ser tan malo como la cantidad por la cual el reloj debe reducirse para evitar fallas en el peor de los casos en las unidades de reloj sincronizadas).