UART

UARTUniversal Asynchronous Receiver/Transmitter(범용 비동기 송수신기)의 약자로, 컴퓨터나 마이크로컨트롤러와 같은 디지털 장치들이 다른 장치들과 직렬로 데이터를 주고받을 수 있도록 하는 하드웨어 모듈 또는 통신 프로토콜을 의미한다. 주로 근거리에서 중거리의 장치 간 비동기 직렬 통신에 사용되며, 병렬 데이터를 직렬 데이터로 변환하여 전송하고, 수신된 직렬 데이터를 다시 병렬 데이터로 변환하는 역할을 수행한다.

개요

UART는 클록(Clock) 신호를 공유하지 않고 데이터 프레임 내의 시작 비트(Start Bit)와 정지 비트(Stop Bit)를 사용하여 송수신 간의 동기화를 맞추는 비동기(asynchronous) 방식으로 작동한다. 이는 별도의 클록 라인이 필요 없어 배선이 간단하다는 장점이 있지만, 송신자와 수신자가 미리 정해진 통신 속도(보율, Baud Rate)에 동의해야만 정상적인 통신이 가능하다.

UART는 주로 마이크로컨트롤러, 임베디드 시스템, 모뎀, GPS 모듈, 블루투스 모듈 등 다양한 전자 장치에서 통신 인터페이스로 폭넓게 사용된다.

작동 방식

UART는 데이터를 프레임(Frame) 단위로 전송하며, 각 프레임은 다음과 같은 구성 요소를 포함한다.

  • 유휴 상태 (Idle State): 데이터 전송이 없는 평소 상태를 나타내며, 보통 고전압(High) 상태를 유지한다.
  • 시작 비트 (Start Bit): 데이터 전송의 시작을 알리는 신호로, 항상 하나의 저전압(Low) 비트로 시작한다. 수신기는 이 비트를 감지하여 데이터 수신을 시작한다.
  • 데이터 비트 (Data Bits): 실제 전송될 데이터를 포함하는 비트들이다. 일반적으로 5비트에서 9비트까지 설정할 수 있으며, 8비트가 가장 흔하게 사용된다. 최하위 비트(LSB)부터 전송되는 것이 일반적이다.
  • 패리티 비트 (Parity Bit, 선택 사항): 데이터 전송 중 발생할 수 있는 오류를 검출하기 위해 사용되는 선택적 비트이다. 데이터 비트의 '1'의 개수를 짝수 또는 홀수로 맞추어 전송함으로써 수신 측에서 오류 여부를 확인할 수 있다. 짝수 패리티(Even Parity)와 홀수 패리티(Odd Parity)가 있다.
  • 정지 비트 (Stop Bit): 데이터 전송의 끝을 알리는 신호로, 항상 고전압(High) 비트이다. 보통 1비트 또는 2비트를 사용하며, 경우에 따라 1.5비트를 사용하기도 한다.

송신 UART는 CPU에서 병렬로 받은 데이터를 직렬 데이터 프레임으로 변환하여 Tx(Transmit) 라인을 통해 전송하고, 수신 UART는 Rx(Receive) 라인을 통해 들어오는 직렬 데이터 프레임을 병렬 데이터로 변환하여 CPU로 전달한다. 이때 송수신 UART는 동일한 보율, 데이터 비트 수, 패리티 설정, 정지 비트 수를 사용해야 한다.

주요 특징

  • 비동기 통신: 클록 신호 없이 시작/정지 비트를 사용하여 동기화한다.
  • 전이중 통신 (Full-Duplex): 송신(Tx) 라인과 수신(Rx) 라인이 분리되어 있어 동시에 양방향 통신이 가능하다.
  • 단순한 하드웨어: SPI나 I2C와 같은 다른 직렬 통신 방식에 비해 필요한 배선(주로 Tx, Rx, GND)이 적어 하드웨어 구현이 비교적 간단하다.
  • 유연한 설정: 데이터 비트 수, 패리티 비트 사용 여부 및 종류, 정지 비트 수 등 통신 파라미터를 다양하게 설정할 수 있다.
  • 보율 설정: 통신 속도를 나타내는 보율을 다양하게 설정할 수 있으며, 양측 장치가 같은 보율로 설정되어야 한다. 일반적인 보율로는 9600, 19200, 115200 bps 등이 있다.
  • 흐름 제어 (Flow Control): 일부 UART는 RTS(Request To Send), CTS(Clear To Send)와 같은 하드웨어 흐름 제어 신호를 지원하여 데이터의 과부하를 방지한다.

응용 분야

  • 마이크로컨트롤러 통신: 임베디드 시스템에서 마이크로컨트롤러가 PC, 센서, 다른 마이크로컨트롤러, GPS 모듈, 블루투스 모듈 등과 통신하는 데 널리 사용된다.
  • 디버깅 및 콘솔 인터페이스: 임베디드 장치나 라우터, 스위치 등에서 PC와 연결하여 디버깅 메시지를 출력하거나 명령어를 입력받는 콘솔 인터페이스로 활용된다.
  • 모뎀 통신: 초기 모뎀과 컴퓨터 간의 통신에 사용되었으며, 여전히 일부 통신 장비에서 기본적인 인터페이스로 활용된다.
  • 산업용 통신: RS-232, RS-485와 같은 물리적 계층 표준과 결합하여 산업 자동화 시스템에서 장치 간 통신에 사용된다.
  • USB-to-Serial 변환: USB 포트만 있는 최신 컴퓨터에서 UART 기반의 레거시 장치와 통신하기 위해 USB-to-Serial 변환기가 사용된다.

관련 기술

  • RS-232, RS-485: 이들은 UART가 구현하는 직렬 통신 프로토콜의 물리적 계층 표준이다. UART는 디지털 신호 레벨로 작동하지만, RS-232는 더 넓은 전압 범위와 특정 커넥터(예: DB9)를 사용하여 장거리 통신과 노이즈 내성을 제공하며, RS-485는 차동 신호 방식을 통해 더욱 장거리 및 다중 장치 통신을 지원한다.
  • SPI (Serial Peripheral Interface): 클록 동기식 직렬 통신 프로토콜로, UART보다 빠른 속도를 제공하며, 마스터-슬레이브 구조로 여러 주변 장치와 통신할 수 있다.
  • I2C (Inter-Integrated Circuit): 역시 클록 동기식 직렬 통신 프로토콜로, 두 개의 라인(SDA, SCL)으로 여러 마스터 및 슬레이브 장치와 통신할 수 있다. 주로 근거리에서 저속 통신이 필요한 센서나 EEPROM 등에 사용된다.

UART는 그 단순성과 범용성으로 인해 전자 통신 분야에서 오랫동안 핵심적인 역할을 해왔으며, 오늘날에도 수많은 임베디드 시스템과 IoT 장치에서 필수적인 통신 수단으로 활용되고 있다.

둘러보기

더 찾아볼 만한 주제