2025. 2. 10. 14:22ㆍ프로그래밍/시스템
3장: I2C (Inter-Integrated Circuit) & 프로토콜 비교
I2C(Inter-Integrated Circuit)는 마이크로컨트롤러(MCU)와 여러 주변 장치를 연결하는 데 널리 사용되는 동기식 시리얼 통신 프로토콜입니다.
SPI와 달리 2개의 데이터 선만 사용하면서도 여러 개의 장치를 연결할 수 있는 특징이 있으며, 멀티 마스터(Multi-Master) 기능을 지원합니다.
이번 장에서는 I2C의 개념과 특징, 데이터 전송 방식, 장점과 단점, 주요 사용 사례, 그리고 SPI 및 UART와의 비교를 자세히 살펴보겠습니다.
1. I2C 개념과 특징
✅ I2C란?
I2C(Inter-Integrated Circuit)는 동기식(Synchronous) 시리얼 통신 방식으로,
단 2개의 데이터 선(SDA, SCL)만으로 여러 개의 장치를 연결할 수 있는 프로토콜입니다.
📌 I2C의 핵심 특징
- 동기식(Synchronous) 통신 → 클럭 신호(SCL)를 사용하여 데이터 전송
- 단 2개의 데이터 선(SDA, SCL)으로 다중 장치 연결 가능
- 주소(Address) 기반 통신 → 각 장치는 고유한 주소를 가짐
- 멀티 마스터(Multi-Master) 지원 → 여러 개의 마스터가 존재할 수 있음
📌 I2C는 센서, EEPROM, RTC(Real-Time Clock) 등 여러 장치를 동시에 연결해야 할 때 유용합니다.
2. 동기식 통신 방식 (클럭 필요)
I2C는 동기식(Synchronous) 통신 방식으로,
클럭 신호(SCL)를 기반으로 데이터를 주고받기 때문에 마스터와 슬레이브가 정확한 타이밍에 맞춰 동작합니다.
📌 I2C의 기본 원리
- 마스터(Master) → 클럭(SCL) 신호를 생성하고, 데이터를 전송
- 슬레이브(Slave) → 마스터의 클럭에 맞춰 데이터를 송수신
📌 I2C는 SPI와 마찬가지로 클럭을 공유하지만, 단 2개의 선만으로 여러 개의 장치를 연결할 수 있다는 점에서 차이가 있음.
3. 단 2개의 선(SDA, SCL)으로 여러 장치 연결 가능 (멀티 마스터 지원)
✅ I2C에서 사용하는 핀
핀 이름 | 역할 |
SDA (Serial Data Line) | 데이터 송수신 (Master ↔ Slave) |
SCL (Serial Clock Line) | 클럭 신호 (Master → Slave) |
📌 I2C는 SPI보다 적은 핀을 사용하면서도 여러 개의 장치를 연결할 수 있음.
📌 여러 개의 마스터(Multi-Master)도 지원 가능하며, 우선권(Arbitration) 메커니즘을 통해 충돌을 방지함.
4. 주소(Address) 기반 통신
I2C는 각 장치(슬레이브)마다 고유한 주소(7비트 또는 10비트)를 할당하여 통신합니다.
📌 I2C의 데이터 전송 흐름
- 마스터가 슬레이브 주소를 전송 → 어떤 장치와 통신할 것인지 지정
- 해당 주소를 가진 슬레이브가 응답 → 데이터 송수신 시작
- 데이터 전송 후 Stop 신호로 통신 종료
📌 각 장치에는 고유한 주소가 있으며, 같은 SDA/SCL 선을 공유하더라도 주소를 기반으로 개별적으로 통신 가능!
5. I2C의 장점과 단점
✅ I2C의 장점
- 배선이 단순 → SPI보다 적은 핀 사용 (SDA, SCL 2개만 필요)
- 여러 개의 장치를 동시에 연결 가능 → 하나의 버스에 여러 개의 슬레이브 장치 연결 가능
- 멀티 마스터 지원 가능 → 여러 마스터가 같은 버스에서 통신할 수 있음
❌ I2C의 단점
- SPI보다 속도가 느림 → 보통 수백 Kbps ~ 몇 Mbps 수준
- 풀 이중(Full-Duplex) 통신 불가능 → Half-Duplex 방식 (데이터 송수신이 번갈아 이루어짐)
- 신호 충돌(Arbitration) 문제 발생 가능 → 여러 마스터가 동시에 송신할 경우 충돌 가능
📌 I2C는 확장성이 뛰어나지만, SPI보다 속도가 느리고 신호 충돌(Arbitration) 문제가 발생할 수 있음.
6. I2C의 사용 사례
🔹 온도 센서, 가속도 센서, EEPROM 메모리
- DHT11, BMP280, MPU6050 등의 센서는 I2C를 통해 데이터를 전송
- EEPROM(비휘발성 메모리) 저장 장치도 I2C 인터페이스로 마이크로컨트롤러와 연결
📌 센서와 메모리 장치는 비교적 저속 데이터 전송이므로 I2C를 많이 사용함.
🔹 마이크로컨트롤러와 센서 간 통신
- 아두이노(Arduino), 라즈베리파이(Raspberry Pi) 등의 마이크로컨트롤러는 I2C를 통해 여러 개의 센서를 동시에 제어 가능
- I2C를 지원하는 LCD 디스플레이, 터치패드, 조이스틱 등의 입력 장치와도 쉽게 연결 가능
📌 I2C는 센서와 마이크로컨트롤러 간 다중 연결이 필요한 경우 적합!
7. UART, SPI, I2C 비교
특징 | UART | SPI | I2C |
통신 방식 | 비동기식 | 동기식 | 동기식 |
클럭 필요 여부 | ❌ (없음) | ✅ (필요) | ✅ (필요) |
배선 수 | 2개 (TX, RX) | 4개 이상 (MOSI, MISO, SCLK, SS) | 2개 (SDA, SCL) |
속도 | 보통 (수백 Kbps ~ 수 Mbps) | 매우 빠름 (수십 ~ 수백 MHz) | 느림 (수백 Kbps ~ 수 Mbps) |
멀티마스터 지원 | ❌ (불가능) | ❌ (거의 없음) | ✅ (가능) |
장치 연결 수 | 1:1 | 1:다수 (SS 개수만큼) | 1:다수 (주소 기반) |
사용 사례 | PC-마이크로컨트롤러, 블루투스 모듈 | LCD, SD 카드, 플래시 메모리 | 센서, EEPROM, RTC |
📌 속도가 빠른 경우 → SPI 사용
📌 하드웨어가 단순하고 장치가 여러 개 필요할 경우 → I2C 사용
📌 단순한 1:1 통신 → UART 사용
8. 언제 어떤 프로토콜을 사용해야 하는가?
사용 사례 | UART | SPI | I2C |
고속 데이터 전송 | ❌ | ✅ | ❌ |
센서 데이터 전송 | ✅ | ✅ | ✅ |
마이크로컨트롤러 간 통신 | ✅ | ✅ | ✅ |
저장 장치 연결 (SD 카드, EEPROM) | ❌ | ✅ | ✅ |
여러 개의 장치 연결 | ❌ | ❌ | ✅ |
📌 속도가 중요하면 SPI, 여러 개의 장치를 연결하려면 I2C, 간단한 1:1 통신이면 UART를 사용!
📌 요약
✅ I2C는 동기식 시리얼 통신 방식으로, 클럭 신호를 사용하여 데이터를 송수신
✅ SDA, SCL 두 개의 핀만으로 여러 개의 장치를 연결할 수 있음
✅ 주소 기반 통신을 지원하며, 멀티 마스터(Multi-Master) 기능도 가능
✅ 센서, EEPROM, RTC 등의 장치를 연결할 때 많이 사용됨
✅ 속도는 SPI보다 느리지만, 여러 장치를 연결하는 경우 적합
'프로그래밍 > 시스템' 카테고리의 다른 글
시리얼 통신 인터페이스 - 2. RS-485 개요 및 RS-232와의 차이점 (0) | 2025.02.10 |
---|---|
시리얼 통신 인터페이스 - 1. RS-232 개요 및 특징 (0) | 2025.02.10 |
주요 시리얼 통신 프로토콜 - 2. SPI (Serial Peripheral Interface) (0) | 2025.02.10 |
주요 시리얼 통신 프로토콜 - 1. UART (Universal Asynchronous Receiver Transmitter) (0) | 2025.02.10 |
시리얼 통신의 기본 개념 - 3. 동기식 vs 비동기식 통신 (0) | 2025.02.10 |