본문 바로가기
Embedded System/통신

[통신] UART(Universal Asynchronous Receiver Transmitter)

by MachineJW 2023. 3. 15.

UART는 시리얼통신에 대해서 이야기 했을때, 언급한바 있다.

https://machinejw.tistory.com/15

 

시리얼 통신 (Serial Communication)

시리얼 통신이란? 시리얼 통신은 직렬 연결이라는 뜻을 가지고 있으며, 직렬 연결은 한번 에 하나의 비트단위로 1(High)과 0(Low)의 신호로 데이터를 전송하는 통신 방법을 말한다. 이러한 시리얼

machinejw.tistory.com

UART 통신은 역사가 오래되고 지금까지도 임베디드 영역에서 각종 MCU, IC의 통신을 담당하고 있다.

임베디드 영역 뿐만 아니라 다양한 주변장치들도 이 UART 통신방법을 사용하고 있다.

1. UART 통신

초반에 시리얼통신을 공부하고 UART를 공부하면서, 굉장히 헷갈리는 부분이 많았다.

특히 RS485, RS232라는 용어와 TTL레벨의 용어들이 겹치면서 더욱 혼란스러워졌다.'

그래서 오랜 공부끝에 나는 UART를 이렇게 정의하려고 한다.

"비동기식 시리얼통신을 통틀어 부르는 통신방식"

위 에서 먼저 공부 했듯이 UART 통신은 직렬통신이며 비동기식이기 때문에 스타트비트, 통신속도,패러티비트,데이터비트를 정해주어야 한다. 이미 시리얼 통신에서 공부했기 때문에 자세한 설명은 생략하겠다.

(1) RS232, RS485, RS422도 UART 통신이다.

UART 통신의 시초는 RS 삼총사이다. RS 통신들은 EIA 국제기구가 정한 시리얼 통신을위한 "물리적인 통신규격" 일 뿐이며 RS 통신도 UART통신을 기반으로 한다.

https://machinejw.tistory.com/20

 

RS485, RS232 통신

비동기식 시리얼 통신(UART통신) 방식 중 가장 중요한 물리적인 규격인 RS485,RS232 에 대하여 공부하겠다. 본문에 앞써, 시리얼 통신에 대한 글을 보지 않았다면, 보고 오는 것을 추천하겠다. https://m

machinejw.tistory.com

즉 정리하자면 UART 통신은 비동기식 시리얼통신 방식을 통틀어 부르는 말이고 RS232,485,422은 UART통신을 하기 위한 물리적인 규격이다.

(2) TTL 레벨의 UART 통신

많은 UART 통신을 접하다 보면 TTL 레벨이라는 용어를 접할 수 있을 것이다.

TTL 레벨은 단순하다. 통신할때의 0과 1을 나타내는 전압이 0~5V인 레벨을 의미한다.

TTL 레벨은 0~5V 범위 내에서 0과 1을 구분한다. (0~2.5V는 0, 2.5V~5V는 1)

https://support.unitronics.com/index.php?/selfhelp/view-article/connect-devices-with-ttl-interface-levels-to-rs232-interface

마이크로컨트롤러(MCU)는 UART 통신을 사용할 때 TTL 레벨을 사용한다.

MCU와 MCU(또는 디바이스, IC)가 통신할 경우 TTL레벨을 사용하기 때문에 문제가 되지않는다.

그러나 문제는 마이크로컨트롤러(MCU)가 RS232,RS485,RS422 UART 통신을 사용할 때에 있다.

(3) 서로 다른 전압레벨

https://support.unitronics.com/index.php?/selfhelp/view-article/connect-devices-with-ttl-interface-levels-to-rs232-interface

RS통신의 UART 신호 전압레벨은 TTL레벨(0~5V)가 아니다. +15V~-15V(역전압)의 신호레벨을 사용하며

이 범위내에서 0과 1을 구분한다. 당연하게도 RS232통신을 MCU에 바로 사용하게 되면 망가지는 건 둘째치고, 레벨이 달라서 통신할 수 없을 것이다.

그렇기 때문에 전압레벨을 변환하는 Driver가 중간에 사용된다.

2. USB to UART(번외)

USB도 시리얼통신이지만 UART와는 다른 방식을 사용한다.

우리가 개발보드를 통해 PC->MCU에 펌웨어를 업로드 할때 PC는 USB 통신을 하기 때문에, MCU에서 사용하는 통신방식인 UART로 바꾸어주어야한다. (USB는 통신방식이 UART와 다름)

보통 CP210X 시리즈 IC를 많이 사용하여 PC와 MCU의 프로그램 업로드를 가능하도록 한다.