메뉴 닫기

UART(Universal Asynchronous Receiver/Transmitter)

UART(범용 비동기화 송수신기 ; Universal Asynchronous Receiver/Transmitter) 는 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 방식의 일종입니다.

UART는 일반적으로 시리얼 통신(Serial Communication) 으로 더 잘알려져 있으며, UART 통신방식은 마치 사람과 대화하는 방식의 원리를 가지고 있습니다.

기본

한가지 예를 들어보자면 이런그림이 되겠습니다.

TX는 송신, RX는 수신을 담당한다. 귀아이콘 : https://www.pinterest.co.kr/pin/416442296783394444/?lp=true 입 아이콘 : https://thenounproject.com/term/speaking/69742/

위 그림에서 느끼셨다 싶이 Tx(입) 은 Rx(귀) 로 통하는 형태로 되어 있습니다.

UART 연결 사양
Wire 사용유무
RX 선택사양
TX 선택사양
GND 필수

위의 표에서 알수 있듯이 통신을 하고 싶은 디바이스(장치) 끼리 TX -> RX 의 방향으로 연결만 해주면 하드웨어는 끝납니다.

이해

UART의 뜻을 알아보겠습니다.
U ; Universal [ 범용 ]
3.3V 전압을 기준으로 통신을 하는 범용통신은 UART / Serial Communication 입니다.
컴퓨터는 외부에서 주는 신호와 내부적으로 0과 1을 인식할 수 있다는 말을 많이 들어봤을겁니다.
일반적으로 전압을 기준을 3.3V ( High ; Digital 1 ) 과 0v ( Low ; Digital 0 ) 를 기준으로 인식합니다. (시스템에 따라 전압은 다를 수 있다.)
이러한 전압범위는 TTL(The Transistor Logic) 레벨 이라고 합니다.

A ; Asynchronous [ 비동기 ]
하나의 신호선으로 통신하는 시리얼 통신(Serial Communication)은 별도로 동기화할 수 있는 신호선(클럭)이 없습니다.
그렇기 때문에 RX (귀) 는 통신의 시작을 알 수 없습니다. 그럼 어떻게 하죠?
다음에 나오는 RT(송수신기)의 설명을 들어볼 필요가 있습니다.

RT ; Receiver-Transmitter [ 송수신기 ]
앞서 그림에서 봤듯이 송신기와 수신기를 전기적신호를 주어 데이터를 주고 받는다고 했습니다. 
다음사진은 UART Protocol(대화 형식) 입니다.

1. Start 로 데이터를 날려주겠다는 신호(Low) 1Bit를 전송합니다.
2. Data 를 날려줍니다. ( 일반적으로 8개를 보냅니다. )
3. Parity Bit 를 날려줍니다. ( 일반적으로 보내지 않습니다. )
4. Stop 데이터를 날려줍니다.

이렇게 8개의 비트를 전송하여 데이터를 주고 받습니다.

그렇지만 시간 단위로 비트를 확인하기 때문에  TX (입)이 주는 신호는 타이밍은 RX (귀) 는 알아야 합니다.

어떻게 알까요?
정답은 서로 통신을 하기전, 나는 얼마의 시간동안 1개의 비트를 보낼꺼야! 라고 서로 약속을 합니다.
그 약속은 어떻게 하는지 다음을 통해 알아봅니다.

실무

UART는 Baudrate 라는 이름의 속도개념이 있습니다.
Baudrate 의 값은 1200 / 2400 / 4800 / 9600 / 19200 / 38400 / 57600 / 115200 / 230400 / 460800 / 921600 등으로 사용이 됩니다.
이것은 시간개념으로 다음의 수학적인 공식에 의하여 계산이 됩니다.

”   1 / Baudrate   ”

이 계산식을 생각하면 비트당 속도(bps ; bits per second (초당 비트 수))가 나옵니다.

Baudrate 계산값(초) 1비트 속도
1200 8.333333E-04 0.833333 ms
2400 4.166667E-04 0.416667 ms
4800 2.083333E-04 0.208333 ms
9600 1.041667E-04 0.104167 ms
19200 5.208333E-05 52.20833 us
38400 2.604167E-05 26.04167 us
57600 1.736111E-05 17.36111 us
115200 8.680556E-06 8.680556 us
230400 4.340278E-06 4.340278 us
460800 2.170139E-06 2.170139 us
921600 1.085069E-06 1.085069 us

그렇다면 쉽지 않겠지만, 순수한 소프트웨어로 UART 기능이 되는 프로그램을 만들어 볼까요?

  • UART 의 Signal Connecter는 일반적으로 PCB 패턴에서 CPU 통신끼리 하기도 하나,하드웨어개발자에 의해 통신케이블을 커넥터로 돌출시켜 와이어로 연결시키기도 한다.
  • 통신거리는 5m입니다.

기타

시리얼 통신(Serial Communication) 과 유사하지만, 통신레벨과 흐름제어를 할 수 있는 RS232 라는 통신이 있다.

댓글 남기기