UART (Universal Asynchronous Receiver/Transmitter)
1. 개념 (Concept)
UART(Universal Asynchronous Receiver/Transmitter)는 직렬(Serial) 통신을 수행하는 하드웨어 프로토콜로, 클럭 신호 없이 비동기(Asynchronous) 방식으로 데이터를 송수신하는 역할을 합니다. 마이크로컨트롤러(MCU), 컴퓨터, 임베디드 시스템 등의 장치 간 저속의 데이터 통신을 위해 사용됩니다.
2. 등장배경 & 목적 (Background & Purpose)
UART는 초창기 컴퓨터와 주변 장치(프린터, 모뎀 등) 간 통신을 위해 개발되었습니다.
초기에는 병렬(Parallel) 통신 방식이 주로 사용되었으나, 다음과 같은 이유로 직렬(Serial) 통신이 선호되었습니다.
-
병렬 통신의 단점
- 다수의 데이터 라인을 사용해야 하므로 배선이 복잡함
- 신호 간 간섭(Interference)이 발생할 가능성이 높음
- 신호가 동시에 도착하지 않는 스큐(Skew) 문제가 있음
-
직렬 통신(UART)의 장점
- 배선이 단순하여 비용 절감 가능
- 장거리(수 m ~ 수십 m) 전송 가능
- 데이터의 순차적 전송으로 동기화(Synchronization) 문제 최소화
UART는 저속, 중거리 통신에 적합한 비동기 방식의 직렬 통신을 목표로 설계되었습니다.
3. 역할 (Role)
UART는 송신기(Transmitter)와 수신기(Receiver) 간의 직렬 데이터 변환 및 전송을 담당하는 역할을 합니다.
세부 역할
-
송신 시(Tx)
- CPU 또는 MCU에서 전달받은 병렬 데이터를 직렬 데이터로 변환
- 데이터를 프레임(Frame) 형식으로 변환 후 전송
- 송신 속도(Baud Rate)에 맞춰 데이터를 전송
-
수신 시(Rx)
- 직렬 데이터를 수신하고 병렬 데이터로 변환
- 프레임 구조에 맞춰 데이터 검증(Parity Check, Stop Bit 확인)
- 에러가 없으면 CPU 또는 MCU로 데이터 전달
4. 활용 계층 또는 범위 (Usage Scope)
UART는 다음과 같은 분야에서 활용됩니다.
1) 임베디드 시스템 (Embedded Systems)
- 마이크로컨트롤러(MCU)와 센서, 모듈 간 통신 (예: 아두이노 & GPS 모듈)
- 개발용 디버깅 (Serial Monitor 사용)
2) 컴퓨터와 주변 장치 연결
- PC ↔ 마우스, 키보드(구형 PS/2 장치)
- PC ↔ 프린터, 모뎀 (RS-232 사용)
3) 산업용 자동화 및 IoT (Internet of Things)
- 센서 데이터 수집 및 전송 (UART to Bluetooth, ZigBee 모듈)
- 원격 제어 (MCU ↔ 무선 모듈)
4) 네트워크 장비 & 통신 모듈
- 네트워크 라우터, 스위치 등에서 디버깅 인터페이스로 활용
- LoRa, ZigBee, Wi-Fi 모듈과 MCU 간 통신
5. 구성요소 (Components)
UART는 하드웨어와 소프트웨어 두 가지 구성 요소로 이루어져 있습니다.
1) 하드웨어 구성 (Hardware Components)
- TX (Transmit) 핀 → 데이터를 송신하는 핀
- RX (Receive) 핀 → 데이터를 수신하는 핀
- GND (Ground) 핀 → 신호 기준 전압(0V)
- Baud Rate Generator → 송신 속도를 결정하는 내부 클럭 발생기
- Shift Register → 병렬 데이터를 직렬 데이터로 변환
2) 데이터 프레임 구조 (Data Frame Structure)
UART는 데이터를 다음과 같은 프레임 구조(Frame Structure) 로 전송합니다.
Start Bit | Data Bits | Parity Bit (Optional) | Stop Bits |
---|
1비트 (0) | 5~9비트 | 0 or 1비트 | 1 or 2비트 |
- Start Bit: 데이터 전송 시작을 알리는 신호 (Low, 0)
- Data Bits: 5~9비트의 실제 데이터
- Parity Bit(선택적): 데이터 오류 검출용
- Stop Bits: 데이터 전송 완료를 알리는 신호 (High, 1)
3) 소프트웨어 설정 (Software Configuration)
UART 통신을 사용하려면 다음 설정이 필요합니다.
- Baud Rate (전송 속도): 송·수신 장치 간 일치해야 함 (예: 9600, 115200 bps)
- Data Bits (데이터 길이): 5~9비트 설정
- Parity (패리티 비트): 오류 검출 (None, Even, Odd)
- Stop Bits (정지 비트): 1 or 2비트 설정
6. 시간순 작동 순서 (Operation Flow)
(1) 송신 과정 (Transmission)
- CPU에서 데이터를 UART 모듈로 전송 (병렬 데이터)
- UART가 데이터를 직렬 데이터로 변환
- Start Bit(0)를 전송
- Data Bits(5~9비트)를 전송
- (선택적) Parity Bit 전송
- Stop Bit(1)를 전송
- 송신 완료
(2) 수신 과정 (Reception)
- RX 핀을 통해 데이터 수신
- Start Bit 감지 후 데이터 수신 시작
- 데이터 수신 후 Parity Bit 검증 (선택적)
- Stop Bit 확인 후 데이터 처리
- 병렬 데이터로 변환 후 CPU에 전달
7. 종류 (Types)
-
RS-232
- 가장 오래된 UART 표준
- 최대 15m 전송 가능
- ±12V 신호 사용 (전압 레벨이 높음)
-
RS-485
- 다중 장치(Multi-Drop) 통신 가능
- 1200m 이상의 장거리 전송 지원
- 노이즈에 강한 차동 신호 사용
-
RS-422
- RS-485와 유사하지만, 단방향(One-Way) 통신만 가능
- 10Mbps의 높은 속도 지원
8. 장단점 (Pros & Cons)
✅ 장점 (Advantages)
- 하드웨어적으로 간단하여 구현 용이
- 클럭 신호 없이 동작 (비동기 방식)
- 상대적으로 저전력 설계 가능
- 짧은 거리(수십 m 이내)에서 안정적 동작
❌ 단점 (Disadvantages)
- 속도가 비교적 낮음 (수 Mbps 수준)
- 다중 장치 통신 불가능 (RS-485 제외)
- 오류 검출 기능이 단순함 (CRC 없음)
9. 전망 & 개선점 (Future & Improvements)
- UART는 여전히 MCU 기반 임베디드 시스템, IoT 기기에서 중요한 역할을 담당
- 기존 UART보다 고속(High-Speed) UART 개발 필요
- 다중 장치 통신을 지원하는 개선된 프로토콜 (예: SPI, I2C, CAN)이 더 널리 사용될 전망
- 하지만 단순한 점과 저전력 특성 때문에 UART는 계속 활용될 것으로 예상
📌 쉽게 요약
UART는 직렬 통신 방식 중 하나로, 클럭 없이 데이터를 주고받는 비동기 통신 기술이다.
송·수신 속도(Baud Rate)만 맞추면 쉽게 사용 가능하며, MCU, IoT, 디버깅 용도로 많이 활용된다.