본문 바로가기

MCU 제어/개념

UART 통신 이론

UART(범용 비동기화 송수신기: Universal asynchronous receiver/transmitter)는 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종이다.

출처 - 위키백과

 

UART이론을 정리하고 싶어서 위키백과를 쳐봤더니 쉽게 이해할 수 없었다. 하나하나 이해해보자.

 

동기 통신과 비동기 통신

먼저 비동기란 무엇일까? 비동기화란 별도의 클럭을 사용하지 않고 데이터를 사용한다는 뜻이다. 그렇기 때문에 동일한 데이터 전송 속도(Baud rate)로 맞추어야 통신을 할 수 있다. 뿐만 아니라 Start bit와 Stop bit를 통해 데이터의 시작과 끝을 알 수 있게해야한다. 오류를 검사하기 위해 추가로 패리티 비트를 설정할 수도 있다. 하지만 비동기 시리얼 통신은 클럭이 아닌 속도에 맞춰 통신하기 때문에 2진 데이터 신호가 사라지거나 잘못된 신호가 전송될 수 있다.

 

그럼 동기란 뭘까? 동기는 반대로 데이터 동기화하기 위해 별도의 클럭 신호를 전송한다.

비동기 모드와 달리 start bit와 stop bit를 사용하지 않기 때문에 전송효율을 높여 빠르게 전송할 수 있고 클럭을 사용하므로 오류가 적지만, 클럭 핀을 추가로 사용해야하는 단점이있다. 클럭을 요구하는 동기 모드의 시리얼 통신을 USART(Universal Synchronus Receiver Transmit)라고 한다.

 

동기 통신과 비동기 통신

직렬(Serial) 통신과 병렬(Parallel) 통신 

직렬 방식으로 전환한다는건 무슨 말일까? 예를 들어 A를 아스키 코드로 전환한다고 생각해보자. A는 아스키코드로 65이므로 2진수로 변환하면 0100 0001이다. 그러므로 1을 보내고 0을 보내고 이런식으로 데이터를 일렬로 바꿔서(직렬화) 한 번에 한 비트씩 전송하는 것이 직렬 통신이다.

 

반대로 병렬 통신은 다수의 비트를 한 번에 전송한다. 빠르게 데이터를 전송할 수 있지만 선을 많이 사용한다는 단점이 있다. 통신 거리가 길어질 경우 선들을 모두 연장해야하므로 비용도 매우 커진다.

병렬 통신과 직렬 통신

하드웨어

Tx(전송), Rx(수신)의 신호선, GND를 연결해서 사용할 수 있다. Tx와 Rx는 서로 교차해서 연결해야한다.

전송과 수신핀이 따로 있으므로 전이중방식이며 MCU, 센서, PC 등이 서로 1:1 통신만 할 수 있다. 

 

 

 

UART 통신 정리

1. 비동기 통신이므로 Baud rate를 맞추어야하고 start bit와 stop bit를 필요로 한다.

   클럭 핀이 필요 없다는 장점이 있지만 전송 과정에서 데이터 손실이 일어날 수 있고 동기 통신에 비해 속도가 느리고 효율이 떨어진다(start, stop bit 때문에).

 

2. 직렬(Serial) 통신이므로 하나의 선만으로 단방향 통신을 할 수 있고 저렴하다는 장점이있다. 하지만 병렬 통신에 비해 속도가 느리다.

 

3. Rx, Tx, GND 선을 사용하며 동시에 송수신할 수 있고 1:1 통신만 가능하다.

'MCU 제어 > 개념' 카테고리의 다른 글

DMA 방식  (0) 2020.02.15
인터럽트(Interrupt) 방식  (0) 2020.02.10
폴링(Polling) 방식  (0) 2020.02.07