I²C(Inter-Integrated Circuit)는 필립스(Philips, 현재 NXP Semiconductors)가 개발한 양방향 반이중(Half-Duplex) 직렬 통신(Serial Communication) 방식이다.
마이크로컨트롤러(MCU)와 주변 장치(EEPROM, 센서, RTC 등) 간의 저속(Short-Distance), 저전력(Low Power) 데이터 통신을 위해 설계되었다.
특징 | 설명 |
---|---|
직렬 통신 방식(Serial Communication) | 한 번에 한 비트씩 데이터를 전송하는 방식 |
반이중(Half-Duplex) 방식 | 송신과 수신이 동시에 이루어지지 않음 |
멀티마스터(Multi-Master) 지원 | 여러 개의 마스터가 하나의 버스를 공유 가능 |
2선식(Two-Wire) 구조 | 데이터(SDA, Serial Data)와 클럭(SCL, Serial Clock)만 사용 |
풀업 저항(Pull-up Resistor) 필요 | SDA, SCL 라인은 풀업 저항을 통해 HIGH 상태 유지 |
슬레이브 주소 지정 방식(Addressing) | 7비트 또는 10비트 주소 지정 방식 사용 |
속도(Speed Mode) | 표준(100kbps), 고속(400kbps), 초고속(3.4Mbps), 울트라패스트(5Mbps) 모드 지원 |
I²C 프로토콜은 패킷(Packet) 단위로 전송된다.
구성 요소 | 설명 |
---|---|
Start Condition (S) | 마스터가 SDA를 LOW로 설정 (SCL이 HIGH일 때) |
주소 프레임(Address Frame) | 슬레이브 7비트 또는 10비트 주소 + 읽기/쓰기(R/W) 비트(1비트) |
ACK/NACK 비트(Acknowledge) | 슬레이브가 응답(Acknowledge) |
데이터 프레임(Data Frame) | 8비트 데이터 전송, 이후 ACK/NACK 응답 |
Stop Condition (P) | 마스터가 SDA를 HIGH로 설정 (SCL이 HIGH일 때) |
S | 1010000 | 0 | A | DATA | A | DATA | A | P
S
: Start Condition1010000
: 슬레이브 주소 (예: 0x50)0
: Write(쓰기) 비트 (0 = Write, 1 = Read)A
: Acknowledge (슬레이브가 응답)DATA
: 8비트 데이터P
: Stop ConditionI²C는 슬레이브를 식별하기 위해 7비트 또는 10비트 주소 지정 방식을 사용한다.
11110XX
비트를 사용하여 10비트 주소임을 표시I²C는 마스터(Master)와 슬레이브(Slave) 간의 반이중(Half-Duplex) 방식으로 동작한다.
모드 | 최대 속도 | 특징 |
---|---|---|
Standard Mode | 100kbps | 일반적인 저속 모드 |
Fast Mode | 400kbps | 고속 센서 통신 등에 사용 |
Fast Mode Plus | 1Mbps | 향상된 속도 지원 |
High-Speed Mode | 3.4Mbps | 초고속 데이터 전송 가능 |
Ultra-Fast Mode | 5Mbps | 최신 고속 응용 가능 |
✔ 2개 라인만 사용 → 간단한 배선 구조
✔ 멀티마스터 지원 → 여러 개의 마스터 사용 가능
✔ ACK/NACK 기능 → 오류 검출 가능
✔ 다양한 속도 모드 지원 → 유연한 적용 가능
✖ 낮은 전송 속도 → SPI에 비해 속도가 느림
✖ 버스 충돌 가능성 → 멀티마스터 환경에서는 충돌 방지 필요
✖ 풀업 저항 필요 → 추가적인 하드웨어 요구됨
I²C는 간단한 2선식 구조로 저전력, 저속의 직렬 통신을 지원하는 프로토콜이며, 센서, EEPROM, RTC 등의 다양한 임베디드 장치에서 널리 사용된다.
반이중(Half-Duplex) 방식으로 동작하며, 멀티마스터 지원, ACK/NACK 기능 등 다양한 특성을 가진다.
향후 I3C 등으로 발전할 가능성이 크며, 고속 저전력 통신 기술로 계속 사용될 전망이다.