임베디드

UART (Universal Asynchronous Receiver/Transmitter) 통신의 이해

embeddedworld 2025. 3. 13. 13:01


임베디드 시스템에서 MCU와 주변 장치 간의 데이터를 주고받는 방식은 여러 가지가 있다. 그중에서 UART (Universal Asynchronous Receiver/Transmitter) 는 가장 기본적이고 널리 사용되는 비동기 직렬 통신 방식이다. 이번 글에서는 UART의 개념, 동작 방식, 프로토콜 구조, 그리고 실제 활용 사례를 살펴보자.



1. UART란 무엇인가?


UART는 비동기식 직렬 통신 방식으로, 별도의 클럭 신호 없이 송신 장치와 수신 장치가 서로 동일한 전송 속도(baud rate) 로 데이터를 주고받는 방식이다.

UART의 특징
• 클럭 신호 없이(비동기식) 데이터 전송
• 2개의 신호선(TX, RX)만 사용
• 1:1 연결 방식 (일반적으로 다중 장치 연결 불가능)
• 풀 듀플렉스(Full-Duplex) 통신 가능
• 비트 단위의 패리티 체크로 오류 검출 지원 가능

UART는 별도의 동기 클럭이 필요하지 않기 때문에 하드웨어 구성이 단순하며, 임베디드 시스템에서 디버깅, 센서 데이터 송수신, 장치 간 인터페이스 등 다양한 용도로 활용된다.



2. UART의 동작 방식


UART는 비동기 방식(Asynchronous) 으로 동작하며, 송신 장치와 수신 장치는 사전에 동일한 전송 속도(baud rate) 를 설정해야 한다.

기본 신호선 (2선)
1. TX (Transmit) - 송신 핀
• 데이터를 전송하는 역할
2. RX (Receive) - 수신 핀
• 데이터를 수신하는 역할

일반적으로 두 개의 장치는 TX ↔ RX, RX ↔ TX로 크로스 연결되어야 한다.



3. UART 통신 프로토콜 구조


UART는 데이터 패킷을 특정한 형식으로 전송하며, 기본적인 프레임 구조는 다음과 같다.

| Start Bit | Data Bits (5~9 bits) | Parity Bit (Optional) | Stop Bit (1~2 bits) |

1) 시작 비트 (Start Bit)
• 데이터 전송의 시작을 알리는 신호
• 기본적으로 Low(0) 로 설정됨

2) 데이터 비트 (Data Bits)
• 전송할 실제 데이터 (5~9비트 설정 가능, 일반적으로 8비트)
• LSB(Least Significant Bit)부터 전송됨

3) 패리티 비트 (Parity Bit, 선택 사항)
• 데이터 전송 중 오류를 검출하는 용도로 사용
• 짝수 패리티(Even Parity) 또는 홀수 패리티(Odd Parity) 설정 가능

4) 정지 비트 (Stop Bit)
• 데이터 전송이 끝났음을 알리는 신호
• 1비트 또는 2비트 사용 가능

이러한 프레임 구조를 통해 UART는 최소한의 신호선으로 데이터를 안정적으로 주고받을 수 있다.



4. 전송 속도 (Baud Rate)


UART에서는 송신기와 수신기가 동일한 전송 속도(baud rate) 를 설정해야 한다.

일반적인 Baud Rate 값:
• 9600 bps (가장 널리 사용됨)
• 19200 bps
• 38400 bps
• 57600 bps
• 115200 bps (고속 통신)

Baud Rate가 높을수록 데이터 전송 속도가 빨라지지만, 신호 왜곡이 발생할 가능성도 증가한다.



5. UART의 장점과 단점


장점

하드웨어 구성이 단순 (클럭 신호 불필요)
소프트웨어 구현이 용이
낮은 전력 소비 (저전력 임베디드 시스템에 적합)
풀 듀플렉스(Full-Duplex) 통신 가능

단점

1:1 연결만 가능 (다중 장치 연결이 어려움)
송신기와 수신기의 Baud Rate가 반드시 일치해야 함
데이터 전송 속도가 SPI보다 느림



6. UART와 다른 직렬 통신 방식 비교


UART는 단순한 1:1 통신에 적합하며, 하드웨어 설계가 간단하지만, 다중 장치 통신을 지원하지 않는다는 점이 한계다.



7. UART의 실제 활용 사례


UART는 하드웨어가 간단하면서도 신뢰성이 높은 통신 방식이기 때문에 다양한 임베디드 시스템에서 사용된다.

1) 임베디드 디버깅 및 로그 출력
• 마이크로컨트롤러의 디버깅 및 로그 데이터를 PC 터미널로 출력할 때 사용
• 예: 아두이노, STM32, 라즈베리파이의 Serial Monitor

2) GPS 모듈과의 통신
• GPS 모듈(NMEA 프로토콜 사용)에서 좌표 데이터를 수신하는 데 사용

3) 블루투스 및 Wi-Fi 모듈
• ESP8266, HC-05 등의 통신 모듈과 MCU 간 연결

4) 로봇 및 모터 제어
• 로봇 컨트롤러와 센서 간 데이터 교환

5) 산업용 장비 및 IoT 디바이스
• 시리얼 컨트롤러 기반의 다양한 산업용 장비와 IoT 디바이스에서 사용



8. 결론


UART는 하드웨어 구성이 간단하고, 풀 듀플렉스를 지원하며, 광범위한 임베디드 시스템에서 사용되는 직렬 통신 방식이다.

하지만 1:1 통신만 가능하고, 다중 장치를 연결하기 어렵다는 점은 단점으로 작용할 수 있다. 따라서, 다중 슬레이브 통신이 필요하면 I²C나 SPI를 고려해야 한다.

UART는 디버깅, 센서 인터페이스, 무선 모듈 통신 등 다양한 분야에서 여전히 필수적인 기술이며, 올바르게 활용하면 효율적인 시스템 설계를 할 수 있다.