I2C(Inter-Integrated Circuit) 프로토콜은 마이크로컨트롤러와 주변 기기 간의 통신을 위한 직렬 통신 방식입니다. 이 프로토콜은 두 개의 신호선만으로 데이터를 송수신할 수 있어 간단하고 효율적인 통신을 제공합니다. 이 문서에서는 I2C의 작동 원리, 구성, 주요 특징 및 활용 사례를 자세히 설명합니다.
1. I2C 프로토콜이란?
1.1 정의
I2C는 NXP 반도체(구 Philips Semiconductor)에서 개발한 직렬 통신 프로토콜로, 여러 장치 간 데이터를 주고받기 위해 설계되었습니다.
- I2C는 "Inter-Integrated Circuit"의 약자로, 서로 다른 집적 회로(IC) 간의 통신을 의미합니다.
- 마스터-슬레이브 구조를 기반으로 동작하며, 주로 센서, 메모리, 액추에이터 등의 저속 주변 장치와의 통신에 사용됩니다.
1.2 역사
I2C는 1982년 필립스에 의해 처음 개발되었으며, 이후 반도체 산업에서 표준 통신 프로토콜로 자리 잡았습니다.
2. I2C의 주요 특징
2.1 간단한 하드웨어 구성
I2C는 단 두 개의 신호선(SDA와 SCL)으로 통신이 이루어집니다.
- SDA (Serial Data): 데이터 송수신 선.
- SCL (Serial Clock): 클록 신호 선.
2.2 다중 장치 연결 가능
- 하나의 마스터와 여러 슬레이브 간 통신이 가능합니다.
- 동일 버스에 여러 장치를 연결해도 슬레이브 주소를 통해 충돌 없이 통신할 수 있습니다.
2.3 동기식 통신
I2C는 동기식 통신 방식으로, 클록 신호(SCL)를 기준으로 데이터를 송수신합니다.
2.4 양방향 통신
I2C는 풀 이중 방식(양방향)으로 데이터를 주고받을 수 있습니다.
3. I2C의 작동 원리
I2C는 마스터가 클록 신호를 제어하며, 슬레이브는 마스터의 지시에 따라 데이터를 송수신합니다.
3.1 마스터-슬레이브 구조
- 마스터(Master): 클록 신호(SCL)를 생성하고 통신을 시작합니다.
- 슬레이브(Slave): 마스터로부터 명령을 받고 데이터를 송수신합니다.
3.2 주소 기반 통신
I2C는 7비트 또는 10비트 주소 체계를 사용하여 특정 슬레이브를 식별합니다.
- 마스터는 슬레이브 주소를 통해 원하는 장치와 통신합니다.
4. I2C 통신의 구조와 구성 요소
4.1 신호 라인
- SDA (Serial Data): 데이터를 직렬로 송수신하는 선입니다.
- SCL (Serial Clock): 통신을 동기화하기 위한 클록 신호를 제공합니다.
4.2 풀업 저항
I2C 신호 라인은 풀업 저항을 사용하여 기본적으로 High 상태를 유지합니다.
- 데이터 송수신 시 장치가 Low 상태로 라인을 제어합니다.
4.3 데이터 프레임
I2C는 데이터를 프레임 단위로 전송합니다.
- 시작 비트(Start Bit)
- 슬레이브 주소
- 읽기/쓰기 비트
- 데이터 비트
- 종료 비트(Stop Bit)
5. I2C 프로토콜의 데이터 전송 과정
5.1 통신 시작
- 마스터가 SDA를 Low로 설정하여 통신 시작 신호를 보냅니다.
- SCL은 이 시점에서 High 상태를 유지합니다.
5.2 슬레이브 주소 전송
- 마스터는 7비트 또는 10비트 슬레이브 주소를 전송합니다.
- 슬레이브는 자신의 주소와 일치하는 경우 응답(ACK)을 보냅니다.
5.3 데이터 송수신
- 마스터는 데이터 프레임을 전송합니다.
- 슬레이브는 데이터를 수신하고 ACK 또는 NACK 신호로 응답합니다.
5.4 통신 종료
마스터가 SDA를 High로 설정하며 통신을 종료합니다.
6. I2C의 장단점
6.1 장점
- 간단한 배선: 두 개의 신호선만으로 통신 가능.
- 다중 장치 연결: 여러 장치를 동일한 버스에 연결 가능.
- 저전력: 적은 전류 소모로 효율적.
- 표준화: 대부분의 마이크로컨트롤러에서 지원.
6.2 단점
- 전송 속도 제한: 최대 3.4Mbps로 고속 통신에는 한계.
- 버스 충돌 위험: 동일한 주소를 가진 장치가 있을 경우 충돌 발생 가능.
- 짧은 거리 제한: 노이즈 문제로 인해 짧은 거리에서만 신뢰성 높은 통신 가능.
7. I2C의 활용 사례
7.1 센서와의 통신
- 온도 센서: LM75, DS18B20 등.
- 가속도 센서: MPU6050, ADXL345 등.
7.2 메모리 장치
- EEPROM: 데이터 저장용.
- RTC(Real-Time Clock): 시간 정보 관리용.
7.3 디스플레이
- LCD 디스플레이: I2C 컨트롤러를 통해 간단히 제어.
7.4 가전제품
- I2C는 스마트 TV, 세탁기 등 가전제품에서도 사용됩니다.
8. I2C와 다른 통신 프로토콜의 비교
| 특징 | I2C | SPI | UART |
|---|---|---|---|
| 신호선 수 | 2개 (SDA, SCL) | 4개 (MOSI, MISO, SCK, SS) | 2개 (TX, RX) |
| 전송 속도 | 최대 3.4Mbps | 최대 50Mbps | 최대 1Mbps |
| 다중 장치 | 가능 (주소 기반) | 가능 (SS 핀 필요) | 불가능 |
| 거리 | 짧음 | 짧음 | 비교적 길음 |
| 복잡성 | 중간 | 낮음 | 낮음 |
결론
I2C 프로토콜은 간단한 배선과 다중 장치 연결 기능으로 다양한 임베디드 시스템에서 널리 사용됩니다. 저속 주변 기기와의 통신에 적합하며, 센서, 메모리, 디스플레이 등 많은 분야에서 유용하게 활용됩니다. I2C를 올바르게 이해하고 활용하면 효율적이고 안정적인 통신 시스템을 설계할 수 있습니다.
