UART(범용 비동기화 송수신기 ; Universal Asynchronous Receiver/Transmitter) 는 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 방식의 일종입니다.
UART는 일반적으로 시리얼 통신(Serial Communication) 으로 더 잘알려져 있으며, UART 통신방식은 마치 사람과 대화하는 방식의 원리를 가지고 있습니다.
기본
한가지 예를 들어보자면 이런그림이 되겠습니다.
위 그림에서 느끼셨다 싶이 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 라는 통신이 있다.