UART 통신

Today Jeeho Learned·2025년 6월 9일
1

임베디드

목록 보기
4/4
post-thumbnail

INTRO

실무를 경험하면서 가장 많이 쓰이는 통신은 UART 통신이다. 기존에 대강, 대충알고 있던 것들을 조금 더 체계적으로 정리가 필요하다고 생각이 되어서 정리하려고 한다. SW적인 구현만 해봤었는데, 거기에서 HW 적인 구성도 알 필요가 있다고 생각되어서 함께 정리해보고자 한다.

UART란

UART(범용 비동기화 송수신기: Universal asynchronous receiver/transmitter)는
병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종이다.
통신 데이터는 메모리나 레지스터에 들어 있어서 이것을 차례대로 읽어 직렬화 하여 통신한다.
최대 8비트(1byte)가 기본 단위이다.

통신에서 직렬이란 채널의 구조를 말한다.
여러개의 채널을 통해 동시에 데이터를 보내는 것이 병렬통신이고, 하나의 채널을 통해서 일련의 규칙대로 데이터를 순서대로 보내는 것이 직렬통신이다.

UART는 Start bit (GND , 0)으로 시작하고, 그 뒤 8개의 Data bit , 그리고 Stop bit (VCC , 1)로 끝난다. 따라서 한번에 10개의 bit를 전송하고 받는게 일반적이다.
구조는 아래와 같다.

단 여기에서 패리티비트라는 오류를 검증하기 위한 값이 들어가게 되면, 1비트가 추가되어 11bit를 전송하게 된다.

동작방식


UART 통신은 전이중 방식으로 송신과 수신을 동시에 할 수 있으며, TX < > RX 가 서로 붙으면서 데이터를 송신하고 수신하게 된다.

UART는 비동기식 통신방법으로 RX와 TX 각각의 clock 신호를 사용한다.

Bit 구성

  • Start Bit: 전송 데이터 패킷의 시작 부분을 알린다. 이 신호를 통해 RX에서 데이터 수신을 시작한다
  • Data Bits: Start Bit와 Stop Bit 사이에 존재한다. 최대 9bit까지 데이터 통신이 가능하다.
  • Parity Bit: 선택적으로 사용 가능한 Bit로, 대표적으로 Odd Parity(홀수 패리티)와 Even Parity(짝수 패리티)를 사용한다. 
    • Odd Parity: 데이터 비트의 총합이 홀수일 경우 오류가 없는 것으로 판단한다.
    • Even Parity: 데이터 비트의 총합이 짝수일 경우 오류가 없는 것으로 판단한다.
  • Stop Bit: 전송 데이터 패킷의 끝을 정의한다. 1bit 또는 2bit를 사용하며, 1bit 사용시에는 논리값1, 2bit 사용시에는 논리값 0, 1을 순서대로 사용한다.

통신 순서

  1. UART TX와 RX가 데이터가 전송되지 않을때에는 신호가 1로 유지된다. 데이터가 전송되기 위해서 Start Bit가 논리값으로 0으로 변하면서 통신의 시작을 알 수 있다.
  2. UART TX가 0으로 변한 값을 감지하면서 미리 정해진 BaudRate를 따라서 데이터 프레임 비트를 읽기 시작한다. 데이터 프레임 비트의 크기도 미리 약속하여 통신한다.

정리

  • UARTS는 비동기 직렬통신방법이다.
  • 통신중이 클락을 사용하지 않고, 각각의 내부의 클락(오실레이터)을 사용하기때문에, 통신속도를 스스로 계산하고 유지할 수 있다.
profile
기록해야 (살아)남는다 !

2개의 댓글

comment-user-thumbnail
2025년 6월 9일

저희 사장님도 하드웨어를 먼저 이해하라고 거듭 강조하시더라구요...

1개의 답글