I2C (Inter-Integrated Circuit)와 SPI (Serial Peripheral Interface)는 마이크로컨트롤러, 센서, 메모리 등의 장치 간 통신을 위한 직렬 통신 프로토콜입니다. 각각의 특징과 차이점을 설명하겠습니다.
1. I2C (Inter-Integrated Circuit)
특징:
- 2개의 신호선 사용: SDA(데이터), SCL(클럭)
- 마스터-슬레이브 구조: 하나의 마스터가 여러 슬레이브와 통신 가능
- 주소 기반 통신: 슬레이브는 고유한 주소를 가지며, 마스터가 주소를 기반으로 데이터 전송
- 속도: 일반적으로 100kbps(표준), 400kbps(패스트), 1Mbps(고속), 3.4Mbps(울트라 패스트)
- 풀업 저항 필요: SDA와 SCL 라인에 풀업 저항이 필요함
- 반이중(half-duplex) 통신: 한 번에 한 방향으로만 데이터 전송 가능
장점:
- 배선이 단순하여 여러 개의 슬레이브를 쉽게 연결 가능
- 클럭 신호가 있어 동기식 통신이 가능
- 슬레이브가 많아도 추가적인 핀이 거의 필요하지 않음
단점:
- 속도가 상대적으로 느림
- 풀업 저항으로 인해 전력 소비 증가 가능
- 프로토콜이 복잡하여 구현이 어려울 수 있음
사용 예시:
- 센서 (온도 센서, 자이로스코프 등)
- EEPROM, RTC(실시간 시계)
2. SPI (Serial Peripheral Interface)
특징:
- 4개의 신호선 사용: MOSI(마스터 → 슬레이브), MISO(슬레이브 → 마스터), SCLK(클럭), SS(슬레이브 선택)
- 마스터-슬레이브 구조: 여러 개의 슬레이브 연결 가능 (각 슬레이브마다 SS 핀 필요)
- 속도: 일반적으로 1~100Mbps 이상 가능
- 전이중(full-duplex) 통신: 동시에 데이터를 송수신 가능
장점:
- 빠른 데이터 전송 속도
- 풀-이중 통신 지원으로 효율적인 데이터 교환 가능
- 하드웨어적으로 간단하여 구현이 쉬움
단점:
- 슬레이브마다 SS 핀이 필요하여 다중 슬레이브 연결 시 핀 수가 증가
- 클럭 신호가 없어 송수신 속도 차이에 따라 데이터 손실 가능
- 거리 제한이 있음 (일반적으로 1~2m 이내)
사용 예시:
- 고속 데이터 전송이 필요한 장치 (SD 카드, TFT 디스플레이)
- 무선 통신 모듈 (RF, Wi-Fi, Bluetooth 모듈)
- ADC/DAC(아날로그-디지털 변환기)
3. I2C vs SPI 비교
특징 | I2C | SPI |
---|
배선 | 2개 (SDA, SCL) | 4개 (MOSI, MISO, SCLK, SS) |
속도 | 최대 3.4Mbps | 최대 100Mbps 이상 |
통신 방식 | 반이중 (half-duplex) | 전이중 (full-duplex) |
마스터-슬레이브 관계 | 하나의 마스터, 여러 슬레이브 (주소 기반) | 하나의 마스터, 여러 슬레이브 (각 슬레이브별 SS 필요) |
데이터 무결성 | 클럭 신호 있음 (동기식) | 클럭 신호 없음 (비동기 가능) |
하드웨어 요구사항 | 풀업 저항 필요 | 추가적인 SS 핀 필요 |
거리 제한 | 수 미터 가능 | 짧은 거리(1~2m) |
4. 결론: 언제 I2C, 언제 SPI를 사용해야 할까?
- I2C 사용 추천:
- 센서, 메모리 등 저속 장치
- 배선이 적어야 하는 경우
- 여러 슬레이브를 제어해야 하는 경우
- SPI 사용 추천:
- 고속 데이터 전송이 필요한 경우
- 단일 또는 소수의 슬레이브 연결
- 양방향(전이중) 통신이 필요한 경우
I2C는 간단한 장치와 다수의 센서를 연결하는 데 적합하고, SPI는 빠르고 효율적인 데이터 전송이 필요한 경우에 적합합니다.