주요 시리얼 통신 프로토콜 - 1. UART (Universal Asynchronous Receiver Transmitter)

2025. 2. 10. 14:13프로그래밍/시스템

1장: UART (Universal Asynchronous Receiver Transmitter)

UART는 비동기식 시리얼 통신 방식 중 하나로, 컴퓨터와 마이크로컨트롤러, 센서 등 다양한 장치 간 데이터를 주고받는 데 사용됩니다.
하드웨어 구성이 단순하고 널리 사용되지만, 속도나 연결 방식에 몇 가지 제한이 있습니다.
이번 장에서는 UART의 개념, 특징, 데이터 전송 방식, 장점과 단점, 실제 활용 사례를 자세히 알아보겠습니다.


1. UART 개념과 특징

✅ UART란?

UART (Universal Asynchronous Receiver Transmitter)는 비동기식(Asynchronous) 시리얼 통신 방식으로,
클럭 신호 없이 데이터를 한 비트씩 순차적으로 전송하는 방식을 사용합니다.

📌 UART의 핵심 특징

  • 비동기식 통신 방식 → 별도의 클럭 신호 없이 송신기와 수신기가 미리 정한 속도로 데이터를 주고받음
  • 하드웨어적으로 단순한 구성 → TX(송신)과 RX(수신) 두 개의 핀만 사용하여 통신
  • 1:1 연결 방식 → 하나의 송신 장치가 하나의 수신 장치와 직접 통신 (멀티 노드 통신 불가능)

📌 UART는 아두이노, 라즈베리파이, 블루투스 모듈, GPS 모듈, 센서 등에서 가장 널리 사용되는 통신 방식입니다.


2. 비동기식 통신 방식 (클럭 없음)

UART는 비동기식 통신(Asynchronous Communication) 방식이므로,
SPI, I2C와 달리 공유 클럭 신호(Clock)가 필요하지 않습니다.

📌 비동기식 통신의 특징

  • 송신기와 수신기가 동일한 전송 속도(Baud Rate)를 사용해야 함
  • Start Bit와 Stop Bit을 사용하여 데이터의 시작과 끝을 구분
  • 클럭 신호가 없으므로, 데이터를 보내기 전에 반드시 Baud Rate을 맞춰야 함

📌 UART 통신을 하기 위해서는 송신기(TX)와 수신기(RX)의 Baud Rate(보드레이트)이 동일해야 합니다.
📌 Baud Rate이 다르면 데이터가 정상적으로 해석되지 않습니다.


3. TX (송신), RX (수신) 핀을 이용한 단순한 하드웨어 구성

📌 UART의 하드웨어 연결 방식

  • TX (Transmit, 송신) → 데이터 전송 핀
  • RX (Receive, 수신) → 데이터 수신 핀
  • GND (Ground) → 신호 기준점 (필수)

📌 TX ↔ RX로 연결해야 한다!
💡 UART 통신을 할 때는 송신(TX)과 수신(RX) 핀을 교차 연결해야 정상적으로 동작합니다.

🛠️ 예제: 두 개의 장치를 UART로 연결하는 경우

[장치 1] TX ----> RX [장치 2]
[장치 1] RX <---- TX [장치 2]
[장치 1] GND ---- GND [장치 2]

📌 TX와 RX를 직접 연결하면 데이터가 송수신되지 않으므로 주의해야 합니다!


4. Start Bit, Data Bits, Parity Bit, Stop Bit의 데이터 프레임 구조

UART는 **데이터 전송 시 특정한 형식(데이터 프레임 구조)**을 따릅니다.
보통 "8N1" 설정이 많이 사용되며, 이는 8비트 데이터, No Parity, 1 Stop Bit을 의미합니다.

📌 UART 데이터 프레임 (8N1 예제)

Start Bit  |  Data Bits  |  Parity Bit (선택)  |  Stop Bit
---------------------------------------------------------
   1       |     8       |         0          |     1   

📌 각 구성 요소 설명

  • Start Bit (1비트)
    • 항상 0 (LOW) 값
    • 데이터가 시작됨을 알림
  • Data Bits (5~9비트, 일반적으로 8비트 사용)
    • 실제 전송되는 데이터 (예: 'A' = 01000001)
  • Parity Bit (0~1비트, 선택 사항)
    • 오류 검출을 위해 사용 (Even Parity / Odd Parity)
    • 대부분 사용하지 않음 (No Parity)
  • Stop Bit (1~2비트, 일반적으로 1비트 사용)
    • 항상 1 (HIGH) 값
    • 데이터 전송이 종료됨을 알림

📌 Start Bit → 데이터 시작, Stop Bit → 데이터 종료, 중간에 실제 데이터가 포함됨


5. UART의 장점과 단점

✅ UART의 장점

  1. 하드웨어 구성이 간단 → TX, RX 핀만 있으면 통신 가능
  2. 클럭 신호가 필요 없음 → 비동기식 방식으로 동작
  3. 적은 핀으로 장치 간 통신 가능 → 단 2개의 데이터 선 사용
  4. 널리 사용됨 → 거의 모든 마이크로컨트롤러 및 임베디드 시스템에서 지원

❌ UART의 단점

  1. 속도가 상대적으로 느림 → SPI에 비해 전송 속도가 낮음 (수십 Kbps~수 Mbps)
  2. 여러 장치 연결 어려움 → 멀티 노드 통신이 불가능 (1:1 연결만 가능)
  3. Baud Rate이 맞지 않으면 데이터 손실 발생

📌 하드웨어가 간단하고 범용성이 뛰어나지만, 다수의 장치를 연결할 수 없다는 단점이 있음.


6. UART의 사용 사례

UART는 컴퓨터와 마이크로컨트롤러 간 통신, 센서 데이터 전송, 무선 모듈 등에서 널리 사용됩니다.

🔹 PC와 마이크로컨트롤러 간 통신 (USB-UART 변환기)

  • USB to UART 변환기 (FTDI, CH340, CP2102 등)를 사용하면
    PC와 마이크로컨트롤러 간 직접 시리얼 통신이 가능합니다.
  • 아두이노(Arduino)와 라즈베리파이(Raspberry Pi)도 기본적으로 UART를 사용합니다.

🔹 블루투스 모듈 (HC-05, HC-06)

  • HC-05, HC-06 같은 블루투스 시리얼 모듈은 UART 프로토콜을 사용합니다.
  • 마이크로컨트롤러와 연결하면 무선으로 데이터 전송이 가능합니다.

🔹 GPS 모듈, 센서 데이터 전송

  • GPS 모듈은 UART를 통해 현재 좌표 데이터를 전송합니다.
  • 초음파 센서, 온도 센서 등의 데이터도 UART로 마이크로컨트롤러에 전달됩니다.

📌 UART는 컴퓨터-마이크로컨트롤러 연결, 무선 통신, 센서 데이터 전송 등에서 매우 널리 사용됩니다.


📌 요약

UART는 비동기식 통신 방식이며, 클럭 신호 없이 데이터를 송수신하는 방식
TX(송신), RX(수신) 두 개의 핀을 사용하여 간단하게 통신 가능
Start Bit, Stop Bit을 사용하여 데이터를 구분하며, Baud Rate이 맞아야 정상적으로 통신 가능
PC-마이크로컨트롤러 연결, 블루투스 모듈, GPS 모듈 등에서 널리 사용됨