임베디드 용어 사전
시리얼 통신

클럭 스트레칭

I²C 슬레이브가 클럭선을 붙잡아 마스터를 기다리게 하는 것. 처리 시간이 필요할 때 쓴다.

느린 슬레이브가 "잠깐만" 이라고 말하는 유일한 방법이다.

마스터가 클럭을 만들려는데
슬레이브가 SCL 을 LOW 로 붙잡고 있으면 → 마스터는 기다린다
슬레이브가 놓아야 클럭이 올라가고 다음 비트로 간다

오픈드레인이라 아무나 끌어내릴 수 있다는 성질을 그대로 활용한 설계다.

어디서 쓰이나

  • 센서가 변환을 끝내야 값을 줄 수 있을 때
  • EEPROM 이 내부 쓰기를 진행 중일 때
  • 슬레이브가 MCU 소프트웨어로 구현돼 준비가 느릴 때

문제가 되는 지점

마스터가 스트레칭을 지원하지 않으면 통신이 깨진다. 일부 하드웨어 I²C 컨트롤러나 비트뱅잉 구현이 이 대기를 처리하지 않는다.

또 슬레이브가 오류로 SCL 을 놓지 않으면 버스가 영구히 멈춘다. 그래서 타임아웃을 두고, 넘으면 복구 절차로 들어가는 것이 안전하다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — I²C — 선 두 개로 여럿을 다룬다