
UART(Universal Asynchronous Receiver/Transmitter, 범용 비동기 송수신기(비동기식 통신 컨트롤러))의 약자이며 두 장치 사이에서 병렬 데이터의 형태를 직렬 데이터로 전환하여 교환할 때 적용되는 프로토콜(규칙 세트)을 정의
MCU에서는 흔히 직렬(Serial) 통신 방식이며, 그 중 많이 쓰이는 방법 중 하나가 UART
MCU란?
MCU는Micro Controller Unit의 약자이며 일반적으로 마이크로컨트롤러라고 불림
마이크로 프로세서와 메모리, 프로그램 가능한 입출력 모듈을 하나의 칩으로 만들고 프로그래밍을 통해 다양한 '제어'나 '연산' 작업이 가능

UART는 비동기 통신이므로, 동기신호가 전달되지않는다. 따라서 수신 쪽에서 동기신호를 찾아내어 데이터의 시작과 끝을 시간적으로 알아 처리할 수 있도록 보내는 쪽(TX)와 받는 쪽(RX)에서 약속을 정해야하는데, 이를 프로토콜(Protocol)이라고 함
- 일반적으로 EIA RS-232, RS-422, RS-485와 같은 통신 표준과 함께 사용
- UART 에서 나오는 신호는 보통 TTL 신호레벨을 갖기 때문에 노이즈에 약하고 통신거리에 제약이 있음
이러한 TTL 신호를 입력 받아 노이즈에 강하고 멀리 갈 수 있게 해주는 인터페이스 IC 를 LINE DRIVER/RECEIVER 라 부르며 이중 대표적인 것이 RS-422 및 RS-485
RS-422/RS-485는 장거리 통신에 주로 사용
전이중: 양방향 통신으로 송신 수신 자유롭게 가능반이중: 양방향 통신이긴 하지만 송신 중에는 수신 불가, 수신 중에는 송신 불가(무전기같은 느낌)Single ended: 데이터가 전달되는 1개의 도선과 접지 역할을 하는 1개의 도선으로 이루어진 케이블Differential: 차동신호 노이즈가 신호 케이블 양단에 동시에 유입되는 특성, 원래 신호를 제외하고 양단에 동일하게 들어온 노이즈를 찾아내어 능동적으로 제어
RS-232는 EIA(Electronic Industries Association)에 의해 규정되었으며 그 내용은 데이터단말기(DTE: Data Terminal Equipment)와 데이터통신기(DCE: Data Communication Equipment)사이의 인터페이스에 대한 전기적인 인수, 컨트롤 핸드쉐이킹, 전송속도, 신호 대기시간, 임피던스 인수 등을 정의하였으나 전송되는 데이터의 포맷과 내용은 지정하지 않으며 DTE간의 인터페이스에 대한 내용도 포함하지 않음
RS-422는 4개의 선으로 구성되어 전이중 통신 방식으로 데이터 송수신
EIA 에 의해서 전기적인 사양이 규정되어 있으며 RS-422 에서는 Point To Point 모드와 Multi-Drop 모드 두 가지
RS 485는 RS-232, RS-422의 확장 버전으로, 홈 네트워크를 지원하는 일종의 직렬 통신 프로토콜 표준
TXD(Transmit Data): 비동기식 직렬통신 장치가 외부 장치로 정보를 보낼 때 직렬통신 데이터가 나오는 신호선입니다.
RXD(Receive Data): 외부 장치에서 들어오는 직렬통신 데이터를 입력 받는 신호선입니다.
RTS(Ready To Send): 컴퓨터와 같은 DTE장치가 모뎀 또는 프린터와 같은 DCE장치에게 데이터를 받을 준비가 됐음을 나타내는 신호선입니다.
CTS(Clear To Send): 모뎀 또는 프린터와 같은 DCE장치가 컴퓨터와 같은 DTE장치에게 데이터를 받을 준비가 됐음을 나타내는 신호선입니다.
DTR(Data Terminal Ready): 컴퓨터 또는 터미널이 모뎀에게 자신이 송수신 가능한 상태임을 알리는 신호선이며 일반적으로 컴퓨터 등이 전원 인가 후 통신 포트를 초기화한 후 이 신호를 출력시킵니다.
DSR(Data Set Ready): 모뎀이 컴퓨터 또는 터미널에게 자신이 송수신 가능한 상태임을 알려주는 신호선이며 일반적으로 모뎀에 전원 인가 후 모뎀이 자신의 상태를 파악한 후 이상이 없을 때 이 신호를 출력시킵니다.
DCD(Data Carrier Detect): 모뎀이 상대편 모뎀과 전화선 등을 통해서 접속이 완료되었을 때 상대편 모뎀이 캐리어신호를 보내오며 이 신호를 검출하였음을 컴퓨터 또는 터미널에 알려주는 신호선입니다.
RI(Ring Indicator): 상대편 모뎀이 통신을 하기위해서 먼저 전화를 걸어오면 전화 벨이 울리게 됩니다. 이때 이 신호를 모뎀이 인식하여 컴퓨터 또는 터미널에 알려주는 신호선이며 일반적으로 컴퓨터가 이 신호를 받게 되면 전화벨 신호에 응답하는 프로그램을 인터럽터 등을 통해서 호출하게 됩니다.

