UART, I²C, SPI의 특징과 비교를 살펴보면 먼저 각 통신의 구조와 용도가 뚜렷하게 구분된다. UART는 비동기 직렬 통신으로 TX/RX 두 선으로 동작하며, 흐름 제어를 위한 RTS/CTS도 선택적으로 사용된다. 1:1 1대1 구도의 간단한 연결에 적합하고 구현이 간단하며 CPU 자원 소모가 적다. 다만 1:1 통신만 가능하고 속도는 느리며 클럭 의존도가 낮아 데이터 동기화를 위해 Start/Stop 비트가 필요하다. 확장성은 낮아 멀티디바이스 연결에는 한계가 있다.
I²C는 SCL과 SDA 두 선으로 다수의 슬레이브를 연결하는 산업 표준으로, 버스 구조의 효율성과 하드웨어 단순성이 큰 장점이다. 슬레이브 주소를 통해 대상 식별이 가능하고 멀티마스터도 지원하며 Arbitration 기능이 내장되어 충돌 관리가 가능하다. 하지만 비교적 느린 통신 속도와 버스 전기적 부하 증가, Open-Drain과 풀업 저항의 주의가 필요하다는 단점이 있다. 슬레이브가 많아질수록 지연과 부하가 커지는 점도 고려해야 한다.
SPI는 SCLK, MOSI, MISO, SS/CS의 4선으로 구성되는 동기식 직렬 통신이다. 풀 듀플렉스가 가능하고 가장 빠른 속도를 제공하며, 지연 없이 바로 데이터 전송이 가능하고 충돌이 없다는 점이 큰 강점이다. 다만 멀티마스터 구조는 일반적으로 지원되지 않으며, 슬레이브 수가 늘어나면 CS 핀 수 증가로 배선이 복잡해진다. 또한 SCLK/MOSI/MISO 라인의 길이에 따른 signal integrity 문제도 주의해야 한다.
종합하면 속도 우선 환경에는 SPI가 적합하고, 다수의 주변 기기 연결이 필요하며 비용과 회로 단순성이 중요한 경우 I²C가 유리하다. 반면 간단한 1:1 통신과 낮은 CPU 자원 소모를 우선한다면 UART가 적합하다. 결론적으로 UART는 단일 마스터-슬레이브 구조에, I²C는 저속 다수 슬레이브 환경에, SPI는 고속 메모리나 디스플레이 등 고속 요구가 있는 구성에 적합하다고 정리된다.
원문 링크 : UART, I²C, SPI