-
임베디드 시스템을 설계하다 보면, 다양한 디바이스들과 MCU 간에 데이터를 주고받아야 하는 상황이 반드시 발생합니다.
센서, 메모리, 액정, 통신 모듈 등은 각기 다른 통신 방식을 사용하는데, 이 중에서도 가장 많이 쓰이는 것이 SPI, I2C, UART입니다.
그리고 최근에는 I2C의 단점을 보완한 I3C라는 신형 인터페이스도 점차 확산되고 있습니다.
각 방식마다 구조와 목적이 다르기 때문에, 어떤 상황에 어떤 통신을 선택하느냐에 따라 시스템의 성능과 안정성이 크게 달라질 수 있습니다.이 글에서는 SPI, I2C, UART, 그리고 최신 인터페이스인 I3C까지 포함하여, 각 통신 방식의 원리, 장단점, 실전 활용 포인트를 비교 정리해보겠습니다.
UART – 가장 기본적인 직렬 통신 방식
UART(Universal Asynchronous Receiver Transmitter)는 가장 기본적인 비동기 직렬 통신 방식입니다.
TX와 RX 두 선만 사용하며, 클럭 없이 데이터를 주고받습니다. 양측의 보드레이트(baud rate)가 일치해야 정확한 통신이 가능합니다.
구성이 간단하고 거의 모든 MCU가 지원하며, 디버깅 포트, GPS, 블루투스 모듈 등에서 광범위하게 활용됩니다.
단, 멀티 디바이스 통신에는 적합하지 않으며, 통신 안정성은 환경에 따라 다소 떨어질 수 있습니다.I2C – 마스터-슬레이브 기반의 양방향 통신
I2C(Inter-Integrated Circuit)는 SDA(데이터)와 SCL(클럭) 두 선만으로 여러 장치를 연결할 수 있는 동기식 통신 방식입니다.
하나의 마스터가 여러 슬레이브를 제어하며, 각 슬레이브는 고유 주소를 가집니다.
다수의 센서를 간단히 연결할 수 있고, 저속이지만 배선이 간단해 센서 네트워크, RTC, EEPROM 등에 많이 사용됩니다.
단, Pull-up 저항이 반드시 필요하고, 신호 선이 늘어날수록 속도 저하와 노이즈 취약성이 생깁니다.SPI – 빠르고 안정적인 고속 통신 방식
SPI(Serial Peripheral Interface)는 4개의 라인(SCLK, MOSI, MISO, SS)을 사용하는 동기식 고속 통신 방식입니다.
마스터와 슬레이브 간에 데이터를 양방향으로 빠르게 주고받을 수 있으며,
디스플레이, 외장 메모리, 고속 ADC/DAC 등 빠른 반응이 필요한 디바이스에 적합합니다.
속도는 I2C보다 훨씬 빠르지만, 배선 수가 많아지고 다수의 슬레이브 제어가 복잡해진다는 단점이 있습니다.I3C – I2C의 업그레이드 버전
I3C(Improved Inter Integrated Circuit)는 I2C를 대체하기 위해 개발된 차세대 인터페이스입니다.
물리적으로는 SDA와 SCL 두 선만 사용하지만, 내부 프로토콜은 훨씬 강력하며, I2C 호환성을 유지하면서도 최대 12.5Mbps 이상의 속도를 지원합니다.
또한 동적 주소 설정, in-band interrupt, 핫조인(Hot-Join) 등 고급 기능이 포함되어 있어 센서 허브, 웨어러블, 모바일 SoC 등 최신 기기에서 채택이 늘고 있습니다.
현재는 주로 고급 MCU나 FPGA에서 사용되고 있으며, 앞으로는 더 보편화될 가능성이 높은 프로토콜입니다.속도 및 구조 비교
항목 UART I2C SPI I3C 방식 비동기 동기 동기 동기 라인 수 2 (TX, RX) 2 (SDA, SCL) 4 이상 2 (SDA, SCL) 최대 속도 ~1Mbps ~3.4Mbps ~50Mbps 12.5Mbps 이상 장치 수 1:1 1:N 1:N (SS 필요) 1:N (동적 주소) 대표 용도 디버깅, GPS 센서, 메모리 고속 디바이스 센서 허브, 모바일 SoC 실무 선택 가이드 – 언제 어떤 걸 써야 하나요?
- UART: 디버깅용, 통신 모듈, 단일 장치와 간단한 통신이 필요할 때
- I2C: 저속이지만 많은 장치를 연결할 때 (예: 다수의 센서 연결)
- SPI: 속도가 중요하고 통신 신뢰성이 높은 디바이스 제어 시
- I3C: 고속, 고기능 센서를 다루는 최신 시스템 (예: 스마트폰, AI 디바이스 등)
실전에서 흔히 발생하는 실수
- UART에서 보드레이트가 서로 달라 통신 실패
- I2C에서 Pull-up 저항 미사용 또는 주소 충돌
- SPI에서 SS 라인 공유 오류로 슬레이브 동시 응답
- I3C 사용 시 호스트와 디바이스의 프로토콜 호환성 부족
실수는 사소해 보여도, 전체 시스템의 동작에 심각한 영향을 줄 수 있으므로, 설계 단계부터 프로토콜별 특성을 명확히 이해하고 적용해야 합니다.
서로 다른 통신 방식을 하나의 시스템에서 혼용할 수 있을까요?
실제로 많은 임베디드 시스템에서는 여러 통신 방식을 혼용해서 사용하는 것이 일반적입니다.
예를 들어, UART는 디버깅 콘솔로 활용하고, I2C로 여러 개의 온도/습도 센서를 제어하며, SPI로 고속 디스플레이를 구동하는 식입니다.
최근에는 I3C까지 도입되어 I2C 기반 센서들을 점차 대체하는 경우도 늘고 있습니다. 중요한 점은 버스 간 간섭을 피하도록 회로를 분리하거나, MCU 내부에서 각 인터페이스를 독립적으로 설정해주는 것입니다.
또한 인터럽트 처리나 DMA 연동 여부, 버퍼 관리 등을 고려해 통신 간 우선순위를 명확히 설계해주면, 여러 인터페이스를 안정적으로 동시에 운영할 수 있습니다.최신 트렌드까지 고려한 통신 설계가 중요합니다
임베디드 시스템에서의 통신 방식 선택은 단순한 선의 연결 문제가 아니라, 시스템 전체 성능과 구조에 영향을 미치는 전략적 결정입니다.
SPI, I2C, UART 같은 전통적인 방식은 여전히 유효하지만, I3C처럼 최신 기술이 적용된 프로토콜도 점차 실무에서 요구되고 있습니다.
각 통신 방식의 특징을 체계적으로 익혀두면, 설계 시 시행착오를 줄일 수 있을 뿐 아니라, 미래의 기술 변화에도 유연하게 대응할 수 있습니다.'Engineering' 카테고리의 다른 글
반도체 초보자를 위한 전기 회로 기초 – Ohm의 법칙부터 (0) 2025.04.25 전압 강하를 막는 방법 – Power Path 설계 팁 (0) 2025.04.25 반도체 실무에 도움되는 공부법 (비전공자 포함) (0) 2025.04.25 엔지니어가 말하는 반도체 개발 실수 모음 (0) 2025.04.24 Pull-up / Pull-down 저항의 실전 사용법 (0) 2025.04.24 FET의 방향과 바이어스 – 왜 동작하지 않을까요? (0) 2025.04.23 로직 IC의 종류 – Inverter, Buffer, AND/NAND 등 (0) 2025.04.23 EMI 필터와 페라이트 비드 – 노이즈 저감의 핵심 (0) 2025.04.23