개요
UART (Universal Asynchronous Receiver/Transmitter) 와 USART (Universal Synchronous/Asynchronous Receiver/Transmitter) 는 마이크로컨트롤러 간 직렬 통신을 위한 대표적인 프로토콜입니다.
둘은 하드웨어 모듈 수준에서 거의 동일하며, 핵심 차이점은 동기(Synchronous) 통신 가능 여부에 있습니다.
| UART | 비동기 통신 전용 |
| USART | 동기 및 비동기 통신 모두 지원 |
즉, USART는 UART의 확장형이며, UART와의 하위 호환성을 유지하면서도 동기 통신 기능을 추가로 제공하는 모듈입니다.
기본 구조
| TX (Transmit) | 데이터 송신 |
| RX (Receive) | 데이터 수신 |
| (Optional) CLK | 동기 통신용 클럭 신호 (USART에서 사용 가능) |
일반적인 UART는 TX/RX만 사용하고, USART에서 동기 모드를 사용할 경우 클럭(CLK) 라인이 추가됩니다.
UART / USART 동작 방식 (비동기 모드)
UART 또는 USART의 비동기 모드에서는 별도의 클럭 없이 데이터를 전송합니다. 데이터 전송은 다음과 같은 구조를 따릅니다:
- Start Bit: 항상 LOW (0)로 통신 시작을 알림
- Data Bits: 일반적으로 8비트 (최소 5비트 ~ 최대 9비트)
- Parity Bit: 오류 검출을 위한 비트 (선택적)
- Stop Bit: 항상 HIGH (1), 1비트 또는 2비트 사용
수신자는 정해진 Baud Rate(보레이트) 에 따라 시점을 맞춰 각 비트를 읽습니다.
따라서 보레이트가 송수신 측 모두 일치해야 통신이 정확히 동작합니다.
USART의 동기 통신 (Synchronous)
USART의 동기 모드에서는 송신 측이 클럭 신호(CLK) 도 함께 제공하여, 수신 측이 정확한 타이밍에 데이터를 읽을 수 있도록 합니다.
이 방식은 다음과 같은 특징을 가집니다:
- 전송 속도가 빠르고 안정적
- 긴 거리 전송에 적합
- TX, RX 외에 추가로 CLK 라인이 필요
실제로는 UART 비동기 방식이 더 많이 사용되지만, 고속/노이즈 민감 환경에서는 USART의 동기 방식이 유리합니다.
장점
- 구조가 간단하고 구현이 쉬움
- UART는 별도 클럭 없이 통신 가능 → 배선이 간단함
- 대부분의 MCU (Arduino, STM32 등)에 기본 내장
- USART는 동기/비동기 선택 가능 → 유연한 활용
단점
- UART는 기본적으로 1:1 통신만 가능
- 버스 공유 불가 → I2C/SPI처럼 다중 장치 통신 어려움
- 전송 거리 및 신호 노이즈에 취약 (수 m 이상은 권장 안 함)
- 보레이트가 불일치하면 통신 오류 발생
사용 예시
| HC-05 Bluetooth 모듈 | UART 기반 무선 통신 |
| ESP8266 Wi-Fi 모듈 | UART로 MCU와 연결 |
| GPS 모듈 | UART로 실시간 위치 정보 전송 |
| STM32 USART | 여러 보레이트/동기 모드 지원 |
| USB-to-Serial 변환기 | PC ↔ Arduino 간 통신 (USB → UART) |
마무리
UART와 USART는 임베디드 시스템에서 가장 핵심적인 직렬 통신 방식입니다.
UART는 단순한 구조로 빠르게 구현할 수 있고, USART는 확장성 있는 고속 통신까지 지원하여 다양한 하드웨어 간 연결에 매우 유용합니다.
프로젝트 설계 시에는 통신 대상, 보레이트, 거리, 신뢰성 요구사항을 고려하여 UART/USART를 적절히 선택하는 것이 중요합니다.
'통신 프로토콜' 카테고리의 다른 글
| PWM (Pulse Width Modulation) 제어 (0) | 2025.05.02 |
|---|---|
| SPI (Serial Peripheral Interface) 통신 (0) | 2025.05.02 |
| I2C (Inter-Integrated Circuit) 통신 (0) | 2025.05.02 |