O design do barramento I2C é tal que -
- quando ocorre uma borda descendente no SCL, isso pode fazer com que um dispositivo escravo afirme imediatamente o SDA, sem nenhum atraso mínimo específico;
- a ordenação relativa das arestas ascendentes e descendentes é de importância crítica.
Por causa da diferença na força do driver e na capacitância da linha, seria teoricamente possível que um dispositivo pudesse responder a uma queda lenta no SCL, dirigindo o SDA tão rápido que outro dispositivo veria o SDA cair primeiro.
Pode ter sido possível definir vários limites lógicos no SCL e especificar que, para que uma borda em queda no SCL seja considerada após uma borda na SDA, ainda deve estar acima de 2/3 VDD quando a borda na SDA for detectada, mas um dispositivo não pode declarar SDA em resposta a uma margem decrescente no SCL até cair abaixo de 1/3 do VDD, mas as especificações não estão escritas nesses termos.
Em vez disso, os dispositivos que vêem bordas descendentes quase simultâneas no SDA e no SCL geralmente consideram que o edge no SCL aconteceu primeiro, a menos que seja substancialmente precedido pelo edge no SDA. Algumas implementações de I2C lidam com isso sincronizando o SCL e o SDA com algum relógio externo e exigindo que uma borda decrescente do SDA seja observada dois períodos antes do SCL para que seja considerado o primeiro. Se a velocidade das operações no SCL e SDA for muito rápida em relação ao relógio de sincronização, os dispositivos poderão perceber sequências arbitrárias de sinais altos e baixos no SCL e SDA; se uma dessas seqüências parecer endereçar o dispositivo lento, ela poderá reagir de acordo, esmagando qualquer outra comunicação que possa estar acontecendo.
Não há nenhuma razão específica para que os dispositivos em um barramento I2C precisem confiar na sincronização com um relógio do sistema (ser capaz de detectar dois limites discretos no SCL seria melhor), mas o fato é que alguns dispositivos funcionam dessa maneira. Observe que, mesmo que um dispositivo limitado a baixas velocidades internamente quisesse coexistir com um barramento rápido, provavelmente teria que empregar no mínimo um relógio que esticasse a qualquer momento em que algo estivesse acontecendo no qual pudesse estar interessado.
Isso faria com que algumas comunicações ocorressem mais lentamente do que poderiam, mas a degradação da velocidade provavelmente não seria tão ruim quanto é necessária no design sincronizado com relógio (a quantidade real pela qual o dispositivo lento estica os relógios provavelmente não seja tão ruim quanto a quantidade pela qual o relógio deve ser mais lento para evitar falhas nos piores cenários das unidades de relógio sincronizadas).