직렬 통신 프로토콜 (UART·SPI·I2C)

공학
한 줄 정의: 여러 개의 전선을 한꺼번에 쓰는 병렬 통신 대신, 한두 개의 신호선만으로 데이터를 한 비트씩 순서대로 주고받아 마이크로컨트롤러와 센서·주변장치를 연결하는 직렬 통신 방식입니다.

쉽게 풀면

여러 사람이 동시에 여러 통로로 물건을 나르는 대신, 좁은 컨베이어 벨트 한 줄로 물건을 순서대로 하나씩 보낸다고 생각하면 UART·SPI·I2C 같은 직렬 통신의 개념을 이해하기 쉽습니다. UART는 송신선(TX)과 수신선(RX) 두 개만으로 정해진 속도(보율)에 맞춰 비동기적으로 데이터를 주고받는 가장 단순한 방식입니다. SPI는 클럭 신호에 맞춰 데이터를 동기적으로 주고받아 속도가 빠르고, 여러 장치를 연결할 때는 장치별로 별도의 선택선(CS)을 사용합니다. I2C는 데이터선(SDA)과 클럭선(SCL) 단 두 개의 선으로 여러 장치를 하나의 버스에 연결하고, 각 장치를 고유 주소로 구분해 통신합니다.

왜 중요한가

임베디드 시스템 논문에서는 센서, 액추에이터, 통신 모듈을 어떻게 연결했는지가 실험 재현성과 시스템 성능에 직접 영향을 미치기 때문에, 사용한 직렬 통신 프로토콜을 명시하는 경우가 많습니다. 배선 수와 속도, 확장성 사이의 트레이드오프를 이해하면 논문에서 왜 특정 프로토콜을 선택했는지 파악하는 데 도움이 됩니다.

논문에서는 이렇게 쓰입니다

"온도·습도 센서와 마이크로컨트롤러는 I2C 버스로 연결되었으며, 100kHz의 클럭 속도로 데이터를 주기적으로 수집하였다."

이 문장은 센서와 제어 칩이 두 개의 신호선만으로 연결되어, 1초에 10만 번의 클럭 신호에 맞춰 데이터를 주고받으며 측정값을 읽어왔다는 뜻입니다.

"관성측정장치(IMU)의 고속 자세 데이터를 수집하기 위해 SPI 통신을 사용하였으며, 이를 통해 낮은 지연시간으로 자세 추정 알고리즘에 값을 전달하였다."

드론이나 로봇 제어 연구에서 빠른 반응이 필요한 센서는 SPI로 연결해 데이터 지연을 최소화했다는 뜻입니다.

"GPS 모듈과 임베디드 보드 간 통신은 UART 프로토콜을 통해 이루어졌으며, 9600bps의 통신 속도로 위치 정보를 수신하였다."

비교적 느린 속도로도 충분한 위치 데이터를 주고받을 때는 배선이 단순한 UART 방식을 사용했다는 뜻입니다.

조금 더 깊게 보면

UART는 별도의 클럭선 없이 송수신 양쪽이 미리 정해둔 속도(보율)에 맞춰 데이터를 주고받는 비동기 방식이어서 두 장치의 보율 설정이 일치해야 하며, SPI와 I2C는 클럭선을 함께 사용하는 동기 방식이어서 상대적으로 안정적입니다. 여러 센서를 하나의 버스에 연결할 때는 I2C의 주소 충돌이나 SPI의 선택선(CS) 개수 제한이 실험 설계에서 실질적인 제약으로 작용하는 경우가 많아, 시스템 구성 논문에서는 이런 배선상의 한계도 함께 언급되곤 합니다.

주의할 점

세 프로토콜은 배선 수, 통신 속도, 한 버스에 연결 가능한 장치 수가 서로 다르므로, 마이크로컨트롤러와 주변장치의 사양에 맞춰 적절한 방식을 선택해야 합니다. 예를 들어 배선을 최소화하려면 I2C가, 속도가 중요하면 SPI가 유리합니다.

관련 용어