{{위키데이터 속성 추적}}
[[파일:Hermstedt Leonardo SP-PCI - Motorola MC68681FN-7993.jpg|섬네일]]
'''UART'''(범용 비동기화 송수신기: Universal asynchronous receiver/transmitter)는 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 [[컴퓨터 하드웨어]]의 일종이다. UART는 일반적으로 [[미국 전자 산업 협회|EIA]] [[RS-232]], [[RS-422]], [[RS-485]]와 같은 통신 표준과 함께 사용한다. UART의 U는 범용을 가리키는데 이는 자료 형태나 전송 속도를 직접 구성할 수 있고 실제 전기 신호 수준과 방식(이를테면 [[차분 신호]])이 일반적으로 UART 바깥의 특정한 드라이버 회로를 통해 관리를 받는다는 뜻이다.

통신 데이터는 메모리 또는 레지스터에 들어 있어 이것을 차례대로 읽어 직렬화 하여 통신한다. 최대 8비트가 기본  단위이다.

UART는 일반적으로 컴퓨터나 주변 기기의 일종으로 병렬 데이터를 직렬화 하여 통신하는 개별 [[집적 회로]]이다. 비동기 통신이므로 동기 신호가 전달되지 않는다. 따라서 수신 쪽에서 동기신호를 찾아내어 데이터의 시작과 끝을 시간적으로 알아 처리할 수 있도록 약속되어 있다. 디지털 회로는 자체의 [[클럭 신호]]를 추가로 사용하여 정해진 속도로 수신 데이터로부터 비트 구간을 구분하고 그 비트의 논리 상태를 결정하여 데이터 통신을 하는 USRT(범용 동기화 송수신기: Universal synchronous receiver/transmitter)도 사용한다.

UART는 보통 마이크로컨트롤러에도 포함되어 있다. 듀얼 UART, 곧 '''DUART'''는 두 개의 UART를 하나의 칩에 합친 것이다. 수많은 현대의 집적 회로(IC)는 동기화 통신인  USRT도 함께 지원한다. 이러한 장치들은 'USARTs'(범용 동기화/비동기화 송수신기: universal synchronous/asynchronous receiver/transmitter) 또는 'USART/UART'로도 부른다.

== 데이터 송 수신 형태 ==

{| class="wikitable"
|+ style="font-weight:normal" | 
|-
! 비트 수
| style="width:6em" | 1
| style="width:6em" | 2
| style="width:6em" | 3
| style="width:6em" | 4
| style="width:6em" | 5
| style="width:6em" | 6
| style="width:6em" | 7
| style="width:6em" | 8
| style="width:6em" | 9
| style="width:6em" | 10
| style="width:6em" | 11
|-
|
! 시작 비트<br />(Start bit)
! colspan=8 | 5&ndash;8 데이터 비트
! 패리티 비트<br />(parity bit)
! colspan=2 | 종료 비트<br />(Stop bit(s))
|-
|
| style="width:6em" | Start
| style="width:6em" | Data 0
| style="width:6em" | Data 1
| style="width:6em" | Data 2
| style="width:6em" | Data 3
| style="width:6em" | Data 4
| style="width:6em" | Data 5
| style="width:6em" | Data 6
| style="width:6em"| Data 7
| style="width:6em"| Parity
| style="width:6em" colspan=2 | Stop
|}

가장 일반적으로 각 데이터 비트의 시간에 대해 16/64 배 빠른 [[클럭 신호]]를 이용하여 시작 비트로부터 세어 각 비트의 경계를 찾아낸다. 이 클럭 신호는 자체적인 내부 클럭 디지털 회로에 의해 발생한다. 보드 설정에 따라 주 클럭으로부터 타이머등을 써서 설정한 속도의 클럭 신호를 만든다. 이것은 프로그래밍에 의한 레지스터 설정에 따라 클럭 신호의 주파수가 바뀐다. 통신 양쪽에서 설정을 미리 약속하고 클럭 신호 발생부의 레지스터를 같은 속도로 설정해야 통신이 원활하게 이루어진다.

