느린 슬레이브가 "잠깐만" 이라고 말하는 유일한 방법이다.
마스터가 클럭을 만들려는데
슬레이브가 SCL 을 LOW 로 붙잡고 있으면 → 마스터는 기다린다
슬레이브가 놓아야 클럭이 올라가고 다음 비트로 간다
오픈드레인이라 아무나 끌어내릴 수 있다는 성질을 그대로 활용한 설계다.
어디서 쓰이나
- 센서가 변환을 끝내야 값을 줄 수 있을 때
- EEPROM 이 내부 쓰기를 진행 중일 때
- 슬레이브가 MCU 소프트웨어로 구현돼 준비가 느릴 때
문제가 되는 지점
마스터가 스트레칭을 지원하지 않으면 통신이 깨진다. 일부 하드웨어 I²C 컨트롤러나 비트뱅잉 구현이 이 대기를 처리하지 않는다.
또 슬레이브가 오류로 SCL 을 놓지 않으면 버스가 영구히 멈춘다. 그래서 타임아웃을 두고, 넘으면 복구 절차로 들어가는 것이 안전하다.