I2C 버스의 설계는 다음과 같습니다.
- SCL에서 하강 에지가 발생하면, 슬레이브 장치가 특정 최소 지연없이 SDA를 즉시 주장 할 수 있습니다.
- 상승 및 하강 에지의 상대적 순서는 매우 중요합니다.
드라이버 강도와 라인 커패시턴스의 차이로 인해 이론적으로 한 장치가 SDA를 너무 빨리 구동하여 다른 장치가 SDA가 먼저 떨어지는 것을 볼 수 있으므로 SCL에서 다소 느린 하강 에지에 응답 할 수 있습니다.
SCL에서 여러 로직 임계 값을 정의하고 SDA의 폴링 에지가 SDA의 에지 다음에 오는 것으로 간주되도록하려면 SDA의 에지가 감지 될 때 여전히 2/3 VDD보다 높아야합니다. 그러나 장치는 1/3 VDD 아래로 떨어질 때까지 SCL의 하락 에지에 대한 응답으로 SDA를 주장하지 않을 수 있지만 사양은 그러한 용어로 작성되지 않습니다.
대신, SDA 및 SCL에서 거의 동시에 떨어지는 에지를 보는 장치는 일반적으로 SDA의 에지가 실질적으로 선행하지 않는 한 SCL의 에지가 먼저 발생한 것으로 간주합니다. 일부 I2C 구현은 SCL과 SDA를 외부 클럭과 동기화하고 SDA의 하강 에지가 SCL보다 2주기 전에 먼저 관찰되어야한다고 요구함으로써이를 처리합니다. SCL 및 SDA에서의 동작 속도가 동기화 클록에 비해 너무 빠르면, 장치는 SCL 및 SDA에서 임의의 고 및 저 신호 시퀀스를 감지 할 수있다. 이러한 시퀀스 중 하나가 느린 장치를 처리하는 것처럼 보이면 그에 따라 반응하여 진행중인 다른 통신을 스쿼시 할 수 있습니다.
I2C 버스의 장치가 시스템 클록과의 동기화에 의존해야하는 특별한 이유는 없지만 (SCL에서 두 개의 개별 임계 값을 감지 할 수있는 것이 더 나을 것임) 사실 일부 장치는 실제로는 그렇게 작동합니다. 저속으로 제한된 장치가 내부적으로 고속 버스와 공존하기를 원하더라도, 관심이있을 수있는 일이있을 때마다 최소한 시계를 늘려야 할 수도 있습니다.
이로 인해 일부 통신이 다른 방식보다 느리게 발생하지만 속도 동기화 성능은 클럭 동기화 설계에서 요구하는 것만 큼 나쁘지 않을 것입니다 (느린 장치가 클럭을 늘리는 실제 양은 그렇지 않을 것입니다) 동기화 된 클럭 장치에서 최악의 시나리오 실패를 피하기 위해 클럭 속도를 늦춰야하는 양만큼 나쁩니다.