Baud Rate는 초당 전송되는 신호의 전송 속도를 나타내는 측정 단위
== 초당 전송되는전기 신호의 변화 횟수를 의미BPS는 bits per second의 약어로, 초당 전송되는 비트 수를 나타내는 측정 단위
== 초당 전송되는디지털 데이터의 비트 수를 의미- 일부의 경우에는 Baud와 BPS는 같은 의미
- 1바이트를 8개의 비트로 분리해서 한번에 1비트씩 통신선로로 전송
- 1바이트의 범위를 식별하기 위해 사용하는것이 start bit&stop bit
start bit: 시작 비트, 데이터 전송 시 맨 처음에 보내는 비트stop bit: 데이터를 송출하고 나서 마지막으로 보내는 값, 데이터 패킷의 끝을 알려줌- start bit를 송신하면 송신 측(계측 장치)는 계속 데이터 비트 송신(데이터 비트는 일반적으로 7~8bit 사용)
- 수신 측(PC)와 송신 측은 데이터 비트 수와 보오레이트 값을 일치하게 설정해야함
- 데이터를 모두 송출하면 마지막으로 stop bit를 송출, stop bit값은 1 또는 기호
- DataFrame : 실제 데이터, 패리티 비트를 사용할 경우 데이터의 크기는 5~8bit, 패리티 비트를 사용하지 않을 경우 최대 9bit까지 가능
- 데이터 구조를 확인하기 위해 사용, 데이터 송신 중에 데이터 누락이 생기는지 확인하기 위함
짝수 패리티(Even parity),홀수 패리티(Odd parity),마크 패리티(Mark parity),스페이스 패리티(Space parity),패리티 없음(None at all)이 있음

실제 전송하고자 하는 8bit data에 추가적으로 붙게되는 패리티 비트를 짝수 패리티로 설정할지 홀수 패리티로 설정할지에 따라서 붙게되는 패리티 비트값이 달라짐
여기서 주의할 점은 짝수 패리티라고 0으로 값을 고정하거나 홀수 패리티라고 1로 값을 고정하는 것이 아님
짝수 패리티(Even Parity)
실제 송신하고자 하는 데이터의 각 비트의 값 중에서 1의 개수가 짝수가 되도록 패리티 비트를 정하는 것이다. 예를들어 데이터비트에서 1의 개수가 홀수이면 패리티 비트를 1로 정한다. 위의 그림에서는 데이터의 각 비트의 값 중 1의 개수가 이미 짝수이므로 짝수 패리티 비트의 값이 0으로 설정되어있음
홀수 패리티(Odd Parity)
실제 송신하고자 하는 데이터의 각 비트의 값 중에서 1의 개수가 홀수가 되도록 패리티 비트를 정하는 것이다. 위의 그림에서는 데이터의 각 비트의 값 중 1의 개수가 짝수이므로 이를 홀수로 맞추기 위해서 홀수 패리티 값이 1로 설정되어있음
RS-232는 케이블 길이 약 150cm- 실드가 불안한 케이블의 경우, 외부 환경이 크게 영향을 주며 전기적인 노이즈가 발생하기 쉬운 환경에서는 짧은 케이블을 사용해도 노이즈의 영향을 받게 됨
DTE는 데이터 단말장치(Data Terminal Equipment)의 약어이고,DCE는 데이터 통신장치(Data Communications Equipment)의 약어- 보통 PC는
DTE장치, 다른 디바이스는DCE장치DCE와DTE장치RS-232스탠더드에서는DTE장치는 25 핀의 male 커넥터를 사용하고,DCE장치는 25 핀의 female 커넥터를 사용,DTE장치를DCE장치에 접속하는 경우에는 스트레이트 케이블을 이용
동기(Synchronous) 통신
- 동기신호 clock 사용
- 2 개의 디바이스 사이에서 동기를 취하고 그 타이밍에 따라 데이터를 송수신
- 데이터의 교환이 없는 사이도 제어용의 신호가 흐르고 있으므로 상대와의 동기를 유지하는 것이 가능
- 큰 크기의 데이터 프레임을 고속 전송할 때 사용
비동기(Asynchronous)통신
- clock을 사용하지않음, 동기화 통신보다 전송 속도가 느림
- 실 데이터를 송신한 때는 그것을 수신하고 데이터가 없는 때에는 대기 상태를 나타내는 신호를 교환
- 이처럼 통신이 확립되면 실 데이터를 송수신한 것에 데이터의 시작과 종료를 나타내는 신호가 존재하지 않기 때문에 데이터 전송 속도 빨라짐
- PC의 시리얼 포트는 비동기장치이므로
비동기 시리얼 통신만 지원





- 두개의 와이어만 사용
- 동기화 클럭 신호가 필요하지 않음(비동기적이니까)
- 오류를 검사하기 위한 패러티 비트가 존재(데이터의 끝과 시작을 알려줌)
- 데이터 패킷의 구조는 양쪽이 모두 설정되어 있으면 변경할 수 있음
- 문서화가 잘 되어있고 이미 널리 사용되고 있음
- 데이터 프레임 크기가 최대 9비트로 제한
- 하나의 마스터, 하나의 슬레이브 구조로 동작
- 송신 UART와 수신 UART 장치의 Baud Rate의 허용 오차는 10% 이내