본문 바로가기

MCU,펌웨어

(STM32) UART 통신이란

UART 통신이란 Universal asynchronous receiver/transmitter의 약자

universal은 범용적이란 얘기고

asynchronous(비동기)가 잘 이해가 안되는데 동기와 비동기의 차이를 알아보자

 

먼저 동기란 의미는 동시에 똑같이 진행된다는 뜻으로 요청과 결과가 동시에 일어나야 한다. 요청을 하면 시간이 오래 걸리든 적게 걸리든 결과가 나와야 한다는 것. 예를 들면 은행이 있다. 은행에서 돈을 송금하고 받는 과정은 동시에 이뤄져야 한다. 그래서 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무 것도 못하기 때문에 효율성이 떨어진다.

 

비동기는 동시에 일어나지 않는다는 뜻이다. 요청과 결과의 타이밍이 같지 않아도 된다. 대표적인 예로는 시험과 채점이 있다. 학생들은 시험을 보는 과정을 거치고 선생님은 그 결과를 채점하는 과정이 있지만 이 두 과정이 겹치지 않아도 된다.

 

UART 통신은 이렇게 비동기식으로 입력과 출력을 하는 통신이다.

 

비동기식의 의미를 알아봤고 uart 통신이 어떤 과정으로 입출력을 하는지 알아보자

 

UART 통신 동작 구조

1) ULCON Register에서 Word length, Parity mode, Stop bit를 셋팅한다

2) Target에서 1Byte의 문자 "A"를 보내기 위해 UTRSTAT1 Register가 Transmit Shifter(TS)와 Transmit Holding Register(THR)를 체크한다

3) 두 버퍼가 비었으면 1Byte를 THR에 넣고 TS로 복사가 된다

4) TS에서 한 bit씩 잘라 데이터를 보낸다 이때 데이터의 시작을 알리는 Start bit와 끝을 알리는 Stop bit가 추가된다

5) PC쪽 Rx는 Start / Stop bit를 제거하고 데이터가 1Byte(= 8bit)가 될때까지 기다렸다 전송한다

 

THR이 있는 이유는 컴퓨터가 병렬동기신호로 Byte 단위를 사용하기 때문이다

 

 

 

 

 

[출처] UART 및 시리얼 통신의 동작원리 및 구조/ 인소팩/ https://blog.daum.net/insopack77/26

 

UART 및 시리얼 통신의 동작원리 및 구조

※ 위의 그림은 S3C2443의 UART와 Serial 통신 동작 과정이다. 우선 ULCON Register에서 데이터의 길이와 Parity Mode 설정, Stop Bit를 몇 bit로 할 것인지 셋팅하고 Tartget에서 문자 "A"를 보내기 위해 UTRSTA..

blog.daum.net

 

동기 ( synchronous ) vs 비동기 ( asynchronous )/ hyeonyohwan/

https://velog.io/@hyeonyohwan/%EB%8F%99%EA%B8%B0-synchronous-vs-%EB%B9%84%EB%8F%99%EA%B8%B0-asynchronous

 

동기 ( synchronous ) vs 비동기 ( asynchronous )

단순히 동기라는 단어를 들으면 대부분의 분들이 어떤 작업이 끝나지 않으면 그 뒤의 작업이 진행이 안 된다는 느낌으로만 알고 있지만 동기는 동시에 똑같이 진행된다는 뜻을 가지고 있다. 예

velog.io

 

 

 

 

(틀린 사항이 있다면 지적부탁드립니다)