참조: Link
송신에는 clock stretching 이 있고 수신에는 Clock stretching 이 없는 이유
송신일 때는 데이터를 보내고 다음 클럭 신호를 보낸 후 잠시 응답을 기다려야 함
수신 모드일 때는 데이터를 받고 다음 클럭 신호를 받아 응답을 해줘야 함
둘의 차이점은
송신은 데이터를 보낸 후 응답을 기다리는 것이고,
수신은 데이터를 받은 후 응답을 해주는 것이다.
송신은 자신의 속도로는 끝났지만 기다려 주기 때문에 송신때만 clock stretching 이 있다.
참조: Link
I2C 통신에서 마스터 장치는 클럭 속도를 결정합니다. RS232와는 달리 I2C 버스는 마스터와 슬레이브가 사전 정의 된 baud rate와 정확하게 동기화되는 것을 완화할 수 있도록 명시적인 클럭 신호를 제공합니다.
I2C 슬레이브가 마스터가 제공하는 클럭 속도와 상호 작용할 수없고 약간 느려질 필요가있는 상황이 있습니다. 이것은 클럭 스트레칭이라고하는 메커니즘에 의해 수행됩니다.
I2C 슬레이브는 버스 속도를 줄여야하는 경우 시계를 잡고 있을 수 있습니다. 반면에 마스터는 클럭 신호를 하이 상태로 해제 한 후 클록 신호를 다시 읽고 라인이 실제로 하이가 될 때까지 기다려야합니다.
Bandwidth
클럭 스트레칭은 다소 이상하게 들리지만 일반적인 관행입니다. 그러나 공유 버스의 전체 대역폭은 상당히 줄어들 수 있습니다. 따라서 특히 여러 장치가 공유하는 I2C 버스의 경우 클록 스트레칭의 영향을 평가하는 것이 중요합니다. 가장 느린 I2C 장치가 버스 성능을 지배하지 않도록하십시오.
댓글 없음:
댓글 쓰기