I2C, SPI, UART의 차이와 선택 기준

임베디드 시스템에서 가장 먼저 만나는 세 가지 직렬 인터페이스입니다. UART는 공유 클록이 없는 단순한 점대점 연결입니다. SPI는 마스터가 칩 셀렉트 라인으로 각 장치를 선택하는 빠른 4선 버스입니다. I2C는 여러 장치가 같은 선을 공유하고 주소로 선택되는 2선 버스입니다. 선택은 대체로 속도(SPI), 핀 수(I2C), 단순함(UART) 사이의 절충입니다.

비교 항목UARTSPII2C
배선신호선 2개(TX, RX)와 그라운드신호선 3개(SCLK, MOSI, MISO)와 장치마다 칩 셀렉트(CS) 1개공유선 2개(SDA, SCL)와 그라운드, 풀업 저항 사용
클록비동기: 클록 라인이 없어 양쪽이 보레이트를 맞춰야 합니다동기: 마스터가 클록을 공급합니다동기: 마스터가 클록을 공급합니다
토폴로지두 장치 사이의 점대점마스터 1개와 슬레이브 여러 개이며, 슬레이브마다 CS 라인이 필요합니다여러 마스터와 슬레이브가 하나의 버스를 공유합니다
주소 지정없음칩 셀렉트 라인으로 장치를 선택합니다매 전송 시작 시 7비트 주소(선택적으로 10비트)를 보냅니다
대표 속도9,600~115,200 bit/s에서 수 Mbit/s까지보통 1~50 MHz이며 일부 소자는 그 이상100 kHz(표준), 400 kHz(고속), 1 MHz(고속 플러스), 3.4 MHz(초고속)
통신 방향전이중전이중반이중
오류 검사선택적 패리티 비트와 프레이밍 검사내장되어 있지 않음매 바이트 뒤에 확인 응답(ACK/NACK)
장치가 늘어날 때의 핀 수연결이 하나 늘 때마다 핀 2개 추가장치가 하나 늘 때마다 CS 핀 1개 추가추가 핀 없음
거리RS-232나 RS-485 드라이버를 쓰면 더 멀리 갈 수 있습니다짧음, 같은 기판 위짧음, 같은 기판 위
대표 용도디버그 콘솔, GPS와 블루투스 모듈, 보드 간 연결플래시 메모리, SD 카드, 디스플레이, 고속 ADC와 센서저속 센서, EEPROM, 실시간 시계, 칩 설정

수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.

상황별 선택 기준

UART
두 장치 사이에 가능한 가장 단순한 연결, 디버그 콘솔, 또는 직렬 인터페이스가 있는 모듈이 필요할 때.
SPI
속도가 필요할 때: 메모리, 디스플레이, 고속 변환기. 대가로 장치를 추가할수록 핀이 늘어납니다.
I2C
저속 장치가 많고 핀이 부족할 때: 센서, 소형 메모리, 설정 레지스터. 속도에 한계가 있고 풀업 저항이 필요합니다.

자주 묻는 질문

I2C와 SPI 중 어느 쪽이 더 빠른가요?

SPI입니다. 보통 1~50 MHz 이상으로 동작하는 반면, I2C는 일반 모드에서 100 kHz~1 MHz, 초고속 모드에서 3.4 MHz로 동작합니다.

I2C에 풀업 저항이 필요한 이유는 무엇인가요?

I2C 장치는 선을 Low로 끌어내리기만 하고 High는 놓아 주는 방식이라, 저항이 선을 High로 끌어올립니다. 덕분에 여러 장치가 2개의 선을 안전하게 공유할 수 있습니다.

UART 장치에는 클록 라인이 필요 없나요?

필요 없습니다. UART는 비동기이므로 양쪽의 보레이트를 같게 설정해야 합니다. 보레이트가 조금만 어긋나도 문자가 깨질 수 있습니다.

장치가 많을 때 SPI는 핀이 몇 개 필요한가요?

SPI는 공유하는 SCLK, MOSI, MISO 라인에 장치마다 칩 셀렉트 핀이 하나씩 필요하므로 장치 수에 따라 핀 수가 늘어납니다. I2C는 장치 수와 관계없이 핀 2개면 됩니다.

주요 용어 설명

UART
クロックの線を使わず、送る側と受ける側が同じボーレートに合わせて通信する非同期式のシリアル通信の回路。スタートビットとストップビットで文字を区切る。
SPI
マスタが出すクロックに合わせて送受信を同時に行う同期式のシリアル通信。チップセレクトの線で相手を選び、高速な部品の接続に使う。
I2C
クロック(SCL)とデータ(SDA)の2本の線に複数の機器をつなぎ、アドレスで相手を選ぶ同期式のシリアル通信。線はオープンドレインでプルアップする。
GPIO
汎用入出力(General Purpose Input/Output)の端子。ソフトウェアで入力にも出力にも設定でき、スイッチの読み取りやLEDの点灯などに使う。

관련 비교