* 시작 비트 : 통신의 시작을 의미하며 한 비트 시간 길이 만큼 유지한다. 지금부터 정해진 약속에 따라 통신을 시작한다.
* 데이터 비트 : 5~8비트의 데이터 전송을 한다. 몇 비트를 사용할 것인지는 해당 레지스터 설정에 따라 결정된다.
* 패리티 비트 : 오류 검증을 하기 위한 패리티 값을 생성하여 송신하고 수신쪽에 오류 판단한다. 사용안함, 짝수, 홀수 패리티 등의 세가지 옵션으로 해당 레지스터 설정에 따라 선택할 수 있다. '사용안함'을 선택하면 이 비트가 제거된다.
* 끝 비트 : 통신 종료를 알린다. 세가지의 정해진 비트 만큼 유지해야 한다. 1, 1.5, 2비트로 해당 레지스터 설정에 따라 결정된다.

== UART 모델 ==
{| class="wikitable"
|-
! 모델 !! 설명
|-
| EXAR XR21V1410
|rowspan=2|
|-
|-
| 인터실 6402
|-
| 자일로그 Z8440 || 2000 kbit/초. Async, <!--IBM-->[[이진 동기화 통신|Bisync]], [[SDLC]], [[HDLC]], <!--CCITT-->[[X.25]]. [[순환 중복 검사|CRC]]. 4바이트 RX 버퍼. 2바이트 TX 버퍼. [[직접 메모리 접근|DMA]].<ref name="zilog_com-ps0183">{{웹 인용|제목=Zilog Product specification Z8440/1/2/4, Z84C40/1/2/3/4. Serial input/output controller|url=http://www.zilog.com/docs/z80/ps0183.pdf}} 090529 zilog.com</ref>
|-
| [[8250 UART|8250]]
|rowspan=5| 1바이트 버퍼와 더불어 사용하지 않음
|-
| 모토로라 6850
|-
| [[MOS 테크놀로지 6522|6522]]
|-
| [[MOS 테크놀로지 6551|6551]]
|-
| 록웰 65C52
|-
| 16450
|rowspan=2|
|-
| [[16550 UART|16550]]
|-
| [[16550 UART|16550A]]
|rowspan=2| 16바이트 버퍼, TL=1,4,8,14; 115.2 kbit/초 표준, 다수가 230.4 및 460.8 kbit/초 지원. DMA 방식.<ref name="cs_utk_edu-mswin_serial_faq">{{웹 인용|title=FAQ: The 16550A UART & TurboCom drivers 1994|url=http://www.cs.utk.edu/~shuford/terminal/mswin_serial_faq.txt|확인날짜=2010년 12월 15일|보존url=https://web.archive.org/web/20080517022038/http://www.cs.utk.edu/~shuford/terminal/mswin_serial_faq.txt|보존날짜=2008년 5월 17일|url-status=dead}} 090529 cs.utk.edu</ref><!-- The 16550 also has DMA capability, but it is not clear that any PC drivers ever use this.  For more technical info, see National Semiconductor Application Note AN-491. -->
|-
| 16C552
|-
| 16650 || 32바이트 버퍼. 460.8 kbit/초
|-
| 16750 || 64바이트 버퍼 (송신), 56바이트 (수신). 921.6 kbit/초
|-
| 16850
|rowspan=2| 128바이트 버퍼. 460.8 kbit/초, 즉 1500 kbit/초
|-
| 16C850
|-
| 16950
|
|-
| {{nowrap|Hayes ESP}} || 1 kByte 버퍼
|}

== 같이 보기 ==
* [[직렬 통신]]
* [[I2C]]
* [[직렬 주변기기 인터페이스 버스|SPI 버스]]

== 각주 ==
<references />

[[분류:데이터 전송]]
[[분류:마이크로컨트롤러]]
[[분류:직렬 버스]]
[[분류:아두이노]]