임베디드 시스템에서 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는 디버깅, 센서 인터페이스, 무선 모듈 통신 등 다양한 분야에서 여전히 필수적인 기술이며, 올바르게 활용하면 효율적인 시스템 설계를 할 수 있다.
'임베디드' 카테고리의 다른 글
Flash 메모리: 대용량 비휘발성 저장 장치 (1) | 2025.03.17 |
---|---|
EEPROM: 대표적인 비휘발성 메모리 (0) | 2025.03.15 |
I²C (Inter-Integrated Circuit) 통신의 이해 (0) | 2025.03.12 |
SPI (Serial Peripheral Interface) 통신의 이해 (0) | 2025.03.11 |
Bare-metal 시스템에서 부트로더의 동작 방식 (1) | 2024.12.24 |