SPI, I2C, UART 통신 프로토콜 완벽 비교: 특징, 장단점, 응용 분야
마이크로컨트롤러 개발은 전자 조립 핵심 공정. 시리얼 프로토콜과 통신 인터페이스가 이 작업을 돕습니다. SPI, I2C, UART 시리얼 통신 프로토콜을 심층 탐구합니다. 특징, 장단점, 예제까지 철저히 분석.
1. UART 인터페이스
UART란?
그림 1: 아두이노 UART 프로토콜
UART(Universal Asynchronous Reception and Transmission) = 범용 비동기 송수신. 호스트-보조 기기 간 시리얼 통신 프로토콜. 시리얼 데이터 전송 주목적. 비동기 통신, 양방향 전송 지원.
두 데이터 라인: Tx(송신), Rx(수신). 보통 디지털 핀 0=송신, 핀 1=수신. 컴퓨터-외부 시리얼 장치 동기화 관리 지원.
작동 원리
그림 2: DIY 전자 USB UART 보드
두 기기 간 신호 통신 관리 3가지 모드:
- 심플렉스(Simplex): 단방향 전송
- 하프 듀플렉스(Half Duplex): 양방향이나 비동시
- 풀 듀플렉스(Full Duplex): 양방향 동시 전송
연결 후 송신 UART 데이터 라인 → 수신 UART 데이터 전송. 원리:
- 송신 UART: 마스터 장치 병렬 데이터 → 직렬 변환 → 수신 UART 전송. 수신 UART: 직렬 → 병렬 변환 → 수신 장치 사용
- 비동기 통신 → 클록 없음. 시작/정지 비트 생성으로 메시지 시작/끝 표시
- 두 UART 동일 보드레이트(Baud Rate) 필수. 10% 초과 차이 시 데이터 무용
UART 작동 프로토콜
데이터 송수신
- 송신 UART: 데이터 버스(예: CPU)에서 데이터 수신
- 시작 비트, 패리티 비트, 정지 비트 3개 추가 → 데이터 패킷 구성 → TX 핀으로 수신 UART 전송
- 송신 UART 데이터 소진 시 전송 중단
인터럽트 제어
자동 버퍼 콘텐츠 전송용. 시나리오:
- FIFO 오버플로 에러, 라인 브레이크 에러, 프레임 에러, 패리티 에러 발생 시
- 데이터 수신/송신 중, 수신 타임아웃 시
FIFO 동작
그림 3. 아두이노 UART 인터페이스
스텔라리스(Stellaris) 패밀리 UART 모듈: 수신/송신용 16바이트 FIFO 각 1개. 다양한 깊이(1/8, 1/4, 1/2 등) 구성 가능 → 다른 인터럽트 전달.
송신 FIFO 프로세스: 데이터 입력 후 전송 시작(시간 소요) → 지속 입력 → FIFO 가득 차면 입력 중단(새 데이터 손실 방지) → 비트 단위 전송 → 빈 슬롯 생성.
수신 FIFO 프로세스: 수신 데이터 하드웨어 저장. 수신 FIFO 프로그램 자동 수신/삭제 → 충분한 공간 확보. 트랜시버 FIFO로 CPU 비효율/빈번한 UART 인터럽트 해결. 데이터 손실 경로 사전 차단으로 무손실.
루프백 (Loopback)
내부 루프백으로 디버깅/진단. RX 입력이 송신 데이터 수신.
직렬 적외선 프로토콜 (Serial Infrared Protocol)
UART 내 IrDA SIR 인코더/디코더 모듈. 하프 듀플렉스 직렬 SIR 인터페이스 ↔ 비동기 UART 데이터 스트림 변환. 디코딩 입력, 디지털 코딩 출력 UART 전달.
UART 장점
- 잘 문서화된 단순 프로토콜, 사용 쉬움
- 시리얼 클록 라인 불필요
- 패리티 비트로 에러 체크 가능
UART 단점
- 데이터 프레임 크기 9비트 제한, 전송 속도 느림
- 다중 마스터/슬레이브 시스템 불가
- 보드레이트 10% 이내 강제 (데이터 손실 방지)
- 기기 간 데이터 전송 속도 일반적으로 느림
마이크로컨트롤러 UART 예제
- UART Seeeduino V4.2
- USB to UART 5V
- Base Shield V2
- USB CP2102 시리얼 컨버터
2. I2C 인터페이스
I2C란?
그림 4: I2C 사용하는 차압 센서
I2C(Inter-Integrated Circuit) = 집적회로 간 통신. UART와 유사하지만 PC-장치 통신용 UART와 달리 센서/모듈 애플리케이션용. 양방향 2선식 동기 시리얼 버스. 공유 버스+어드레스 시스템으로 다중 기기 연결 시 통신 경로 타협 없음. 대가: SPI 대비 상대적 저속. 속도는 외부 노이즈, 와이어 품질, 데이터 속도 의존. 저속 기기(EEPROM, ADC/DAC, MCU) 연결용 2선 인터페이스.
작동 원리
두 라인: SDA(시리얼 데이터 라인), SCL(시리얼 클록 라인). SCL=전송 동기화, SDA=데이터 비트 송수신 라인.
전송 중 마스터 장치 버스 데이터 전송 개시 + 클록 생성 → 전송 장치 오픈. 대상 장치 = 슬레이브. 마스터-슬레이브 간 데이터 전송률 고정 아님. 전송 시점 데이터 전송 방향에 따라 관계 결정. 마스터는 슬레이브 선택 장치에 송신/수신 전 알림 필수. I2C 전원 풀업 저항 연결 필수.
I2C 작동 프로토콜
그림 5: 0.96인치 OLED 128x64 I2C 디스플레이 모듈
데이터 전송 방식
- 마스터 출력: SDA 하이→로우, SCL 하이→로우 전환으로 전송 신호 전송
- 마스터: 7비트 또는 10비트 주소 + 읽기/쓰기 비트 각 슬레이브 전송
- 슬레이브: 주소 비교. 일치 → ACK 비트 반환(SDA 로우). 불일치 → SDA 하이 유지
- 마스터: 데이터 프레임 송수신(매칭 주소 기준). 전송 완료 후 수신 측 ACK 비트 반환 → 완전 전송 확인
- 마스터: SCL 하이→SDA 하이 전환으로 통신 종료 알림
클록 동기화
모든 마스터: SCL 라인 자체 클록 신호 생성. I2C 전송 중 클록 하이 기간에만 데이터 유효.
전송 모드
빠른 모드 (Fast Mode)
400kbit/s 송수신. 글리치 억제, 출력 슬로프 제어 기능.
고속 모드 (High-Speed Mode)
3.4Mbit/s 비트레이트. 빠른 모드보다 고속.
I2C 장점
- 다수 기기 연결해도 핀/신호 수 최소화
- 멀티 마스터/멀티 슬레이브로 유연성 확보
- 양방향 2선만으로 다수 기기 연결 간편
- 폭넓은 적응성, 다중 마스터 지원
I2C 단점
- 상대적 저속, 풀업 저항 필수(SPI는 푸시풀만 필요). 오픈 드레인 설계로 속도 제한
- 저항이 공간 차지(PCB 조립에서 중요)
- 다수 기기 연결 시 사용 복잡
마이크로컨트롤러 I2C 예제
- 라즈베리파이 4채널 16비트 ADC
- I2C 허브 (6포트) - 그로브
- I2C 드라이버/어댑터
- I2C 아두이노
3. SPI 인터페이스
SPI란?
그림 6: 디스플레이 모듈에 유용한 SPI 인터페이스
SPI(Serial Peripheral Interface) = 직렬 주변장치 인터페이스. 마이크로컨트롤러용. 풀 듀플렉스 동작 → 동시 송수신. I2C보다 빠름, 최소 8비트 전송률. 단순 프로토콜로 고속 데이터 레이트 구현 → 디스플레이 모듈, SD 카드 등 속도 중요 앱에 필수. 온도계 등 급격한 정보 변경 앱에도 중요.
작동 원리
그림 7: SD 카드 SPI 활용
두 가지 동작 방식:
- 칩 셀렉트(Chip Select) 라인으로 장치 선택. 각 장치별 고유 칩 셀렉트 라인 필요
- 데이지 체인(Daisy Chaining) 방식
하드웨어 셀렉트 라인 수만큼 장치 연결 가능. 포인트투포인트 통신 시 어드레싱 불필요.
SPI 작동 프로토콜
4개 포트:
- MOSI (Master Out Slave In)
- MISO (Master In Slave Out)
- SCLK (클록 신호)
- NSS (Slave Enable Signal)
멀티 슬레이브 시스템: 각 슬레이브별 고유 인에이블 신호 필요 → I2C 대비 하드웨어 요구사항 복잡. SPI: 2개 시프트 레지스터 → 단일 마스터(CPU 등)→주변장치 동기식 직렬 데이터 전송.
SPI 장점
- I2C와 달리 복잡한 슬레이브 어드레싱 시스템 없음 → 사용 간편
- 다룬 시리얼 인터페이스 중 최고 속도 (UART, I2C보다 빠름)
- 시작/정지 비트 없음(UART와 달리) → 중단 없는 연속 데이터 전송
- 별도 MISO/MOSI 라인으로 동시 송수신
SPI 단점
- 핀 포트 다수 점유 → 연결 가능 기기 수 제한
- 플로우 제어 미규정, I2C와 달리 ACK 메커니즘 없음
- 4선 필요(UART와 달리 에러 체크 메커니즘 없음)
- 싱글 마스터만 지원
마이크로컨트롤러 SPI 예제
- SPI Seeeduino V4.2
- SPI 드라이버/어댑터 - SPI 장치 쉽게 드라이빙
UART, I2C, SPI 비교
최고의 통신 주변장치는? UART vs SPI vs I2C
세 프로토콜 중 절대적 우위 없음. 각자 핵심 장단점 보유. 프로젝트에 맞는 최적 프로토콜 선택. 예: 속도 우선 → SPI. 복잡한 어레이 없이 다수 기기 연결 → I2C.
결론
UART, I2C, SPI 통신 인터페이스와 전송률 핵심 인사이트 모두 공개. 통신 프로토콜 관련 문의 언제든 환영. 즉시 도움 드리겠습니다.