UART (Universal Asynchronous Receiver/Transmitter)

agnusdei·2025년 2월 9일
0

Network

목록 보기
238/419

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) 간의 직렬 데이터 변환 및 전송을 담당하는 역할을 합니다.

세부 역할

  1. 송신 시(Tx)

    • CPU 또는 MCU에서 전달받은 병렬 데이터를 직렬 데이터로 변환
    • 데이터를 프레임(Frame) 형식으로 변환 후 전송
    • 송신 속도(Baud Rate)에 맞춰 데이터를 전송
  2. 수신 시(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 BitData BitsParity 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)

  1. CPU에서 데이터를 UART 모듈로 전송 (병렬 데이터)
  2. UART가 데이터를 직렬 데이터로 변환
  3. Start Bit(0)를 전송
  4. Data Bits(5~9비트)를 전송
  5. (선택적) Parity Bit 전송
  6. Stop Bit(1)를 전송
  7. 송신 완료

(2) 수신 과정 (Reception)

  1. RX 핀을 통해 데이터 수신
  2. Start Bit 감지 후 데이터 수신 시작
  3. 데이터 수신 후 Parity Bit 검증 (선택적)
  4. Stop Bit 확인 후 데이터 처리
  5. 병렬 데이터로 변환 후 CPU에 전달

7. 종류 (Types)

  1. RS-232

    • 가장 오래된 UART 표준
    • 최대 15m 전송 가능
    • ±12V 신호 사용 (전압 레벨이 높음)
  2. RS-485

    • 다중 장치(Multi-Drop) 통신 가능
    • 1200m 이상의 장거리 전송 지원
    • 노이즈에 강한 차동 신호 사용
  3. 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, 디버깅 용도로 많이 활용된다.

0개의 댓글