I²C 통신은 동기식 직렬 통신으로 SCL 과 SDA 두 선만으로 다수의 슬레이브를 연결할 수 있는 구조다. 풀업 저항이 두 라인에 필수로 필요하고 Open-drain 방식으로 동작하여 버스 상에 마스터가 하나 또는 다수, 슬레이브도 다수 존재할 수 있다. 각 슬레이브는 고유한 7비트 또는 10비트 주소를 가지며, 통신 속도는 마스터가 SCL을 제어하고 버스의 충돌 여부를 감지하는 arbitration 기능이 내장되어 다중 마스터 운영이 가능하다. 기본 속도는 표준모드 100kHz, 패스트모드 400kHz, 패스트모드 플러스 1MHz, 하이스피드모드 3.4MHz까지 지원한다.
데이터 프레임의 기본 흐름은 Start 조건으로 시작되며( SDA가 SCL HIGH일 때 LOW로 떨어짐), 이어서 주소와 R/W 비트를 전송하고 슬레이브의 ACK 신호를 받는다. 그다음 데이터가 8비트 단위로 전송되며 매번 ACK/NACK을 확인하고 Stop 조건으로 종료된다. 이러한 구조로 마스터가 클럭을 제공하고 동기화를 주도하며, 버스 상의 충돌은 arbitration 로 해결된다. 통신은 SCL 클럭에 의한 데이터 전송이므로 시계 동기화가 유지되고, 다수의 슬레이브를 한 버스에 공유하여 주소 기반으로 통신이 가능하다.
I²C 통신의 가장 큰 장점은 선 개수의 최소화로 데이터와 클럭의 2선만으로 연결이 가능하다는 점이다. 다수의 장치를 간단하고 저전력으로 연결할 수 있으며 하드웨어 요구사항이 낮아 MCU에 별도의 다수 핀이 필요 없고 저전력 통신이 가능하다. Open-drain 구조와 풀업 저항 덕분에 충돌 감지가 가능하고, 멀티마스터 운영이 가능하며 표준/패스트/하이스피드의 다양한 속도를 지원해 여러 응용에 적합하다.
반면 거리나 속도 측면에서 한계가 있으며 수 미터를 넘는 버스 길이에서는 신호 왜곡이 증가하고 고속 요구 시스템에는 부적합하다. 버스 부하가 커질수록 신호 품질이 저하될 위험이 커지고, 풀업 저항의 선택은 반드시 고려되어야 한다. 다수의 슬레이브가 연결될수록 주소 관리와 설계 복잡도가 증가하고, 마스터가 항상 클럭을 제공해야 하는 의존성도 있다. 요약하면 I²C는 동기식 직렬 통신으로 두 선만으로 다수의 슬레이브를 연결할 수 있는 구조이지만, 거리와 속도에는 제약이 있어 용도에 맞춘 설계가 필요하다.
원문 링크 : I²C 통신, I2C 통신