본문 바로가기
Communication Interface&Protocol/시리얼 통신

시리얼 통신 : UART

by 누워있는말티즈 2022. 11. 11.

Universal Asynchronous Reciever-Transmitter

UART는 총 4개의 연결선(VCC, GND, RX, TX)으로 구성된 full-duplex communication의 종류이다. 가장 일반적인 데이터 구조는 10bit로 8bit 데이터와 start bit(0), stop bit(1)로 구성된다. 이 경우 parity bit를 추가하지 않는 8N1(8-bit, no parity bit, 1 stop bit)의 구조를 가진다.

통신을 위해 reciever와 transmittor는 아래 세 가지 사항을 동기화하여야 한다.

  • transmission speed(baud rate) : 9600, 115200 등...
  • data length : 몇 비트의 데이터를 보내/받는가
  • START(0) and STOP(1) bits

UART는 Clock을 사용하지 않는 비동기(Asynchronous) 통신 인터페이스이므로 START와 STOP bit를 사용해서 데이터의 시작과 끝을 판단하고 Baud rate 동기화를 통해 데이터를 읽어들인다.

UART에서 나오는 신호는 TTL(Transistor-Transistor Logic) 신호 레벨을 갖는다. TTL은 Low와 High신호가 있는데, Low는 0V로 표현되고 High는 3.3V나 5V로 표현된다(MCU에 따라 다르다). 그리고 UART에서 시작 비트는 0이므로 Low신호가 되고 정지 비트는 1이므로 High신호가 된다. 하지만 TTL은 전압 레벨이 낮아(3.3V) 노이즈에 약하고 통신거리에 제약이 있다. 따라서 다른 인터페이스 IC를 사용해서 노이즈와 통신거리 문제를 보완한다. 이때 사용하는 인터페이스로 RS-232, RS-422, RS-485가 있다. 해당 인터페이스는 5V 기준이다!

UART 통신은 MCU에서 가장 범용적으로 사용되는 시리얼 통신 방식으로 Arduino*, Raspberry Pi, ESP32 등 오픈소스로 풀린 대부분의 MCU에 적용되어 있다. MCU에서 칭하는 UART 포트는 따로 언급이 없으면 TTL인 경우가 100에 98이다. 따라서 사용하는 센서가 RS485 등을 지원한다면 컨버터 모듈을 사용하여 센서 제조사가 제공하는 통신 프로토콜을 따라 명령을 전달해야 한다. 데이터시트를 통해 통신 프로토콜을 응용하는 예시는 다른 글로 정리하도록 한다.

 

 💡 Arduino UNO의 USB-B, Arduino NANO의 USB-miniB는 UART 포트로 IDE에 연동 시 UART 통신을 사용한다. 그래서 업로드 할 때 RX LED가 반짝인다!

 


UART 통신 Interface

*UART는 논리적인 프로토콜이며 아래 소개되는 규약은 물리적인 연결 방법을 정의한다.

RS232

1960년 EIA에서 규정한 시리얼 통신의 추천 규격(Recommended Standard : RS)으로 Full-duplex 통신 규격이다. 두 개 이상의 기기에 다중 연결은 불가능하고 주로 25핀의 DB-25 혹은 9핀의 DB-9 커넥터가 사용되지만 최근에는 USB converter를 통해 USB 인터페이스 사용이 더 일반적이다. 1:1 연결만을 지원하고 최대 통신 거리가 15m라는 한계를 가진다.

RS422

RS-232와 마찬가지로 EIA에서 1976년 정의한 통신 규격으로 각 신호당 2개의 전선을 사용하여 RS-232의 느린 속도와 짧은 전송 거리의 단점을 극복했다. RS-422에는 하나의 Master에 10개의 Receiver까지 연결이 가능한 Multi-Drop 모드의 적용이 가능하다. 하지만 케이블 길이가 길어짐에 따라 신호 품질이 떨어져 전송 속도가 감소한다.

RS485

RS-485는 RS-232와 RS-422의 단점을 보완하고 업그레이드한 통신 규약으로 RS-422에서는 하나의 마스터와 그에 연결된 디바이스 간의 통신만 가능한 multi-drop 방식인 반면, RS-485는 도일 회선에 연결된 모든 장치들이 같은 라인에서 통신이 가능한 multipoint 방식을 구현한다. 즉, RS-485 버스에서는 슬레이브가 마스터를 거치지 않고 다른 슬레이브와 통신이 가능하다. 제어 칩의 성능에 따라 32~256개의 디바이스 네트워크를 구성할 수 있다.

반응형

'Communication Interface&Protocol > 시리얼 통신' 카테고리의 다른 글

시리얼 통신 : MODBUS  (0) 2022.09.03
시리얼 통신 : UART  (0) 2022.09.02
시리얼 통신 : I2C(IIC)  (0) 2022.09.02
시리얼 통신 (개요)  (0) 2022.08.31

댓글