UART(Universal Asynchronous Receiver and Transmitter)通用異步收發器(異步串行通信口),是一種通用的數據通信協議,它包括了RS232、RS499、RS423、RS422和RS485等接口標准規范和總線標准規范,即UART是異步串行通信口的總稱。
UART之間以全雙工方式傳輸數據,最精確的連線方法只有3根電線:TxD用於發送數據,RxD用於接收數據,Gnd用於給雙發提供參考電平。
UART使用標准的TTL/CMOS邏輯電平(0~5v、0~3.3v、0~2.5v或0~1.8v)來表示數據,高電平表示1,低電平表示0。為了增強數據的抗干擾能力、提高傳輸長度,通常將TTL/CMOD邏輯電平轉換為RS-232邏輯電平,3~12v表示0,-3~-12v表示1
TxD、RxD數據線以位為最小單位傳輸數據,而幀由具有完整意義的、不可分割的若干位組成,它包含開始位、數據位、校驗位(需要的話)和停止位。發送數據之前,UART之間要約定好數據的傳輸速率(即每位所占據的時間,其倒數稱為波特率)、數據的傳輸格式(即有多少個數據位、是否使用校驗位、是奇校驗還是偶校驗、有多少個停止位)。
數據傳輸流程如下:
(1)平時數據線處於空閑狀態(1狀態)
(2)當要發送數據時,UART改變TxD數據線的狀態(變為0狀態)並維持1位的時間,這樣接收方檢測到開始位后,在等待1.5位的時間就開始一位一位地檢測數據線的狀態得到所傳輸的數據。
(3)UART一幀中可以有5、6、7或8位的數據,發送方一位一位地改變數據線的狀態將他們發送出去,首先發送最低位。
(4)如果使用校驗功能,UART在發送完數據后,還要發送1位校驗位。有兩種校驗方法:奇校驗、偶校驗——數據位連同校驗位中,1的數據等於奇數或偶數。
(5)最后,發送停止位,數據線恢復到空閑狀態(1狀態)。停止位的長度有3種:1位、1.5位、2位。
下圖演示了UART使用7個數據位、偶校驗、2個停止位的格式傳輸字符‘A’(二進制值為0b1000001)時,TTL/COM邏輯電平和RS-232邏輯電平對應的波形
TTL/COM邏輯電平:
RS-232邏輯電平: